일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Kafka
- kubectl
- Vision
- helm
- ip
- zookeeper
- aws s3
- Spring
- kubernetes
- Packet
- AWS
- grafana
- JavaScript
- Trino
- EC2
- java
- Python
- tcp
- OS
- Network
- CSV
- airflow
- MAC address
- CVAT
- PostgreSQL
- kubeadm
- docker
- jvm
- Operating System
- log
- Today
- Total
JUST WRITE
빠르게 더 빠르게!!! - AWS Placement Group 본문
빠르게 더 빠르게!!!
빅데이터의 시대가 되면서 데이터를 처리해야 될 양이 많아지고 있습니다.
서버에서 감당해야 할 네트워크 트래픽도 높아지고 있습니다.
데이터 전송을 높이기 위해 네트워크 성능을 높이는 방법은 많지 않습니다.
특히나 요즘은 Cloud 환경에서 서버를 구성하는 경우가 많습니다.
그럼 Cloud 환경에서 네트워크 성능을 높이는 방안은 뭐가 있을까요?
AWS Placement Group
여러 가지 Cloud 환경이 있지만 오늘 포스팅에서는 AWS 환경에서 방안입니다.
AWS에서는 Placement Group(배치 그룹)이란 것이 있습니다.
AWS에서 가장 많이 사용하는 서비스인 EC2에 적용되는 설정입니다.
AWS AZ(가용영역)에서 제공해 주는 Cloud Computing Service입니다.
일반적으로 EC2를 생성 요청하면 AZ의 데이터 센터 중에서 무작위 하드웨어 배치될 것입니다.
Placement Group은 여러 EC2를 무작위가 아닌 특별한 룰로 배치하는 설정입니다.
아래 3가지 룰이 있습니다.
- Cluster
- Partition
- Spread
Cluster
Cluster 방식은 AZ안에서 EC2를 가깝게 배치하는 룰입니다.
가깝게 배치해 있다 보니 낮은 지연 시간의 네트워크 성능을 보여줍니다.
Partition
Partition 방식은 논리적인 그룹인 Partition을 구성해서 EC2를 Parition별로 배치하는 룰입니다.
AZ당 최대 7개의 Partition까지 가질 수 있습니다.
대규모 분산 처리에 적합합니다.
Spread
Spread 방식은 다수의 EC2를 다른 하드웨어로 분산 배치하는 룰입니다.
서로 떨어져 있기 때문에 EC2 하나가 문제가 생겨도 다른 거에 영향을 줄 수가 없습니다.
고가용성 환경 구성시 고려할 수 있는 룰입니다.
Cluster로 더 빠르게!
이미 위에서 답을 캐치하신 분도 계시겠지만 Cluster Placement로 네트워크 성능을 높일 수 있습니다.
같은 Cluster Placement에 속한 EC2끼리 네트워크 성능이 높아질 수 있습니다.
Cluster Placement 구성
먼저 AZ에 Cluster Placement 1개 생성하겠습니다.
EC2 Console에서 [네트워크 및 보안]에 배치그룹 메뉴를 확인할 수 있습니다.
배치 전략을 클러스터로 선택하여 생성합니다.
방금 생성한 Cluster Placement Group에 속하는 EC2 2개를 생성합니다.
EC2 생성 시 [고급 세부 정보]에서 배치 그룹을 선택할 수 있습니다.
다만 여기서 Cluster Placement Group을 지원하는 인스턴스 타입이 따로 있습니다.
버스트 가능한 성능 인스턴스와 Mac1 인스턴스를 제외한 현재 세대 인스턴스가 가능합니다.
버스트 가능한 인스턴스?! 버스트에 대해서는 따로 포스팅을 진행하도록 하겠습니다.
버스트 가능한 인스턴스는 T로 시작하는 인스턴스(T2, T3, T3a, T4g)입니다.
Mac1 인스턴스는 mac1, mac2로 시작하는 인스턴스입니다.
위 2가지를 제외한 현재 세대 인스턴스인데 해당 링크에서 확인할 수 있습니다.
이번 포스팅에서는 m5.large로 진행하였습니다.
네트워크 성능 비교
같은 Cluster Placement Group에 속하는 EC2 2개를 생성하였습니다.
그럼 이제 아닌 EC2와 네트워크 성능을 비교해 보겠습니다.
네트워크 성능은 iperf로 비교해 보았습니다.
먼저 각 EC2에 iperf를 설치합니다.
[ec2-user@ip-172-31-4-248 ~]$ sudo yum install iperf3 -y
Last metadata expiration check: 0:19:01 ago on Wed Sep 13 12:25:53 2023.
Dependencies resolved.
===========================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================
Installing:
iperf3 x86_64 3.11-1.amzn2023.0.4 amazonlinux 113 k
Installing dependencies:
lksctp-tools x86_64 1.0.18-9.amzn2023.0.3 amazonlinux 92 k
Transaction Summary
===========================================================================================================================================
Install 2 Packages
Total download size: 205 k
Installed size: 544 k
Downloading Packages:
(1/2): iperf3-3.11-1.amzn2023.0.4.x86_64.rpm 1.5 MB/s | 113 kB 00:00
(2/2): lksctp-tools-1.0.18-9.amzn2023.0.3.x86_64.rpm 1.1 MB/s | 92 kB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------
Total 1.6 MB/s | 205 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : lksctp-tools-1.0.18-9.amzn2023.0.3.x86_64 1/2
Installing : iperf3-3.11-1.amzn2023.0.4.x86_64 2/2
Running scriptlet: iperf3-3.11-1.amzn2023.0.4.x86_64 2/2
Verifying : lksctp-tools-1.0.18-9.amzn2023.0.3.x86_64 1/2
Verifying : iperf3-3.11-1.amzn2023.0.4.x86_64 2/2
Installed:
iperf3-3.11-1.amzn2023.0.4.x86_64 lksctp-tools-1.0.18-9.amzn2023.0.3.x86_64
Complete!
iperf 사용법은 간단합니다.
2개의 서버 중 하나는 받는 쪽인 Server로 실행하고
나머지 하나는 보내는 쪽인 Client로 실행하면 결과를 출력해 줍니다.
iperf Server의 default port는 5001입니다.
먼저 아래는 같은 Cluster Placement Group에 속하는 EC2간 iperf 결과입니다.
# iperf server
[ec2-user@ip-172-31-3-203 ~]$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 172.31.4.248, port 47704
[ 5] local 172.31.3.203 port 5201 connected to 172.31.4.248 port 47716
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 1.11 GBytes 9.54 Gbits/sec
[ 5] 1.00-2.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 2.00-3.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 3.00-4.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 4.00-5.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 5.00-6.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 6.00-7.00 sec 1.11 GBytes 9.53 Gbits/sec
[ 5] 6.00-7.00 sec 1.11 GBytes 9.53 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-7.00 sec 8.07 GBytes 9.90 Gbits/sec receiver
iperf3: the client has terminated
# iperf client
[ec2-user@ip-172-31-4-248 ~]$ iperf3 -c 172.31.3.203
Connecting to host 172.31.3.203, port 5201
[ 5] local 172.31.4.248 port 47716 connected to 172.31.3.203 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.11 GBytes 9.56 Gbits/sec 0 1.70 MBytes
[ 5] 1.00-2.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
[ 5] 2.00-3.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
[ 5] 3.00-4.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
[ 5] 4.00-5.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
[ 5] 5.00-6.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
[ 5] 6.00-7.00 sec 1.11 GBytes 9.53 Gbits/sec 0 1.70 MBytes
^C[ 5] 7.00-7.27 sec 306 MBytes 9.53 Gbits/sec 0 1.70 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-7.27 sec 8.07 GBytes 9.54 Gbits/sec 0 sender
[ 5] 0.00-7.27 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
다음은 같은 Cluster Placemet Group에 속하지 않은 EC2간의 iperf 결과입니다.
# iperf server
[ec2-user@ip-172-31-4-5 ~]$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 172.31.13.194, port 56474
[ 5] local 172.31.4.5 port 5201 connected to 172.31.13.194 port 56480
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 592 MBytes 4.96 Gbits/sec
[ 5] 1.00-2.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 2.00-3.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 3.00-4.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 4.00-5.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 5.00-6.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 6.00-7.00 sec 592 MBytes 4.97 Gbits/sec
[ 5] 6.00-7.00 sec 592 MBytes 4.97 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-7.00 sec 4.59 GBytes 5.63 Gbits/sec receiver
iperf3: the client has terminated
# iperf client
[ec2-user@ip-172-31-13-194 ~]$ iperf3 -c 172.31.4.5
Connecting to host 172.31.4.5, port 5201
[ 5] local 172.31.13.194 port 56480 connected to 172.31.4.5 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 595 MBytes 4.99 Gbits/sec 0 1.41 MBytes
[ 5] 1.00-2.00 sec 592 MBytes 4.97 Gbits/sec 0 1.41 MBytes
[ 5] 2.00-3.00 sec 592 MBytes 4.97 Gbits/sec 0 1.41 MBytes
[ 5] 3.00-4.00 sec 591 MBytes 4.96 Gbits/sec 0 1.41 MBytes
[ 5] 4.00-5.00 sec 592 MBytes 4.97 Gbits/sec 0 1.41 MBytes
[ 5] 5.00-6.00 sec 592 MBytes 4.97 Gbits/sec 0 1.41 MBytes
[ 5] 6.00-7.00 sec 592 MBytes 4.97 Gbits/sec 0 1.41 MBytes
^C[ 5] 7.00-7.93 sec 551 MBytes 4.96 Gbits/sec 0 1.41 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-7.93 sec 4.59 GBytes 4.97 Gbits/sec 0 sender
[ 5] 0.00-7.93 sec 0.00 Bytes 0.00 bits/sec receiver
iperf3: interrupt - the client has terminated
결과를 비교해 보면 아래와 같습니다.
상당한 차이를 보입니다.
같은 Cluster Placemet Group에 속한 EC2끼리 통신 시 네트워크 성능이 좋아지는 걸 확인할 수 있습니다.
Transfer | Bitrate | |
같은 Cluster Placement Group | 1.11 GBytes/sec | 9.53 Gbits/sec |
다른 Cluster Placement Group | 592 MBytes/sec | 4.97 Gbits/sec |
정리
이번 글을 정리하면서 AWS 환경에서 네트워크 성능을 높이는 방안 중 1가지를 정리해 보았습니다.
Cluster Placement Group을 통해 네트워크 성능을 높일 수 있었습니다.
다만, 가장 많이 사용하는 T타입의 인스턴스에서는 해당 방안을 활용할 수 없어 아쉬웠습니다.
다음에는 ENA(Elastic Network Adaptor)를 통해 네트워크 성능을 높이는 방안을 정리해 보겠습니다.
[참고사이트]
'Cloud' 카테고리의 다른 글
[Terraform] AWS EKS 한 번에 올리기(1) - VPC 구성 (0) | 2024.11.03 |
---|---|
Client VPN 구성 - Private Subnet 외부에서 접근 (0) | 2024.02.27 |
credentials 설정 안해도 되네?! - AWS EC2 IAM 연결 (0) | 2023.08.03 |
늘렸는데 늘어나지 않았습니다?! - AWS EBS 용량 늘리기 (0) | 2023.08.01 |
[AWS] 비용 절감을 위한 EC2 Scheduling (0) | 2023.03.17 |