何回やっても忘れるのでメモorz
- セキュリティグループ作成
- ターゲットグループ作成
- ロードバランサー作成
- 起動設定作成
- Auto Scaling グループ作成
- ターゲットグループへの紐付けはココで。
- スケールグループサイズの設定もココで。
セキュリティグループ作成
以下のセキュリティグループを作成する。
- LB 設定用 (HTTP)
- 以下のルールで作成する。
- タイプ: HTTP
- ソース: 任意の場所
- 説明: (適当に。)
- 作成後, (
sg-
で始まる) グループ ID をコピーしておく。
- 以下のルールで作成する。
- 分散先 EC2 設定用 (HTTP via LB, SSH)
- HTTP は以下のルールで作成する。
- タイプ: HTTP
- ソース: カスタム, 先ほどコピーしたグループ ID
- 説明: (適当に。)
- SSH のルールは接続元を絞って許可する。
- HTTP は以下のルールで作成する。
ターゲットグループ作成
Auto Scaling からの紐付けは, また後で。
- ターゲットグループ名: (適当に。)
パス: (適当に。)
$ aws elbv2 describe-target-groups --names test-tg91
{
"TargetGroups": [
{
"HealthCheckPath": "/test.html",
"HealthCheckIntervalSeconds": 30,
"VpcId": "vpc-ee5d1f89",
"Protocol": "HTTP",
"HealthCheckTimeoutSeconds": 5,
"TargetType": "instance",
"HealthCheckProtocol": "HTTP",
"LoadBalancerArns": [
"arn:aws:elasticloadbalancing:ap-northeast-1:************:loadbalancer/app/test-alb91/9cdbb712936551ed"
],
"UnhealthyThresholdCount": 2,
"HealthyThresholdCount": 5,
"TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-1:************:targetgroup/test-tg91/45eb087acba8c8ec",
"Matcher": {
"HttpCode": "200"
},
"HealthCheckPort": "traffic-port",
"Port": 80,
"TargetGroupName": "test-tg91"
}
]
}
ロードバランサー作成
- 名前: (適当に。)
- アベイラビリティーゾーン: (全部)
- セキュリティグループ: (先ほど LB 用に作成したもの。)
ターゲットグループ: 既存のターゲットグループ
$ aws elbv2 describe-load-balancers --names test-alb91
{
"LoadBalancers": [
{
"IpAddressType": "ipv4",
"VpcId": "vpc-ee5d1f89",
"LoadBalancerArn": "arn:aws:elasticloadbalancing:ap-northeast-1:************:loadbalancer/app/test-alb91/9cdbb712936551ed",
"State": {
"Code": "active"
},
"DNSName": "test-alb91-2120475592.ap-northeast-1.elb.amazonaws.com",
"SecurityGroups": [
"sg-0836de3bf55e10755"
],
"LoadBalancerName": "test-alb91",
"CreatedTime": "2018-08-30T01:23:36.810Z",
"Scheme": "internet-facing",
"Type": "application",
"CanonicalHostedZoneId": "Z14GRHDCWA56QT",
"AvailabilityZones": [
{
"SubnetId": "subnet-1a111a53",
"ZoneName": "ap-northeast-1a"
},
{
"SubnetId": "subnet-747e3b2f",
"ZoneName": "ap-northeast-1c"
},
{
"SubnetId": "subnet-c6110cee",
"ZoneName": "ap-northeast-1d"
}
]
}
]
}
起動設定作成
- 以下の通りに辿り, CentOS 7 (x86_64) - with Updates HVM を探す。
- AWS Marketplace
- Infrastructure Software
- CentOS
- Free
- インスタンスタイプは初期値 (t2.micro) で。
- 詳細設定
- 名前: (適当に。)
- ユーザーデータ: (後述)
- ストレージ
- 合わせて削除: チェック有り
- セキュリティグループ: (先ほど EC2 用に作成したもの。)
- キーペア: (適当に。)
ユーザーデータ
#!/bin/bash
echo -e "Defaults:centos\t\!requiretty" | sed -e 's/\\//' > /etc/sudoers.d/ansible
yum -y upgrade
yum -y install httpd
echo '<!DOCTYPE html><html><head><title>TEST</title></head><body><h1>TEST PAGE</h1><p>This is a test page.</p></body></html>' > /var/www/html/test.html
systemctl enable httpd
systemctl reboot
$ aws autoscaling describe-launch-configurations --launch-configuration-names test-lc91
{
"LaunchConfigurations": [
{
"UserData": "IyEvYmluL2Jhc2gKZWNobyAtZSAiRGVmYXVsdHM6Y2VudG9zXHRcIXJlcXVpcmV0dHkiIHwgc2VkIC1lICdzL1xcLy8nID4gL2V0Yy9zdWRvZXJzLmQvYW5zaWJsZQp5dW0gLXkgdXBncmFkZQp5dW0gLXkgaW5zdGFsbCBodHRwZAplY2hvICc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48dGl0bGU+VEVTVDwvdGl0bGU+PC9oZWFkPjxib2R5PjxoMT5URVNUIFBBR0U8L2gxPjxwPlRoaXMgaXMgYSB0ZXN0IHBhZ2UuPC9wPjwvYm9keT48L2h0bWw+JyA+IC92YXIvd3d3L2h0bWwvdGVzdC5odG1sCnN5c3RlbWN0bCBlbmFibGUgaHR0cGQKc3lzdGVtY3RsIHJlYm9vdAo=",
"EbsOptimized": false,
"LaunchConfigurationARN": "arn:aws:autoscaling:ap-northeast-1:************:launchConfiguration:35af0148-a29a-45c5-acb1-6a88dfc76c37:launchConfigurationName/test-lc91",
"InstanceMonitoring": {
"Enabled": false
},
"ClassicLinkVPCSecurityGroups": [],
"CreatedTime": "2018-08-30T01:24:45.065Z",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-0a738fee1d3ea1e78",
"VolumeSize": 8,
"VolumeType": "gp2"
}
}
],
"KeyName": "********-key",
"SecurityGroups": [
"sg-0d57a71bd16dce9b4"
],
"LaunchConfigurationName": "test-lc91",
"KernelId": "",
"RamdiskId": "",
"ImageId": "ami-8e8847f1",
"InstanceType": "t2.micro"
}
]
}
Auto Scaling グループ作成
- グループ名: (適当に。)
- サブネット: (選べるだけ全部。)
- ロードバランシング: チェック有り
- ターゲットグループ: (先ほど作成したターゲットグループ。)
ヘルスチェックのタイプ: ELB
$ aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names test-asg91
{
"AutoScalingGroups": [
{
"AutoScalingGroupARN": "arn:aws:autoscaling:ap-northeast-1:************:autoScalingGroup:6343056b-d007-4c2d-9eba-7c1f7448f4ca:autoScalingGroupName/test-asg91",
"ServiceLinkedRoleARN": "arn:aws:iam::************:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
"TargetGroupARNs": [
"arn:aws:elasticloadbalancing:ap-northeast-1:************:targetgroup/test-tg91/45eb087acba8c8ec"
],
"SuspendedProcesses": [],
"DesiredCapacity": 2,
"Tags": [
{
"ResourceType": "auto-scaling-group",
"ResourceId": "test-asg91",
"PropagateAtLaunch": true,
"Value": "test_web",
"Key": "role"
}
],
"EnabledMetrics": [],
"LoadBalancerNames": [],
"AutoScalingGroupName": "test-asg91",
"DefaultCooldown": 300,
"MinSize": 2,
"Instances": [
{
"ProtectedFromScaleIn": false,
"AvailabilityZone": "ap-northeast-1a",
"InstanceId": "i-068c005654c10b78c",
"HealthStatus": "Healthy",
"LifecycleState": "InService",
"LaunchConfigurationName": "test-lc91"
},
{
"ProtectedFromScaleIn": false,
"AvailabilityZone": "ap-northeast-1c",
"InstanceId": "i-0c5cb80894c73f594",
"HealthStatus": "Healthy",
"LifecycleState": "InService",
"LaunchConfigurationName": "test-lc91"
}
],
"MaxSize": 2,
"VPCZoneIdentifier": "subnet-747e3b2f,subnet-c6110cee,subnet-1a111a53",
"HealthCheckGracePeriod": 300,
"TerminationPolicies": [
"Default"
],
"LaunchConfigurationName": "test-lc91",
"CreatedTime": "2018-08-30T01:26:08.450Z",
"AvailabilityZones": [
"ap-northeast-1a",
"ap-northeast-1c",
"ap-northeast-1d"
],
"HealthCheckType": "ELB",
"NewInstancesProtectedFromScaleIn": false
}
]
}
どっとはらい。