์์ฑ์ : ongja.cloudnet@
AWS Global Accelerator ์ฐธ๊ณ ๋งํฌ
Global Accelerator ๊ฐ์
Global Accelertor ์๊ฐ (AWS ํ๊ตญ ๋ธ๋ก๊ทธ)
Global Accelerator Developer Guide (์ค๋ช
์)
Traffic management with AWS Global Accelerator
Global Accelerator ์๊ธ
๐ก AWS ์๋น์ค ๊ด๋ จํด์๋ ํญ์ ์ต์ฐ์ ์ผ๋ก โAWS ์ค๋ช ์โ๋ฅผ ์ฝ์ด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.
ํ๊ธ ๋ฒ์ญ์ด ๋งค๋๋ฝ์ง ๋ชปํ๋ฉด English ๋ก ๋ณ๊ฒฝ ํ ์ฝ์ด๋ณด๊ธธ ๋ฐ๋๋ค.
1. AWS Global Accelerator Theory
1.1 AWS Global Accelerator ๋?
- AWS Global Accelerator๋ ๋ก์ปฌ ๋๋ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ์๋น์ค์ด๋ค.
- AWS Global Accelerator๋ AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ์ฉ์์์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ด์ด์ง ๊ฒฝ๋ก๋ฅผ ์ต์ ํํ์ฌ ํธ๋ํฝ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค.
1.2 AWS Global Accelerator Key Words
๊ณ ์ Anycast IP โ AWS Global Accelerator๋ ํ๋ ์ด์์ AWS ๋ฆฌ์ ์์ ํธ์คํ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๊ณ ์ ์ง์ ์ ์ญํ ์ ํ๋ ์ ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค. ์ด IP ์ฃผ์๋ AWS ์ฃ์ง ๋ก์ผ์ด์ ์์ ํ ๋น๋๋ Anycast์ ๋๋ค. ์ฆ, ์ด IP ์ฃผ์๊ฐ ์ฌ๋ฌ AWS ์ฃ์ง ๋ก์ผ์ด์ ์์ ๋ฐํ๋๋ฏ๋ก ํธ๋ํฝ์ด ์ฌ์ฉ์์๊ฒ ์ต๋ํ ๊ฐ๊น์ด ์์น์์ AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ์ ์ง์ ํ ์ ์๋ค.
AWS์ ๊ธ๋ก๋ฒ ๋คํธ์ํฌ โ AWS Global Accelerator๋ฅผ ํตํด ๋ผ์ฐํ ๋๋ ํธ๋ํฝ์ ๊ณต์ฉ ์ธํฐ๋ท์ด ์๋๋ผ AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ๋ฐ๋ผ ์ด๋ํ๋ค. ํด๋ผ์ด์ธํธ๋ ํด๋ผ์ด์ธํธ ์์น, ์ํ ๊ฒ์ฌ ๊ฒฐ๊ณผ ๋ฐ ๊ตฌ์ฑ๋ ๊ฐ์ค์น์ ๋ฐ๋ผ ์ต์ ์ ๋ฆฌ์ ์ผ๋ก ๋ผ์ฐํ ๋๋ค.
ํด๋ผ์ด์ธํธ ์ํ โ AWS Global Accelerator๋ฅผ ํ์ฉํ๋ฉด ํ์ ์๊ฑด์ผ๋ก ์ํ๋ฅผ ์ ์ฅํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค. ์ํ ์ ์ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ์ฐ๊ฒฐ ํ์ ๋์ผํ EndPoint๋ก ์ฌ์ฉ์๋ฅผ ๋ผ์ฐํ ํ๋ค. AWS Global Accelerator๋ ์ด๋ฅผ ์ํด ํฌํธ์ ํ๋กํ ์ฝ์ ๊ด๊ณ์์ด ํด๋ผ์ด์ธํธ ์์ฒญ์์ Source IP ์ํ ์ ์ง๋ฅผ ์ํ ์๋ณ์๋ก ์ค์ ํ๋ค.
AWS Global Accelerator ๊ตฌ์ฑ
Listener โ ํ๋กํ ์ฝ๊ณผ ํฌํธ๋ฅผ ๊ธฐ๋ฐํ์, AWS Global Accelerator๋ก ์ธ๋ฐ์ด๋ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ๋ Listener๋ฅผ ๊ตฌ์ฑ
EndPoint Group โ ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋๋ AWS ๋ฆฌ์ ์ ์ ์
Traffic Dial โ EndPoint Group์ด ์์ ํ ์์๋ ํธ๋ํฝ์ ๋น์จ์ ์๋ฏธ
EndPoint โ EndPoint Group์ ์ฐ๊ฒฐ๋ EC2-Instance, Elastic IP, Network Load Balancer ๋๋ Application Load Balancer์ด๋ค.
EndPoint Weight โ ๋ค์์ EndPoint๊ฐ ์๋ EndPoint Group์์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ์ฌ ๋ถ๋ฐฐ
1.3 AWS Global Accelerator ์๋ ๋ฐฉ์
๊ทธ๋ฆผ 1-1 AWS Global Accelerator Diagram
- Edge Location์์ ์๋ฆฌ๋ 2๊ฐ์ ๊ณ ์ Anycast IP ์ฃผ์๋ฅผ ํตํด, ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด Edge Location์ผ๋ก ํธ๋ํฝ์ด ์ ์ก๋๋ค.
- AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํตํด AWS Global Accelerator๋ก ์์ฒญ์ด ๋ผ์ฐํ ๋๋ฉด, ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์ํ์ EndPoint Group์ ์ ํํ์ฌ ์๋น์ค ํ๋ค.
๐ก AWS Global Accelerator์ ํต์ฌ์ ๊ณ ์ Anycast IP์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ์ ์ฅ์์ ๊ณ ์ IP ์ฃผ์๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ, AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ๊ฒฝ์ ํ์ฌ ์์ ์ ์ด๊ณ ๋น ๋ฅธ ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ ์ ์ด๋ค.
2. AWS Global Accelerator Lab Preview
2.1 Lab Topology
๊ทธ๋ฆผ 2-1 AWS Global Accelerator Lab Topology
์๋๋, ์ํ์ธ๋ฃจ
Region์ Web ์๋ฒ์ฉ EC2-Instance 2๋์ฉ ๋ฐฐ์น- Global Accelerator์์ HTTP ์๋น์ค์ ์ธ๋ฐ์ด๋ ์ฒ๋ฆฌ๋ฅผ ์ํ Listener๋ฅผ ๊ตฌ์ฑํ๊ณ , 2๊ฐ์ Anycast IP๋ฅผ ํ ๋น
- Global Accelerator์์ ์๋๋, ์ํ์ธ๋ฃจ Region์ ๋ํ EndPoint Group์ ๊ตฌ๋ถ
- EndPoint Group์ EndPoint ์ง์ (
์๋๋
: ALB,์ํ์ธ๋ฃจ
: EC2-Instance 2๋) ์์ธ, ๋ฒ์ง๋์
Region์ Client๋ฅผ ํตํด ์์ฑ๋ Anycast IP๋ก Web ์ ๊ทผํ์ฌ ๋์ ํ์ธ
2.2 AWS ๊ธฐ๋ณธ ์ค์
- ๋ณธ ์ค์ต์์ ํ์ฉํ AWS Region์
์์ธ, ๋ฒ์ง๋์๋ถ๋ถ, ์๋๋, ์ํ์ธ๋ฃจ
์ด๋ค. ํด๋น Region์ ๋ํ EC2-Key Pair๋ฅผ ์์ฑ ์์ธ, ๋ฒ์ง๋์๋ถ๋ถ
Region์ ํด๋ผ์ด์ธํธ ์์ญ์ผ๋ก, ์ค์ต์ฉ EC2-Instance๋ฅผ 1๋์ฉ ๊ตฌ์ถ (Default VPC ๋ด EC2-Instance ์์ฑ)์๋๋, ์ํ์ธ๋ฃจ
Region์ ์๋น์ค ์์ญ์ผ๋ก, CloudFormation์ ์ํด ์ธํ๋ผ๋ฅผ ์๋ ๊ตฌ์ถ (2.3ํญ์์ ์งํ)
2.3 CloudFormation (Infrastructure as Code)
โคต Download GlobalAccelerator_Lab_CF.yaml
GlobalAccelerator_Lab_CF.yaml Template Code View
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
Mappings:
AWSRegionArch2AMI:
ap-southeast-2:
HVM64: ami-dc361ebf
sa-east-1:
HVM64: ami-6dd04501
Conditions:
CreateSydneyResources: !Equals [ !Ref 'AWS::Region', ap-southeast-2 ]
Resources:
VPC01:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
InternetGateway0101:
Type: AWS::EC2::InternetGateway
Properties: {}
InternetGatewayAttachment0101:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref InternetGateway0101
VpcId: !Ref VPC01
PublicRouteTable0101:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC01
DefaultPublicRoute0101:
Type: AWS::EC2::Route
DependsOn: InternetGatewayAttachment0101
Properties:
RouteTableId: !Ref PublicRouteTable0101
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway0101
Subnet0101:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC01
AvailabilityZone: !Select [ 0, !GetAZs '' ]
CidrBlock: 10.0.0.0/24
Subnet0102:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC01
AvailabilityZone: !Select [ 2, !GetAZs '' ]
CidrBlock: 10.0.1.0/24
Subnet0101RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable0101
SubnetId: !Ref Subnet0101
Subnet0102RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable0101
SubnetId: !Ref Subnet0102
WebSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
VpcId: !Ref VPC01
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '80'
ToPort: '80'
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
EC2Instance1:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', HVM64]
KeyName: !Ref KeyName
NetworkInterfaces:
- DeviceIndex: 0
SubnetId: !Ref Subnet0101
GroupSet:
- !Ref WebSecurityGroup
AssociatePublicIpAddress: true
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum install httpd -y
service httpd start
chkconfig httpd on
echo "<h1>CloudNeta Web Server_1 [Region= ${AWS::Region}] </h1>" > /var/www/html/index.html
EC2Instance2:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', HVM64]
KeyName: !Ref KeyName
NetworkInterfaces:
- DeviceIndex: 0
SubnetId: !Ref Subnet0102
GroupSet:
- !Ref WebSecurityGroup
AssociatePublicIpAddress: true
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum install httpd -y
service httpd start
chkconfig httpd on
echo "<h1>CloudNeta Web Server_2 [Region= ${AWS::Region}] </h1>" > /var/www/html/index.html
ALBTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Condition: CreateSydneyResources
Properties:
Name: CloudNetaTG
Port: 80
Protocol: HTTP
VpcId: !Ref VPC01
Targets:
- Id: !Ref EC2Instance1
Port: 80
- Id: !Ref EC2Instance2
Port: 80
ApplicationLoadBalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Condition: CreateSydneyResources
Properties:
Scheme: internet-facing
SecurityGroups:
- !Ref WebSecurityGroup
Subnets:
- !Ref Subnet0101
- !Ref Subnet0102
ALBListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Condition: CreateSydneyResources
Properties:
DefaultActions:
- Type: forward
TargetGroupArn: !Ref ALBTargetGroup
LoadBalancerArn: !Ref ApplicationLoadBalancer
Port: 80
Protocol: HTTP
- ํ
ํ๋ฆฟ ํ์ผ์ ๋ค์ด๋ฐ์ ํ
์๋๋, ์ํ์ธ๋ฃจ
Region์์ CloudFormation ์คํ์ ์์ฑํ๋ค. - CloudFormation ์คํ ์์ฑ ์ KeyName ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ ฅํ๋ค. (EC2-Key Pair ์์ฑ์ ํ์ง ์์๋ค๋ฉด ์์ฑ)
- CloudFormation์ ์ํด ์์ฑ๋๋ ๋ฆฌ์์ค๋ ์๋์ ๊ฐ์ผ๋ฉฐ, ๊ฐ Region ๋ณ ์ ์์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ๋ค.
์๋๋ CF ์์ฑ ์ธํ๋ผ
- Web ์๋ฒ์ฉ EC2-Instance 2๊ฐ
- VPC 1๊ฐ, Subnet 2๊ฐ, Public Route Table 1๊ฐ, IGW 1๊ฐ
- Security Group 1๊ฐ
- Application Load Balancer, Listener, Target Group 1๊ฐ์ฉ
์ํ์ธ๋ฃจ CF ์์ฑ ์ธํ๋ผ
- Web ์๋ฒ์ฉ EC2-Instance 2๊ฐ
- VPC 1๊ฐ, Subnet 2๊ฐ, Public Route Table 1๊ฐ, IGW 1๊ฐ
- Security Group 1๊ฐ
2.4 ๊ฒ์ฆ
- ์ฌ์ฉ์ PC์์
์๋๋
ALB DNS ์ฃผ์๋ก Web ์ ๊ทผํ๋ค. (์๋ก๊ณ ์นจ์ ํ์ฌ ์ ์์ ์ธ ๋ก๋๋ฐธ๋ฐ์ฑ ํ์ธ) - ์ฌ์ฉ์ PC์์
์ํ์ธ๋ฃจ
EC2-Instance IP ์ฃผ์๋ก Web ์ ๊ทผํ๋ค. (2๋ ๋ชจ๋ ํ์ธ) - ์ฐธ๊ณ ๋ก CF์ ์ํด ๋ฆฌ์์ค๊ฐ ์ ์์ ์ผ๋ก ์ฌ๋ผ์ค๊ธฐ ๊น์ง ์ฝ๊ฐ์ ์๊ฐ์ด ํ์ํ๋ ์ผ์ ์๊ฐ ๋๊ธฐ๊ฐ ํ์ํ๋ค.
๐ก ๋ณธ๊ฒฉ์ ์ธ ์ค์ต์ ์์, Global Accelerator ๋ฆฌ์์ค๋ ์๋์ ๊ณผ๊ธ์ด ๋ถ๊ฐํผ ํ๋ค. (์ต์ด ๋ฆฌ์์ค ์์ฑ ์ ์๊ฐ๋น ์ฝ 0.025$)
์์ธํ ์ฌํญ์ Global Accelerator ์๊ธ ๋งํฌ๋ฅผ ์ฐธ๊ณ ๋ฐ๋๋ค.
3. Create AWS Global Accelerator
3.1 AWS Global Accelerator ์์ฑ
[STEP 1] Enter Name
1) Global Accelerator ๋ฆฌ์์ค ์ ๊ทผ
- Global Accelerator๋ ์ค๋ ๊ณค Region(us-west-2)์์ ๊ด๋ฆฌ
2) Create Accelerator
3) Enter Name
- Accelerator Name:
CloudNeta-GA
[STEP 2] Add Listeners
- Port Info:
80
- Protocol Info:
TCP
- Client affinity Info:
None
[STEP 3] Add EndPoint Groups
Region Info:
ap-southeast-2
, Traffic Dial Info:100
Configure Health Checks
- Health Check Protocol:
HTTP
, ๋๋จธ์ง Default
- Health Check Protocol:
Add EndPoint Group
Region Info:
sa-east-1
, Traffic Dial Info:100
Configure Health Checks
- Health Check Protocol:
HTTP
, ๋๋จธ์ง Default
- Health Check Protocol:
[STEP 4] Add EndPoints
Endpoint group: ap-southeast-2
Add endpoint
Endpoint type Info:
Application Load Balancer
Endpoint Info:
ALB ๋์ ์ง์
Weight Info:
128
View Screenshot
๊ทธ๋ฆผ 3-1 ์๋๋ EndPoint Group์ EndPoint ์ค์ ํ๋ฉด (ALB)
Endpoint group: sa-east-1
Add endpoint
Endpoint type Info:
EC2 instance
Endpoint Info:
EC2-Instance-1 ๋์ ์ง์
Weight Info:
128
Add endpoint
Endpoint type Info:
EC2 instance
Endpoint Info:
EC2-Instance-2 ๋์ ์ง์
Weight Info:
128
View Screenshot
๊ทธ๋ฆผ 3-2 ์ํ์ธ๋ฃจ EndPoint Group์ EndPoint ์ค์ ํ๋ฉด (EC2-Instance)
Create Accelerator
3.2 AWS Global Accelerator ์ ๋ณด ํ์ธ
[STEP 1] Accelerator & Listener ์ ๋ณด
๊ทธ๋ฆผ 3-3 Accelerator ์ ๋ณด์ ์ด์ ์ํ Listener ์ ๋ณด
- Accelerator Provisioning Status๋
Deployed
์ํ๋ก ์ ํ๋์๋ค. - Accelerator์ Staticํ
Anycast IP 2๊ฐ
๋ฅผ ํ ๋น ๋ฐ๋๋ค. - TCP 80์ ๋ํ Listener๊ฐ ์์ฑ๋์๊ณ
All Healthy
ํ ์ํ์ด๋ค.
[STEP 2] EndPoint Group ํ์ธ
- Listener ๋ฅผ ์ ํ ํ
View Details
์ ์ ๊ทผ ํ๋ค.
๊ทธ๋ฆผ 3-4 ์์ฑ๋ Listener ์ ๋ณด์ ์ด์ ์ํ Endpoint Group ์ ๋ณด
- TCP 80์ ๋ํ Listener ์ ๋ณด์ด๋ค. (Client Affinity๋ ๋นํ์ฑํ ์ํ)
- ํด๋น Listener์ ์ํ EndPoint Group์ ํ์ธํ๋ค. (ap-soutcheast-2์ EndPoint Group, sa-east-1์ EndPoint Group)
- ํ์ฌ ๊ฐ EndPoint Group์ ๋ํ
Traffic Dial
์ ๋ชจ๋ 100%์ด๋ค. (ํธ๋ํฝ ์์ฉ๋ ฅ 100%)
[STEP 3] EndPoint ํ์ธ
๊ทธ๋ฆผ 3-5 ์๋๋ Endpoint Group ์ ๋ณด์ ์ด์ ์ํ Endpoint ์ ๋ณด
- ap-southeast-2์ EndPoint Group์ ๋ํ EndPoint ์ ๋ณด๋ฅผ ํ์ธํ๋ค. (EndPoint Type:
ALB
)
๊ทธ๋ฆผ 3-6 ์ํ์ธ๋ฃจ Endpoint Group ์ ๋ณด์ ์ด์ ์ํ Endpoint ์ ๋ณด
- sa-east-1์ EndPoint Group์ ๋ํ EndPoint 2๋์ ์ ๋ณด๋ฅผ ํ์ธํ๋ค. (EndPoint Type:
EC2
)
4. Verify AWS Global Accelerator
4.1 Web ์ ์ ๋ถํ Test
Web ์ ์ ํ
์คํธ๋ ์์ธ, ๋ฒ์ง๋์
Region์ ์์ฑํ EC2-Instance๋ฅผ ํ์ฉํ๋ค.
- Web ์ ์ ํ ์คํธ๋ ๋ฆฌ๋ ์ค์ curl ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฐ๋ณต ์์ ๊ณผ ์ง์ฐ ์๊ฐ ์ฒดํฌ๋ฅผ ํ๋ค.
Traffic management with AWS Global Accelerator | Amazon Web Services
์ฐธ๊ณ ๋งํฌ: Global Accelerator Traffic Management
4.1.1) ์์ธ
EC2-Instance์์ ํ
์คํธ
4.1.1-1) Web ์ ๊ทผ 100ํ ๋ฐ๋ณต ํ ์คํธ (Target GA Anycast IP)
View Configuration
1
2
3
4for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr
50 <h1>CloudNeta Web Server_1 [Region= ap-southeast-2] </h1>
50 <h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
[root@ip-172-31-36-23 ec2-user]#- 100ํ ์ํ ๊ฒฐ๊ณผ 100% ๋ชจ๋
์๋๋ (ap-southeast-2)
์ ์์นํ Web ์๋ฒ๋ก ์ ๊ทผ
- 100ํ ์ํ ๊ฒฐ๊ณผ 100% ๋ชจ๋
4.1.1-2) Web ์ง์ฐ ์๊ฐ 10ํ ๋ฐ๋ณต ํ ์คํธ (Target GA Anycast IP)
View Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22for ((i=0;i<10;i++)); do curl -w "%{time_total}\n" 75.2.44.82 ; done ;
<h1>CloudNeta Web Server_1 [Region= ap-southeast-2] </h1>
0.298549
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.300328
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.299850
<h1>CloudNeta Web Server_1 [Region= ap-southeast-2] </h1>
0.298484
<h1>CloudNeta Web Server_1 [Region= ap-southeast-2] </h1>
0.299389
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.299195
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.299922
<h1>CloudNeta Web Server_1 [Region= ap-southeast-2] </h1>
0.300531
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.299018
<h1>CloudNeta Web Server_2 [Region= ap-southeast-2] </h1>
0.300288
[root@ip-172-31-36-23 ec2-user]#- Web ์๋ฒ ์ ๊ทผ ์ง์ฐ ์๊ฐ์ 10ํ ๋ฐ๋ณต ์ ํ๊ท 0.3์ด ๊ฐ๋ ์์ (10ํ ๋ชจ๋
์๋๋
๋ก ํฅํจ)
- Web ์๋ฒ ์ ๊ทผ ์ง์ฐ ์๊ฐ์ 10ํ ๋ฐ๋ณต ์ ํ๊ท 0.3์ด ๊ฐ๋ ์์ (10ํ ๋ชจ๋
4.1.1-3) Traceroute ๊ฒฝ๋ก ํ์ธ (Target ์๋๋ Region EC2-Instance)
View Configuration
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
31
32
33traceroute -I 13.239.18.205
traceroute to 13.239.18.205 (13.239.18.205), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 100.65.11.1 (100.65.11.1) 2.153 ms 9.538 ms 4.807 ms
7 54.239.122.39 (54.239.122.39) 1.893 ms 1.922 ms 1.848 ms
8 54.239.122.244 (54.239.122.244) 2.705 ms 2.776 ms 2.790 ms
9 54.239.122.235 (54.239.122.235) 1.989 ms 1.947 ms 1.949 ms
10 52.93.134.2 (52.93.134.2) 152.098 ms 148.786 ms 148.490 ms
11 54.239.43.246 (54.239.43.246) 148.300 ms 148.447 ms 148.310 ms
12 52.95.37.70 (52.95.37.70) 150.962 ms 149.034 ms 149.132 ms
13 150.222.112.215 (150.222.112.215) 149.895 ms 148.703 ms 148.656 ms
14 150.222.112.216 (150.222.112.216) 149.277 ms 149.290 ms 149.482 ms
15 52.95.37.91 (52.95.37.91) 149.298 ms 148.914 ms 149.624 ms
16 150.222.112.18 (150.222.112.18) 153.129 ms 149.476 ms 148.866 ms
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
[root@ip-172-31-36-23 ec2-user]#
4.1.1-4) Traceroute ๊ฒฝ๋ก ํ์ธ (Target GA Anycast IP)
View Configuration
1
2
3
4
5
6
7
8
9
10
11
12traceroute -I 75.2.44.82
traceroute to 75.2.44.82 (75.2.44.82), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 100.65.8.161 (100.65.8.161) 1.184 ms 0.275 ms 0.261 ms
7 54.239.122.43 (54.239.122.43) 0.604 ms 0.651 ms 0.630 ms
8 54.239.122.68 (54.239.122.68) 1.121 ms 1.590 ms 1.117 ms
9 a848faec6df617b94.awsglobalaccelerator.com (75.2.44.82) 0.268 ms 0.256 ms 0.265 ms
[root@ip-172-31-36-23 ec2-user]#๋ชฉ์ ์ง Target์ ๋ฐ๋ฅธ Traceroute ๋น๊ต (1-3ํญ vs 1-4ํญ)
a) Global Accelerator ๋ฏธ์ฌ์ฉ
b) Global Accelerator ์ฌ์ฉ
๊ทธ๋ฆผ ์ถ์ฒ: AWS Global Accelerator ๊ฐ์
- ์๋น์ค๋ฅผ ์ํด ์๋ง์ ๋คํธ์ํฌ๋ฅผ ๊ฑฐ์ณ๊ฐ๋ฉฐ, ๊ฐ Hop์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ๋ฉฐ ์ํ์ ์ด๋ํ ์ ์๋ค.
๊ทธ๋ฆผ ์ถ์ฒ: AWS Global Accelerator ๊ฐ์
- AWS Global Accelerator๋ฅผ ์ถ๊ฐํ๋ฉด AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํ์ฉํ๋ฏ๋ก ์ฑ๋ฅ์ด ๊ฐ์ ๋ฐ ํจ์จ์ ์ธ ํต์ ์ ๋ณด์ฅํ๋ค.
4.1.2) ๋ฒ์ง๋์
EC2-Instance์์ ํ
์คํธ
4.1.2-1) Web ์ ๊ทผ 100ํ ๋ฐ๋ณต ํ ์คํธ (Target GA Anycast IP)
View Configuration
1
2
3
4for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr
51 <h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
49 <h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
[root@ip-172-31-82-0 ec2-user]#- 100ํ ์ํ ๊ฒฐ๊ณผ 100% ๋ชจ๋
์ํ์ธ๋ฃจ (sa-east-1)
์ ์์นํ Web ์๋ฒ๋ก ์ ๊ทผ
- 100ํ ์ํ ๊ฒฐ๊ณผ 100% ๋ชจ๋
4.1.2-2) Web ์ง์ฐ ์๊ฐ 10ํ ๋ฐ๋ณต ํ ์คํธ (Target GA Anycast IP)
View Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22for ((i=0;i<10;i++)); do curl -w "%{time_total}\n" 75.2.44.82 ; done ;
<h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
0.227008
<h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
0.227156
<h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
0.225631
<h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
0.227213
<h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
0.224898
<h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
0.225725
<h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
0.225744
<h1>CloudNeta Web Server_2 [Region= sa-east-1] </h1>
0.226330
<h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
0.227288
<h1>CloudNeta Web Server_1 [Region= sa-east-1] </h1>
0.226509
[root@ip-172-31-82-0 ec2-user]#- Web ์๋ฒ ์ ๊ทผ ์ง์ฐ ์๊ฐ์ 10ํ ๋ฐ๋ณต ์ ํ๊ท 0.22์ด ๊ฐ๋ ์์ (10ํ ๋ชจ๋
์ํ์ธ๋ฃจ
๋ก ํฅํจ)
- Web ์๋ฒ ์ ๊ทผ ์ง์ฐ ์๊ฐ์ 10ํ ๋ฐ๋ณต ์ ํ๊ท 0.22์ด ๊ฐ๋ ์์ (10ํ ๋ชจ๋
4.1.2-3) Traceroute ๊ฒฝ๋ก ํ์ธ (Target GA Anycast IP)
View Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14traceroute -I 75.2.44.82
traceroute to 75.2.44.82 (75.2.44.82), 30 hops max, 60 byte packets
1 216.182.238.211 (216.182.238.211) 1.183 ms 1.183 ms 1.181 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 100.65.12.65 (100.65.12.65) 0.323 ms 0.324 ms 0.299 ms
8 52.93.28.239 (52.93.28.239) 0.530 ms 0.485 ms 0.431 ms
9 100.100.10.28 (100.100.10.28) 0.595 ms 1.151 ms 1.033 ms
10 100.95.2.131 (100.95.2.131) 20.297 ms 83.331 ms 69.912 ms
11 a848faec6df617b94.awsglobalaccelerator.com (75.2.44.82) 0.432 ms 0.488 ms 0.446 ms
[root@ip-172-31-82-0 ec2-user]#
4.1.3) Web ์ ์ ํ๋ฆ
๊ทธ๋ฆผ 4-1 ๋ฆฌ์ ๋ณ User์์ Web ์๋ฒ๋ก ์ ๊ทผ ์ ๋ ผ๋ฆฌ์ ์ธ ํ๋ฆ
- User์์ ๊ฐ์ฅ ๊ฐ๊น์ด Edge Location์ผ๋ก ํธ๋ํฝ์ด ์ ์กํ๋ค. (Target: Anycast IP ์ฌ์ฉ)
- AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํตํด ์ต์ ์ EndPoint Group์ผ๋ก ์ ์กํ์ฌ ์๋น์คํ๋ค.
- ์๋ฅผ ๋ค์ด ํ๊ตญ์์ ์ ๊ทผํ๋ ์ฌ์ฉ์๋ ์ธ์ ํ Edge Location์ผ๋ก Web ์ ๊ทผ ์์ฒญ์ ๋ณด๋ด๊ณ , Edge Location์์ ๊ฐ์ฅ ๊ฐ๊น๊ณ Healthyํ EndPoint Group์ธ
์๋๋ (ap-southeast-2)
๋ก AWS ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋น์คํ๋ค.
4.2 Traffic Dial & Weight ์กฐ์ Test
- Traffic Dial์ EndPoint Group์ ๋ํ ํธ๋ํฝ ์์ฉ๋ ฅ์ด๋ฉฐ, Weight๋ EndPoint ๋ณ ํธ๋ํฝ ์ ์ก ๊ฐ์ค์น์ด๋ค.
4.2.1) Traffic Dial ์กฐ์
ํ์ฌ EndPoint Group์ Traffic Dial์ 100%๋ก ์ค์ ๋์ด ๋ชจ๋ ํธ๋ํฝ์ ์์ฉํ๊ณ ์๋ค.
์ฆ,
์์ธ
โ>์๋๋
100%,๋ฒ์ง๋์
โ>์ํ์ธ๋ฃจ
100%
4.2.1-1) Traffic Dial: ์๋๋
50%, ์ํ์ธ๋ฃจ
100% (์์ธ
์์ ํ
์คํธ)
- Accelerator ์ ํ โ> Listener ์ ํ ํ view detail โ> endpoint group์ ์ ํ ํ edit
๊ทธ๋ฆผ 4-2 ์๋๋ EndPoint Group์ Traffic Dial์ 50%๋ก ์กฐ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- ํ๊ตญ ์ฌ์ฉ์ ๊ธฐ์ค์ผ๋ก ์ฝ 50%์ ๋๋
์๋๋(ap-southeast-2)
์์ ์ฒ๋ฆฌ๋๊ณ ๋๋จธ์ง๋์ํ์ธ๋ฃจ(sa-east-1)
์์ ์ฒ๋ฆฌ๋๋ค.
4.2.1-2) Traffic Dial: ์๋๋
0%, ์ํ์ธ๋ฃจ
100% (์์ธ
์์ ํ
์คํธ)
๊ทธ๋ฆผ 4-3 ์๋๋ EndPoint Group์ Traffic Dial์ 0%๋ก ์กฐ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- ํ๊ตญ ์ฌ์ฉ์ ๊ธฐ์ค์ผ๋ก 100% ๋ชจ๋
์ํ์ธ๋ฃจ(sa-east-1)
์์ ์ฒ๋ฆฌ๋๋ค. (๋น๋ก ์ฌ์ฉ์ ์ ์ฅ์์์๋๋
๊ฐ ์ธ์ ํด ์์ง๋ง Traffic Dial์ด 0% ์ด๊ธฐ ๋๋ฌธ์) - ํ ์คํธ ์๋ฃ ํ Traffic Dial ๊ฐ ์์ ๋ณต๊ตฌ (100%)
๐ก Traffic Dial 0%๋ ์ธ์ ์ฌ์ฉํ ๊น?
Traffic Dial 0% ์ค์ ์ Region ๋ด์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ ๋, ๋จผ์ Traffic Dial์ 0%์ผ๋ก ์ค์ ํ์ฌ ํธ๋ํฝ์ ์ฐจ๋จํ๋ค. ์์ ์ ์๋ฃํ๊ณ ๋ค์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋๋ฉด, Traffic Dial์ 100์ผ๋ก ์กฐ์ ํ์ฌ ํธ๋ํฝ์ ๋ค์ ์์ฉํ๋ค.
4.2.2) Weight ์กฐ์
ํ์ฌ ์ํ์ธ๋ฃจ EndPoint Group์ 2๊ฐ์ EndPoint์ Weight ๊ฐ์ ๊ฐ๊ฐ 128๋ก ๋์ผํ ๋น์ค์ ์ค์ ํ๊ณ ์๋ค.
Weight์ ๋ํ ํธ๋ํฝ ์ฒ๋ฆฌ ๊ณต์์ ์๋์ ๊ฐ๋ค. (
์์ ์ Weight
/์ ์ฒด Weight ํฉ
)์ฆ, EndPoint#1 ๊ณ์ฐ๊ฐ: 128 / (128+128) = 1/2, EndPoint#2 ๊ณ์ฐ๊ฐ: 128 / (128+128) = 1/2
4.2.2-1) ์ํ์ธ๋ฃจ
EndPoint#1 Weight: 64, ์ํ์ธ๋ฃจ
EndPoint#2 Weight: 128 (๋ฒ์ง๋์
์์ ํ
์คํธ)
๊ทธ๋ฆผ 4-4 ์ํ์ธ๋ฃจ EndPoint Group์ EndPoint#1์ Weight ๊ฐ์ 64๋ก ์กฐ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- ๊ณ์ฐ์ ํด๋ณด๋ฉด EP#1 = 64 / (64+128) = 1/3 ์ด๊ณ , EP#2 = 128 / (64+128) = 2/3 ์ด๋ค.
4.2.2-2) ์ํ์ธ๋ฃจ
EndPoint#1 Weight: 0, ์ํ์ธ๋ฃจ
EndPoint#2 Weight: 128 (๋ฒ์ง๋์
์์ ํ
์คํธ)
๊ทธ๋ฆผ 4-5 ์ํ์ธ๋ฃจ EndPoint Group์ EndPoint#1์ Weight ๊ฐ์ 0์ผ๋ก ์กฐ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- EP#1์ Weight๊ฐ 0์ด๋ฏ๋ก ํธ๋ํฝ์ด ์ ๋ฌ๋์ง ์๊ณ EP#2๋ก ๋ชจ๋ ์ ๋ฌ๋๋ค.
- ํ ์คํธ ์๋ฃ ํ Weight ๊ฐ ์์ ๋ณต๊ตฌ (128)
๐ก Traffic Dial ๊ฐ์ ์กฐ์ ํ์ฌ EndPoint Group์ ํธ๋ํฝ ์ฒ๋ฆฌ ๋น์ค์ ์กฐ์ ํ ์ ์์ผ๋ฉฐ,
Weight ๊ฐ์ ์กฐ์ ํ์ฌ EndPoint์ ํธ๋ํฝ ์ฒ๋ฆฌ ๋น์ค์ ์กฐ์ ํ ์ ์๋ค.
4.3 Client Affinity Test
- AWS Global Accelerator์์ ํน์ Source IP ์ฃผ์์ ์ฌ์ฉ์ ์์ฒญ์ ๋์ผํ EndPoint ์์์ผ๋ก ๋ณด๋ด ์ ์ ์ ํธ๋๋ฅผ ์ ์งํ๋๋ก ์ ํํ ์ ์๋ค.
Listeners in AWS Global Accelerator
๊ทธ๋ฆผ 4-6 Listener์์ Client Affinity ์ค์ ์ Source IP๋ก ๋ณ๊ฒฝ
GA์์ ์์ฑํ Listener๋ฅผ Editํ์ฌ Client Affinity๋ฅผ None์์ Source IP๋ก ์์ ํ๋ค.
์ฆ, Source IP ๊ธฐ์ค์ผ๋ก ํน์ EndPoint ๋์์ผ๋ก ์ง์์ ์ธ ์ฐ๊ฒฐ์ ๋ณด์ฅํ๋ค. (๋ง์น Sticky Session)
Test Target์ 2๊ฐ์ EndPoint๊ฐ ์กด์ฌํ๋
์ํ์ธ๋ฃจ
๋ก ํฅํ๋๋ก ํ๋ค.
4.3.1) ๋ฒ์ง๋์
์์ Web ์ ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
์ํ์ธ๋ฃจ
์์ ํ๋์ EndPoint๋ก๋ง ์ ์์ด ์ด๋ฃจ์ด ์ง๋ค. (EP#1 - Web Server_1)
4.3.2) ์์ธ
์์ Web ์ ์
์์ธ
์์ ์ ์ ์์๋๋
Web Server๋ก๋ง ์ ์๋๋ฏ๋ก, Traffic Dial์ 0์ผ๋ก ์กฐ์ ํ์ฌ์ํ์ธ๋ฃจ
๋ก ํฅํ๊ฒ ์ค์ ํ ํ ํ ์คํธ ํ๋ค.
๊ทธ๋ฆผ 4-7 ์๋๋ EndPoint Group์ Traffic Dial์ 0%๋ก ์กฐ์
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
์ํ์ธ๋ฃจ
์์ ํ๋์ EndPoint๋ก๋ง ์ ์์ด ์ด๋ฃจ์ด ์ง๋ค. (EP#2 - Web Server_2)- ํ ์คํธ ์๋ฃ ํ Traffic Dial๊ณผ Client Affinity ๊ฐ ๋ณต๊ตฌ
4.4 Preserve Client IP Test
AWS Global Accelerator์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ผ๋ก Client IP ์ฃผ์๋ฅผ ์ ์งํ์ฌ ๋ณด์กดํ๋ ๊ธฐ๋ฅ์ด๋ค.
EndPoint ๋ณ Client IP ๋ณด์กด ๊ธฐ๋ฅ
EC2 : ํญ์ ํ์ฑํ
ALB : ์ ํ ๊ฐ๋ฅ (ํ์ฑํ/๋นํ์ฑํ)
EIP, NLB : ํญ์ ๋นํ์ฑํ
Preserve Client IP Addresses in AWS Global Accelerator
์ฐธ๊ณ ๋งํฌ : ํด๋ผ์ด์ธํธ IP ๋ณด์กด ๊ด๋ จ ๋ฌธ์
4.4.1) EC2 EndPoint ๋์ Client IP ๋ณด์กด (์ํ์ธ๋ฃจ
)
๊ทธ๋ฆผ 4-8 EC2 EndPoint Type์์ Client IP ๋ณด์กด ์ํ (ํ์ฑํ)
- EndPoint ํ์ ์ด EC2 ์ผ ๊ฒฝ์ฐ Client IP ๋ณด์กด ๊ธฐ๋ฅ์ ํญ์ ํ์ฑํ ์ํ์ด๋ค.
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
๋ฒ์ง๋์
์์ GA Anycast IP ํ๊ฒ์ผ๋ก Web ์ ๊ทผ ์๋ ๋ฐ ์์ ์ ๊ณต์ธ IP ํ์ธ
1 | tail -f /var/log/httpd/access_log |
์ํ์ธ๋ฃจ
Web ์๋ฒ์์ HTTP ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด๋ฉด Client IP (๋ฒ์ง๋์
)๊ฐ ๋ณด์กด๋์ด ๊ทธ๋๋ก ์ธ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
4.4.2) ALB EndPoint ๋์ Client IP ๋ณด์กด (์๋๋
)
- EndPoint ํ์ ์ด ALB ์ผ ๊ฒฝ์ฐ Client IP ๋ณด์กด ๊ธฐ๋ฅ์ ์ ํํ ์ ์๋ค. (ํ์ฑํ/๋นํ์ฑํ)
- ALB Backend์ ์กด์ฌํ๋ EC2์์ Client IP ์ฃผ์๋ฅผ ํ์ธํ๋ ค๋ฉด
X-Forwarded-For ํค๋
๋ฅผ ์ฌ์ฉํ์ฌ ์บก์ณํด์ผ ํ๋ค.
ELB ์ก์ธ์ค ๋ก๊ทธ์์ ํด๋ผ์ด์ธํธ IP ์ฃผ์ ์บก์ฒ
์ฐธ๊ณ ๋งํฌ : ELB ์์ธ์ค ๋ก๊ทธ์์ ํด๋ผ์ด์ธํธ IP ์ฃผ์ ํ์ธ
4.4.2.1) Client IP ๋ณด์กด ํ์ฑํ
๊ทธ๋ฆผ 4-9 ALB EndPoint Type์์ Client IP ๋ณด์กด ์ํ (ํ์ฑํ)
1 | vi /etc/httpd/conf/httpd.conf |
์๋๋
Web ์๋ฒ์์ /etc/httpd/conf/httpd.conf ํ์ผ์ LogFormat ์น์ ์์ ์ ๋ด์ฉ์ ์ถ๊ฐ ํ๋ค. (http ๋ฐ๋ชฌ reload)
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
์์ธ
์์ GA Anycast IP ํ๊ฒ์ผ๋ก Web ์ ๊ทผ ์๋ ๋ฐ ์์ ์ ๊ณต์ธ IP ํ์ธ
1 | tail -f /var/log/httpd/access_log |
์๋๋
Web ์๋ฒ์์ HTTP ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด๋ฉด Client IP (์์ธ
)๊ฐ ๋ณด์กด๋์ด ๊ทธ๋๋ก ์ธ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
4.4.2.2) Client IP ๋ณด์กด ๋นํ์ฑํ
๊ทธ๋ฆผ 4-10 ALB EndPoint Type์์ Client IP ๋ณด์กด ์ค์ ๋ณ๊ฒฝ (๋นํ์ฑํ)
์๋๋
์ ALB EndPoint Type์ Editํ์ฌ Preserve Client IP address ์ฒดํฌ๋ฅผ ํด์ ํ๋ค. (Client IP ๋ณด์กด ๋นํ์ฑํ)- Global Accelerator ๊ฐ ์ฌ์๋ ๋์ด ์ฝ๊ฐ์ ๋๊ธฐ๊ฐ ํ์ํ๋ค.
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
์์ธ
์์ GA Anycast IP ํ๊ฒ์ผ๋ก Web ์ ๊ทผ ์๋ ๋ฐ ์์ ์ ๊ณต์ธ IP ํ์ธ
1 | tail -f /var/log/httpd/access_log |
์๋๋
Web ์๋ฒ์์ HTTP ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด๋ฉด Client IP (์์ธ
)๊ฐ ๋ณด์กด๋์ง ์๊ณ , GA์์ ์ฌ์ฉํ๋ ๋ด๋ถ ์ฃผ์ ๋์ญ์ด Source IP๋ก ๋ค์ด ์จ๋ค.
๐ก Client IP ๋ณด์กด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด?
IP ๋ณ ํํฐ๋ง์ ์์ํ๊ฒ ์ํํ ์ ์๊ณ , ํน์ IP๋ง๋ค ์ ๊ณต ์ปจํ ์ธ ๋ถ๋ฅํ๊ฑฐ๋ ํต๊ณ ์ ๋ณด ํ์ฉ์ ์ ์ฉํ๋ค.
4.5 Failover Test
์๋๋(ap-southeast-2)
์ ์์นํ๋ Web ์๋ฒ๋ฅผ ํ๋ ์ฉ Stop ํ ๋์์ ํ์ธํ๋ค.- Client๋
์์ธ
์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
4.5.1) ์๋๋
Web ์๋ฒ 1๋ Stop
๊ทธ๋ฆผ 4-11 ์๋๋ Web Server 1๋ ์ค์ง
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- ALB์ ์ํ์ฌ Load Balancing ๋๋ ํ๊ฒฝ์ด๋ผ ๋ค๋ฅธ Web ์๋ฒ๊ฐ ๋ชจ๋ ์ฒ๋ฆฌ ํด ์ค๋ค.
4.5.2) ์๋๋
Web ์๋ฒ ๋ชจ๋ Stop
๊ทธ๋ฆผ 4-12 ์๋๋ ๋๋จธ์ง Web Server 1๋ ์ค์ง (์ ์ฒด ์ค์ง)
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
์๋๋(ap-southeast-2)
์ Web ์๋ฒ ๋ชจ๋ ์์์ด Stop ๋์์ํ์ธ๋ฃจ(sa-east-1)
๋ก ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋ชจ๋ ์ฒ๋ฆฌํ๋ค.
4.5.3) Global Accelerator ์ํ ํ์ธ
๊ทธ๋ฆผ 4-13 Lisener ์ํ ํ์ธ
- ๋ฆฌ์ค๋์ ์ํ๋ฅผ ํ์ธํด๋ณด๋ฉด
1 Unhealthy endpoints
์ํ์ด๋ค.
๊ทธ๋ฆผ 4-14 EndPoints Health Check ์ํ ํ์ธ
- Unhealthy ์ํ์ Endpoint๋ฅผ ํ์ธํ ์ ์๋ค.
4.5.4) ์๋๋
Web ์๋ฒ ๋ชจ๋ Start
๊ทธ๋ฆผ 4-15 ์๋๋ Web Server ๋ชจ๋ ํ์ฑํ
1 | for i in {1..100}; do curl -s -q 75.2.44.82 ; done | sort | uniq -c | sort -nr |
- Health Check์ ์ํ์ฌ
์๋๋
์ชฝ EndPoint Group์ด Healthy ์ํ๋ก ์ ํ๋๊ธฐ ๊น์ง์ํ์ธ๋ฃจ
์์ ์ฒ๋ฆฌํ๋ฉฐ, ์ด ํ์๋๋
์์ ๋ชจ๋ ์ฒ๋ฆฌํ๋ค.
๊ทธ๋ฆผ 4-16 Lisener ์ํ ํ์ธ
- All Healthy ์ํ๋ก ์ ํ
5. Delete Infrastructure
1) AWS Global Accelerator Disable
2) AWS Global Accelerator Delete
- AWS Global Accelerator์ ๋ํด Delete ๋ฒํผ์ ๋๋ฅด๊ณ , Disable ํ Delete
3) ์๋๋ CloudFormation Stack Delete
4) ์ํ์ธ๋ฃจ CloudFormation Stack Delete
5) ํ๊ตญ EC2-Instance Shutdown
6) ๋ฒ์ง๋์ EC2-Instance Shutdown
๐ CloudFormation ์คํ์ ์ญ์ ์ ์ผ์ ์๊ฐ์ด ์์๋๋๋ฐ, ๋๋ฌด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ์๋์ผ๋ก ๊ด๋ จ ์ธํ๋ผ๋ฅผ ์ญ์ ํด์ผ ํ๋ค.
๋ฐ๋์, ์ค์ต์ ์ํด ์์ฑํ ๋ฆฌ์์ค๋ ์ญ์ ํ๋ค.