はじめに
AWS DOPの試験対策でExam Readiness: AWS Certified DevOps Engineer – Professional (Japanese)を視聴したので、内容をまとめます。
アジェンダ
分野 | 内容 |
---|---|
1 | SDLC の自動化 |
2 | 設定管理とIaC |
3 | モニタリングとロギング |
4 | ポリシーと標準の自動化 |
5 | インシデントとイベントレスポンス |
6 | 高可用性、対障害性、災害復旧 |
トラブルシューティング
各サービスの連携が肝要。
ロギングとモニタリングの連携
APIコールの通知
- 設定管理
自動復旧
可能な限りオートメーションを利用して復旧する
- 全てのログデータが記録される。それを利用してトラブルシューティングを行う。
Auto Scalingとライフサイクルフック
Auto Scalingサービスの停止
- Launch:EC2を追加
- Terminate:EC2を削除
- AlarmNotifications:CloudWatchアラームから通知を受け取る
- ReplaceUnhealthy:異常とマークされたインスタンスを削除し代替インスタンスを生成
- HealthCheck:インスタンスのヘルスチェック
- AZRebalance:AZ内でEC2の数のバランスを取る
- AddToLoadBalancer:インスタンス起動時にアタッチされたロードバランサーに追加
Auto Scaling終了ポリシー
- デフォルト:AZで均等な可用性を確保
- OldestInstance:最も古いものを終了
- NewestInstance:最も新しいものを終了
- AllocationStrategy:優先度の低いタイプのオンデマンドインスタンスを高いものに置き換える
- OldestLaunchConfig:グループを更新し、最も古い起動設定のインスタンスを削除
- OldestLaunchTemplate:グループを更新し、最も古い起動テンプレートを使用するインスタンスを削除
- ClosestToNextInstanceHour:次の課金時間に最も近いインスタンスを削除
ライフサイクルフック
CodeDeployのライフサイクルイベント
- 各EC2インスタンスにCodeDeployエージェントをインストールする
問題例
- タグポリシーに準拠していないEC2インスタンスを終了
-> AWS Config内のルールを設定。違反しているインスタンスはCloudWatchイベントを使用してLambda関数を実行し終了する。 - SQSキューの深さに基づいてEC2をスケーリング。CPUを大量に消費する実行時間の長いジョブが含まれ、処理中にスケールインする。
-> メッセージの処理中にインスタンスをAuto Scalingのstandby状態にして、処理が終わったらinServiceに戻す - コードリポジトリでS3をデータストア。整合性の維持、EC2へセキュリティ高くデプロイ。
-> オブジェクトを削除する際に多要素認証、バージョニングを有効。認証情報をハードコーディングせず、S3バケットへのアクセス権限をもつIAMロールをEC2にアタッチ。 - CodeDeployでAuto Scaling内にEC2インスタンスをデプロイ。ELBのヘルスチェックが失敗。
-> ReplaceUnhealthyプロセスを停止し、壊れたマシンにサインインしトラブルシューティング。 - CodeDeployにValidateCodeイベントを追加し、コードがサービスに配置される前に正常に機能していることを確認。