内容
・目標
・公式サイト
・使用できるサービス
・実行環境
・目指す構成
・VPCの作成
・EC2起動設定
・RDS作成
・ELB作成
・WordPressの初期設定
・WordPressがインストールされたEC2のAMI(イメージ)を作成して2個目のEC2を作成
・2個目のEC2をELBに登録
・RDSのDBインスタンスをマルチAZ化
・EC2の可用性の確認
・RDSインスタンスのフェイルオーバーを行い、全体の可用性を確認
・撤収!!!
・結果
目標
AWSに関しての基礎技術の修得を目標に再びWordPressをデプロイしていきます!
ドメイン取得から期間が経っていないため、今回ドメインは使用できず、SSLの設定もしていません。ドメインなどの情報に関しては最下部にリンクがあります。
公式サイト:
今回はこちら↓↓↓
CLI中心で設定する場合↓↓↓
使用できるサービス
EC2,RDS,ELB,VPC,(´▽`)
実行環境
IAMユーザー(全権限付与済み。)
目指す構成
VPCの作成
EC2起動設定
Amazon Linux2023ではなく、AmazonLinux2を選択する。
今回はSSH接続をしないため、キー作成なし。
自動的にWordPressがインストールされ、立ち上がるスクリプトを設定
WordPress、PHP、mySQL、Apacheがインストールされますね。(*‘∀‘)綺麗なコードですね。
#!/bin/bash
yum -y update
yum -y install php httpd mysql
PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
while [ ${PHP_VERSION} -ne 7 ]
do
amazon-linux-extras install php7.4 -y
PHP_VERSION=`php -v | head -n 1 | awk '{print $2}' | awk -F "." '{print $1}'`
done
yum -y install php-mbstring php-xml
wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
cp -r /tmp/wordpress/* /var/www/html/
chown apache:apache -R /var/www/html
systemctl enable httpd.service
systemctl start httpd.service
パブリックIPアドレスをブラウザにコピペすることで。。。
でけた!
ここから参考として、EC2インスタンスに接続する方法
接続ボタンから
ブラウザ越しに接続完了
RDS作成
セキュリティグループONセキュリティーグループに設定する。
つまり先程作成したEC2からの接続を許可する。
アウトバウンドはこのまま。
構成図を確認し、AZは2つ。
RDSを置くサブネットは2.0と3.0を選択してグループを作成する。
ELB作成
EC2の画面からELBを作成する。
最初にセキュリティグループを作成していく。
何かする時(リソース作成、ロール)はまずセキュリティグループを先に作成!φ(..)メモメモ
英語で注意書きがありますね(p_-)
ソースが0.0.0.0/0または::/0のルールは、すべてのIPアドレスがインスタンスにアクセスできるようにします。セキュリティグループのルールを、既知のIPアドレスからのアクセスのみを許可するように設定することを推奨します。」
・セキュリティグループ(無料)
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-security-groups.html
プロトコルに応じた接続に限定できるもの。
・ネットワークACL(無料)
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html
IPアドレスの範囲指定などで、特定のアドレスを除いては通信を拒否することができる。
・AWS Shield(一部有料)
https://aws.amazon.com/jp/shield/features/
特定のアドレスを含めてDDoS攻撃などを(L3,4,7)、ACLの技術を活用して緩和、モニタリングする。
・AWS WAF(ルールによって有料)
https://aws.amazon.com/jp/waf/features/
より高度なDB侵入や、セッションの乗っ取り、保護されていない通信の改ざんなどから保護
・AWS Firewall Manager(有料)
https://aws.amazon.com/jp/firewall-manager/features/
はい。ほぼ全部の機能を果たしていらっしゃいます。ACLだけ別に自分で設定できるみたいですね。
AWSの責任共有モデルであります通り、ここをしっかり押さえないとですね!
つまり追求したい場合は、用途やセキュリティレベルに応じて、ユーザーが決めないといけない所ですねφ(..)メモメモ
次いきやす
ターゲットグループ(接続先)の作成
ELBとEC2を紐づけるために作成するもの。
次の画像のターゲットグループを作成するなでの「ヘルスチェック」とは、単なる死活監視ではなく、オートスケーリングのトリガーとなるもの。
このヘルスチェックのパスは、手が込んでいるのか調べても出てこないw
通信が途絶えた場合に、ELBが働く設定にする。といったところは確保できているようなので、次へ進みます。
紐づけたいEC2にチェックを付けて、「保留中として以下を含める」をクリック。
デフォルトアクションの「keiji-tg」をクリックし、ロードバランサーから見てどのサーバーに流しているか確認できる。
WordPressの初期設定
RDSのインスタンスについて確認↓
エンドポイントをコピーします。
エンドポイントは、データベースのホスト名にペースト。
その他必要事項を確認しながら入力して送信する。
インストールの実行をしたら、次の画面に遷移する。
必要事項を入力し、他の媒体などにパスを記録します。WordPressの管理画面に入るためです!
いけましたね!|д゚)
※本記事の最後に、SSL証明書(HTTPS通信)の取得方法、Rout53でのドメイン取得方法についての記事を添付しています。
WordPressがインストールされたEC2のAMI(イメージ)を作成して2個目のEC2を作成
※「再起動しない」とあるが、これをチェックすることで、イメージを作る側のインスタンスを再起動せずに、イメージを作成することができる。ハンズオンとして今回は実施しているため、今回は、チェックなしで設定する。
あとはデフォルト。
蛇足:私の場合だけかもしれませんが、イメージ作成完了のポップアップが出ませんでした(^^;なかなかイメージ作成されないなと待っていたのですが、AMIのコンソールを覗くと完成していましたw
AMIインスタンスを起動
AMIは作成済みなのでここでは作成しません。ブランクで進みます。
元々のEC2では、ユーザーデータに各インストールを行うよう入力したので、ここでは高度な設定は行わない。
2個目のEC2をELBに登録
RDSのDBインスタンスをマルチAZ化
RDSに移動
該当のDBを選択した後、赤枠の変更をクリックする。
(参考)アクションから「マルチAZ配置への変換」を選択することもできるみたいですね。
「スタンバイインスタンスを作成する。」にチェックを付け、スクロールして「続行」をクリックします。
「すぐに適用」を選択して「DBインスタンスを変更」をクリックする。
EC2の可用性の確認
稼働状況に異常がないことを確認
EC2の画面からELBの詳細を見ます。
ELBを選択し、DNS名をコピーしてブラウザからWordPressを開けるか確認します。
通常どおり見えますね。
見えていますね。
ここでEC2(keiji-web1)を開始して、元に戻します。
RDSインスタンスのフェイルオーバーを行い、全体の可用性を確認
※フェイルオーバーとは
https://repost.aws/ja/knowledge-center/rds-fail-over
マルチ AZ DB インスタンスで計画的または計画外の停止が発生した場合、Amazon RDS は、別のアベイラビリティーゾーンのスタンバイレプリカまたはセカンダリインスタンスに自動的に切り替わること。
⇒つまり、この検証は使っている側のRDSを停めて、可用性維持のために別に置いているDBが稼働し、異常が見られるか検証するということ。
早速、現状確認から進めます。1aで稼働しています。
RDSのコンソールからイベントをクリックし、これまでのイベントを確認します。
「作成」した系しかありませんね。
ばっちり稼働中ですね。
「再起動」をかけます。(35秒でフェイルオーバーされる仕様)
ほんとに復帰するのが早いです。1cでの稼働に代わっています。
撤収!!!
作成したリソースを消して次の学習に備えます(。-`ω-)
RDS削除
※スナップショットは作成しません。入力欄に「delete me」と入力しましょう。
結果
勉強になりました。セキュリティに関すること、冗長構成、一番は手を動かして学習できたことでしょうか。継続します!
以下、ドメインなどの参考サイトです。
AWSでのドメイン取得とSSL証明書発行についての全般理解記事
https://qiita.com/nakanishi03/items/3a514026acc7abe25977
公式のCertificate Manager(SSL発行)に関する記事
https://aws.amazon.com/jp/certificate-manager/pricing/
公式のRoute 53(ドメイン管理)に関する記事
https://aws.amazon.com/jp/route53/
では!