JUST WRITE

빠르게 더 빠르게!!! - AWS Placement Group 본문

Cloud

빠르게 더 빠르게!!! - AWS Placement Group

천재보단범재 2023. 9. 13. 22:12

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를 가깝게 배치하는 룰입니다.

가깝게 배치해 있다 보니 낮은 지연 시간의 네트워크 성능을 보여줍니다.

출처 : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html

Partition

Partition 방식은 논리적인 그룹인 Partition을 구성해서 EC2를 Parition별로 배치하는 룰입니다.

AZ당 최대 7개의 Partition까지 가질 수 있습니다.

대규모 분산 처리에 적합합니다.

출처 : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html

Spread

Spread 방식은 다수의 EC2를 다른 하드웨어로 분산 배치하는 룰입니다.

서로 떨어져 있기 때문에 EC2 하나가 문제가 생겨도 다른 거에 영향을 줄 수가 없습니다.

고가용성 환경 구성시 고려할 수 있는 룰입니다.

출처 : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html

Cluster로 더 빠르게!

이미 위에서 답을 캐치하신 분도 계시겠지만 Cluster Placement로 네트워크 성능을 높일 수 있습니다.

같은 Cluster Placement에 속한 EC2끼리 네트워크 성능이 높아질 수 있습니다.

Cluster Placement 구성

먼저 AZ에 Cluster Placement 1개 생성하겠습니다.

EC2 Console에서 [네트워크 및 보안]에 배치그룹 메뉴를 확인할 수 있습니다.

배치 전략을 클러스터로 선택하여 생성합니다.

Placement Group 생성 - Cluster

방금 생성한 Cluster Placement Group에 속하는 EC2 2개를 생성합니다.

EC2 생성 시 [고급 세부 정보]에서 배치 그룹을 선택할 수 있습니다.

EC2 생성 - 배치그룹 선택

다만 여기서 Cluster Placement Group을 지원하는 인스턴스 타입이 따로 있습니다.

버스트 가능한 성능 인스턴스와 Mac1 인스턴스를 제외한 현재 세대 인스턴스가 가능합니다.

버스트 가능한 인스턴스?! 버스트에 대해서는 따로 포스팅을 진행하도록 하겠습니다.

버스트 가능한 인스턴스는 T로 시작하는 인스턴스(T2, T3, T3a, T4g)입니다.

Mac1 인스턴스는 mac1, mac2로 시작하는 인스턴스입니다.

위 2가지를 제외한 현재 세대 인스턴스인데 해당 링크에서 확인할 수 있습니다.

이번 포스팅에서는 m5.large로 진행하였습니다.

EC2 생성 - 인스턴스 유형

네트워크 성능 비교

같은 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)를 통해 네트워크 성능을 높이는 방안을 정리해 보겠습니다.

[참고사이트]

더보기
728x90
반응형
Comments