こんにちは。「クロジカサーバー管理」コンサルティングチームの西原です。
レンタルサーバーでWebサイトを運用してきた方が、これからAWSを利用しようとした場合、運用面でどのような違いがあるでしょうか。おそらく、レンタルサーバーにおいて運用に相当するものはWordPressのアップデート程度、という方が大半ではないでしょうか。
仮想サーバーやクラウドを利用する場合は、今までレンタルサーバー事業者が行ってくれていたことをユーザー側で行う必要があります。社内にインフラエンジニアの方がいれば問題はありませんが、在籍しない場合も多数あると思います。 そこで、今回は運用に注目して、AWSで運用する際に意識して行わなければいけないことに触れていきます。
この記事でわかること
① AWS運用で意識すべき3つのポイント
② AWSが推奨する運用のベストプラクティス
③ AWS運用のよくあるトラブル
目次
【実践向け】AWSを運用する際に意識が必要な3つのポイント
何はともあれバックアップ
AWSが提供する仮想サーバーであるAmazon EC2は自動的にバックアップが作成されません。そのためユーザーが自分でバックアップの設定を行う必要があります。
- レンタルサーバーのバックアップ
レンタルサーバーでは、1日1回はバックアップが取られています。
用途は、サーバー事業者がサーバーの障害が発生した際に復旧するためのバックアップです。ユーザーの誤操作でデータを削除してしまった場合は対応ができないため、必ずユーザー自身でバックアップを取る必要はあります。
- AWSのバックアップ
AWSでのバックアップはサーバー構成により方法が異なります。今回はシンプルにWebサーバーのバックアップを例に説明します。AWSでWebサーバーを構築する一般的な方法は、EC2(Amazon Elastic Compute Cloud)にEBS(Amazon Elastic Block Store)というストレージの組み合わせです。このバックアップを取得するには、AMI(Amazon マシンイメージ)のバックアップを取れば完了です。 AMIバックアップの取得はAWSの管理画面から行えます。
自動的に死活監視がされない
サーバーが停止していても気付くことができず、ユーザーが自分で必要な監視設定を行う必要があります。レンタルサーバーでは、監視サービスは多くの場合付いています。監視内容は各社違いがありますが、サーバーへの疎通ができない障害などであれば、サーバー事業者が復旧措置を行い障害連絡を行なってくれます。
- AWSで監視を行う一般的な方法
AWSで監視を行う一般的な方法は、Amazon CloudWatchを利用する方法です。最低限、サーバーへ疎通ができているのかを確認することを考えると、「StatusCheckFailed」という監視項目を追加して、通知設定をしておきます。
「StatusCheckFailed」の監視項目では以下のような障害が検知できます。
- ネットワーク接続が不可
- 電源断
- 物理サーバー上のソフトウェアの問題
- ネットワークに関するハードウェアレベルの接続障害
- ネットワーク設定の不備による接続障害
- メモリの枯渇
- ファイルシステムの破損
OSやミドルウェアのセキュリティパッチ適用はない
AWSのインフラとして必要なアップデートは、稀にアナウンスされ実施される程度です。レンタルサーバーでは、重大な脆弱性が発見された際はメンテナンスの時間が通知され、セキュリティパッチを適用されることが多いです。
レンタルサーバーが、何も考えなくてもある程度のセキュリティが担保される理由はここにあります。一方で、自分たちのシステムに合わせたメンテナンス時間が決定できない、事前に検証ができずシステムが可動しなくなる可能性がある、などのデメリットもあります。
- AWSはどのようにセキュリティパッチの運用を行えば良いか?
AWSだからどうすれば良いというものではなく、セキュリティ情報にアンテナを張っておき、重大な脆弱性が公表されたらユーザー自身でセキュリティパッチを適用します。 この際に、簡単にサーバーの複製を作成し、検証を行えることが最大のメリットです。メンテナンスの時間もユーザーの予定に合わせて随時実行できます。
AWSが推奨する運用に関するベストプラクティス
ここまでは、実際の運用面から見た実践に即したポイントをご紹介いたしました。以下では、AWSがクラウド環境での効果的な運用のために推奨している、いくつかのベストプラクティスについて掘り下げて解説してまいります。
運用をコードとして実行する
AWSの運用は、Infrastructure as Code(IaC)の概念を取り入れ、AWS CloudFormationやTerraformなどのツールを使用して、インフラストラクチャをコードとして管理することが推奨されています。
IaCを導入することで、インフラの構成変更や異なる環境への移行が容易になり、人的ミスを削減でき、さらには変更履歴の追跡まで行うことができます。
小規模かつ可逆的な変更を頻繁に行う
システム変更は、大規模な変更を一度に行うのではなく、小規模で可逆的な変更を頻繁に行うことが推奨されています。これにより一回ごとの変更の影響範囲を小さく抑まるため、問題が発生した場合の影響を最小限に抑えることができます。さらに、変更を細かく分けることで、変更内容の把握が容易になり、問題発生時の切り分けが容易になります。
運用手順を頻繁に改善する
運用手順は、一度作成したら終わりではなく、継続的に改善していく必要があります。運用中に発生した問題点や改善点を洗い出し、運用手順を定期的に見直しましょう。運用手順を改善することで、運用効率を高め、人的ミスを減らすことができます。
また、続々と新サービスが提供されているAWSにおいては新しい技術やツールを導入することで、運用手順をさらに効率化できる可能性があります。改善された運用手順は、文書化し、チーム内で共有することで、作業の均一化が図れるため運用品質の向上につながります。
障害を予想する
システム運用においては、障害の発生を前提とした対策を講じる必要があります。障害発生時の影響を最小限に抑えるために、障害シナリオを想定し、それに対する対策を事前に準備しておきましょう。
例えば、インスタンスの故障、ネットワーク障害、データベース障害など、様々な障害を想定し、それぞれの障害に対する復旧手順を明確化します。まずは、AWSのGameDayやChaos Engineeringの手法を取り入れることから取り掛かってみても良いでしょう。
運用上の障害すべてから学ぶ
システム運用中に発生した障害は、単なるトラブルとして処理するのではなく、システムの改善機会として次に繋げることが重要です。仮に障害が発生した際は、原因を徹底的に究明し、再発防止策を講じることが欠かせません。
障害発生時の状況、原因、対応策を記録し、チーム内で共有しましょう。障害分析を通じて、システムの脆弱性や運用上の課題を特定することができます。
参照:運用上の優秀性|AWS
自動化で効率化する方法
AWS Systems Managerを活用したサーバー運用の自動化
AWS Systems Managerは、AWS環境におけるサーバー運用を自動化するためのツールです。パッチ適用、構成管理、インベントリ管理、オペレーションの実行など、様々なタスクを自動化できます。
自動化の例
・State Manager機能を利用して、インスタンスの構成を維持し、自動的に設定を適用
・Systems ManagerのRun Command機能を利用することで、複数のインスタンスに対して、スクリプトやコマンドを同時に実行する
・Maintenance Windows機能を利用して、メンテナンス作業をスケジュール化し、システムの可用性を維持
このように、Systems Managerを活用することで、複雑な作業を自動化できます。そのため人的ミスや、運用負荷を軽減し、運用効率の向上が期待できます。
AWS運用のよくあるトラブル
コスト管理
AWSの利用料金は、サービスや利用状況によって変動するため「想定外の利用料が発生してしまった。」このようなお声は少なくありません。このような、コスト管理のトラブルを避けるためにAWS Cost Explorerなどのツールを利用して、AWSの利用料金を可視化し、コストを分析しましょう。
コスト管理の例
・AWS Budgetsを利用して、予算を設定し予算超過を検知するように設定
・使用していないリソースを定期的に削除し、無駄なコストを削減
・コストの可視化と分析のためリソースごとにタグ付けを行う
・リザーブドインスタンスやSavingsPlansを活用することで、長期的なコスト削減を図る
セキュリティ対策
AWS運用を始めたてのユーザーにありがちなケースとして、本来アクセスすべきではないユーザーがリソースにアクセスできてしまうケースが挙げられます。特に「とりあえず管理者権限を付与」といった運用は、情報漏洩やリソースの誤削除などの重大なインシデントにつながる可能性があります。
そのため、IAM (Identity and Access Management)を利用して、ユーザーやグループごとに適切なアクセス権限を付与しましょう。
その他 AWSにおけるセキュリティ対策
・AWS KMS (Key Management Service)を利用して、データを暗号化
・AWS WAF (Web Application Firewall) を利用して、Webアプリケーションを保護
・セキュリティグループやネットワークACLを利用して、ネットワークアクセスを制限する
▼ AWSのセキュリティ対策について解説した記事はコチラ
AWSのセキュリティ対策とは?|最低限実施したいサービスとベストプラクティス
さいごに
運用はあれもこれもやっておいた方が良いのでは…となりがちです。AWSでは、自動化できることがたくさんあるため悩んでしまいます。ただ、運用項目を増やしすぎて本来のWebサイト自体の制作や改善が遅くなってしまっては意味がありません。
まずは、何かあっても最悪は復元できるように「バックアップ」を確実に取得すること。これだけは自動化して確実に行います。できれば、バックアップからの復元ができることまでは確認をしておくことが大切です。あわせて信頼を失わないように「監視」と「セキュリティ対策」を行ってみてはいかがでしょうか。
監修者:クロジカサーバー管理編集部
コーポレートサイト向けクラウドサーバーの構築・運用保守を行うサービス「クロジカサーバー管理」を提供。上場企業や大学、地方自治体など、セキュリティ対策を必要とするコーポレートサイトで250社以上の実績があります。当社の運用実績を踏まえたクラウドサーバー運用のノウハウをお届けします。
コーポレートサイトをクラウドでセキュアに
無料ではじめるサーバー管理
クロジカガイドブック
- コーポレートサイト構築・運用の課題を解決
- クロジカサーバー管理の主な機能
- 導入事例
- 導入までの流れ