LoginSignup
3
3

More than 5 years have passed since last update.

Auto Scaling 設定メモ

Last updated at Posted at 2018-08-28

何回やっても忘れるのでメモorz

  1. セキュリティグループ作成
  2. ターゲットグループ作成
  3. ロードバランサー作成
  4. 起動設定作成
  5. Auto Scaling グループ作成
    • ターゲットグループへの紐付けはココで。
    • スケールグループサイズの設定もココで。

セキュリティグループ作成

以下のセキュリティグループを作成する。

  • LB 設定用 (HTTP)
    1. 以下のルールで作成する。
      • タイプ: HTTP
      • ソース: 任意の場所
      • 説明: (適当に。)
    2. 作成後, (sg- で始まる) グループ ID をコピーしておく。
  • 分散先 EC2 設定用 (HTTP via LB, SSH)
    1. HTTP は以下のルールで作成する。
      • タイプ: HTTP
      • ソース: カスタム, 先ほどコピーしたグループ ID
      • 説明: (適当に。)
    2. SSH のルールは接続元を絞って許可する。

ターゲットグループ作成

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 を探す。
    1. AWS Marketplace
    2. Infrastructure Software
    3. CentOS
    4. 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
        }
    ]
}

どっとはらい。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3