Tag: EC2

簡単な EC2 インスタンスのバックアップ機構を作る

日次で自動的に cron で再起動して、AMI イメージを取得したい。 再起動が必要だが再起動時はメンテナンス画面を出しておきたい( 深夜メンテナンス時間が取れるサービスに限る ) ALB でメンテナンス画面を出せる機能を用いてサーバ終了、起動時にメンテナンス画面に切り替える 仕組み EC2 上で自分自身のイメージを取得するスクリプトを用意する EC2 の IAM ロールで AMI 化を実行するのに必要な権限を付与する EC2 サーバの crontab にスクリプトを用意する 起動終了時に ALB のルールのプライオリティを変更する処理を組み込む EC2 上で自分自身のイメージを取得するスクリプトを用意する /usr/local/bin/ami_backup.bash に下記のスクリプトを設置した。 #!/bin/bash id=$(/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id) /usr/bin/aws ec2 create-image --region ap-northeast-1 --instance-id $id --name "wordpress-www-update-$id-$(date +%Y%m%d%H%M)" --reboot wordpress-www-update の部分はシステムによって変えた方が良いと思う。 あるいは$id にインスタンス名が入るので、それを持ってユニークとするか( ただし検索が面倒 ) EC2 の IAM ロールで AMI 化を実行するのに必要な権限を付与する 下記のロールを持つように IAM を作成、EC2 サーバーに付与 elasticloadbalancing はロードバランサーのルールのプライオリティの上下に使う ec2 は AMI の作成に使う { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeRules", "elasticloadbalancing:SetRulePriorities" "ec2:ExportImage", "ec2:DescribeImages", "ec2:DeleteTags", "ec2:EnableImageDeprecation", "ec2:CreateTags", "ec2:RegisterImage", "ec2:CreateImage", "ec2:ModifyImageAttribute", "ec2:CreateStoreImageTask", "ec2:DisableImageDeprecation" ], "Resource": "*" } ] } EC2 サーバの crontab にスクリプトを用意する AM 03:01 に実施 Read more...

EC2上でWindowsを起動してリモートログイン

職場の開発は macOS で行われるが、Windows のお客様から Windows 環境で表示が崩れる問い合わせがあり、 リモートワークが始まる前は職場の Windows 機で確認していたが、そのためだけに出社するのは無駄なので EC2 上で検証する事にした。 標準だと英語版の AMI が選択されるが、コミュニティ AMI を検索すると Amazon から提供された日本語版が存在する。 環境 日本語版 Windows 2019 standard 手順 EC2 の画面から[インスタンスを起動]をクリック hogege [コミュニティ AMI]を選択した上で、検索キーワードに[Japanese]を入れ検索。 オペレーティングシステムは Windows に絞る。SQL サーバーも含まれるので、それ以外の通常の Windows を選択する。 メモリは 8GB 程度あった方が良いか、という事で t2.large を選択。 各ネットワークに合わせて設定して RDP 用のセキュリティグループを作成する。 インスタンスを起動後、インスタンスを選択し、画面右上の「アクション」から「接続」を選択。 途中、AWS EC2 の秘密鍵が求められるので、ブラウザ上から選択、パスワードが得られる。 RDP で接続するためのファイルがダウンロードできるため、ダウンロードして実行。 Windows にログインする。 Edge インストール Windows Server 2019 への Chromium Edge がわかりにくい!(インストール手順解説を参考に Edge をインストール。 ポイントとしては IE の「信頼済みサイト」に「https://.officeapps.live.com/」と「https://.microsoft.com/」を追加する所だと思う。 Read more...

ALBだけでメンテナンス画面を表示させる際の注意

なるべくサービス側のシステムを触らずにALBだけでメンテナンス画面を出したかった • htmlのサイズは1024バイトまで • htmlとcssに分離する必要がある • メンテナンス画面でもhtmlが1024バイト超えている場合 http://kangax.github.io/html-minifier/ でコンパクトにした • CDNキャッシュ初期化は必要なドメインすべてで行う必要がある Read more...

AWS EC2 オートスケール

EC2のオートスケールは、EC2のWebUIの下記の要素で作成する AMI <- ami-idを確認する AUTO SCALING 起動設定 <- 主にEC2の起動設定、どのAMIからEC2インスタンスを作成する、spotインスタンスにするか、など。複数作成して切り替える事が可能。 Auto Scalingグループ <- 主にネットワーク周りの設定 起動設定を作ってから、AutoScalingグループを作成する。 [ AutoScalingグループ ]には「どのAMIからEC2インスタンスを作成するか」という[ 起動設定 ]を切り替えることができる。 高負荷時のオートスケールにかかる時間は5分から6分程度、EC2インスタンス起動に通常、120秒ほどかかる事を考えると、 負荷の検知、スケールアウト準備、インスタンス起動、サービス開始、と妥当な時間のように思う。 が、ライブ開始前と21:00の負荷の際にはあらかじめサーバを足しておきたい。この設定は [ AutoScalingグループ ]->[ スケジュールされたアクション ]で設定可能。 ※ このスケジュールされたアクションを設定する際の [ 開始時刻 ]の注意点は デフォルトで翌日の設定になってる 一度開始時刻を設定しようとすると、CRONの設定が消える という点が注意点。スケジュールが実行されないケースがあった。 実際にスケジュールが実行されたかどうかは[ アクティビティ履歴 ]を見ると分かる Read more...

AWS EC2メモ

インスタンスタイプごとのネットワーク帯域 iperfなどで計測する。 iperf -c %LOCAL_IP_ADDRESS% -t 60 EC2 – EC2 間 は5Gbps程度 参考 水門は開いた – EC2 インスタンスのネットワーク帯域幅が増大 起動時、パッケージのセットアップがうまく行かない場合 /etc/sysconfig/cloud-init の package_setupの項目をnoにする。 参考 VPC内にEC2を立ち上げようとしてcloud-initのpackage_setupでハマる チェックポイント EC2 余計なセキュリティグループがついてないか、つまり余計なポートが空いてないか opsに余計なのがついてたり( port 22 が、まだ空いていたり ) AZ分散しているか? たまに「サブネットを作ってなかった」というミスがあり、この場合、サブネットが寄ってしまっている。 opsにはEIPが割り当てられているか パラメータストアにSLACKの値は設定しているか ロードバランサー port 443 でリスナーが立っているか? 『CloudFront障害』のケースを考えると、オリジン側もHTTPではなくSSLで受ける必要がある。 Deletion Protection をonにする。削除されなくするやつか ターゲットグループ ELBのtarget groupにおける stickness が無効になってたので30秒で有効に変更する Read more...

AWSマーケットプレイスでのイメージ検索

AMI( HDDイメージのようなもの )の選択 AMIの選択はEC2を起動する際やここから検索できる ただ検索できた方が、なにかと自動化しやすい( わざわざブラウザで開かなくて良い )ので方法を残す 例えばAMI名に『KUSANAGI』を含むAMIを検索する場合 aws ec2 describe-images \ --region ap-northeast-1 \ --owners 'aws-marketplace' \ --filters --filters 'Name=name,Values=*KUSANAGI*' 例えば Amazon Linux 2 の最新AMI IDが欲しい場合 aws ec2 describe-images \ --region ap-northeast-1 \ --query 'sort_by(Images, &CreationDate)[-1]' \ --owners amazon \ --filters 'Name=name,Values=amzn2-ami-hvm-2.0.*-x86_64-gp2' | jq -r '.ImageId' プロダクトコード、オーナーで検索する場合 「あるオーナーの更に、プロダクトごとに絞り込みたい」ようなケース。 オーナーは、大雑把にいうと「Amazonが所有者のもの( amazon )」と「それ以外( aws-marketplace )」な区分がある。 owners 分類 amazon アマゾンのオフィシャルAMI aws-marketplace マーケットプレイスで公開されているイメージ郡( CentOSやkusanagiなど様々なディストリビューションがある ) 099720109477 Ubuntu プロダクトコードは、ある所有者のいくつかあるプロダクトのうち、一つに絞る、ようなケースで利用する。 Read more...