2そどurakuの作ったもの、作ろうとしているもの、作ろうとしていたものの近況。向けてもテーマの編集やアップロードした画像、各種ファイルの扱いなどが面倒でした。利用すると簡単に「複数サーバーで共用のドキュメントルート」を実現する事が出来ます。System)はマネージドなNFSサービスで複数のEC2インスタンスからマウント・アクセスする事が可能です。以下手順AWSマネジメントコンソールにログイン。新しいVPCを作ります。作成したVPCに新しいサブネットを2つ作ります。AZにサブネットを作成します。インターネットゲートウェイを作成します。作成したインターネットゲートウェイをVPCにアタッチします。作成したVPCのデフォルトルートテーブルにルーティングを追加。先ほど作成したインターネットゲートウェイに向けます。Webアクセス用のセキュリティグループを追加。VPCの選択ミスに注意。SSH/HTTP/HTTPSをまとめて許可。SSHは本来はセキュリティグループを分けてより適切に制御した方が好ましいです。Webサーバ用のEC2インスタンスを起動していく。インスタンスタイプの選択。VPCの選択を忘れない事。サブネットはとりあえず1aの方を選択する。自動割り当てパブリックIPは有効にする。セキュリティグループは「既存のセキュリティグループ」からWeb用に作成した物を適用。キーペアが無ければ新しく作成して手元にダウンロードする。起動したらダウンロードしたキーペアを鍵ファイルにSSH接続。PHP関連とApacheを導入。インスタンスを作成する。RDSの画面からMySQLを起動していく。マルチAZ設定を有効化。これでDB側が複数AZに冗長化されます。DB名やユーザー、パスワードなどを適当に設定。作成したVPCを選択。DBサブネットグループは新規作成。DBパラメータグループ、オプショングループはデフォルトのまま。本来は別で作成しておいた方がいいです。後から設定を変更する際にデフォルトのままだと面倒です。(mysql-serverではない)をインストール。パッケージとしてはmariadbが降ってきます。RDSのエンドポイント名をメモ。mysqlコマンドからRDSに接続が出来る事を確認。ドキュメントルート冗長化の為のEFSを起動していきます。作成したVPCとサブネットを選択。セキュリティグループはとりあえずデフォルトのまま。パフォーマンスモードはとりあえずそのまま。EFSが利用可能になるのを待ちます。EFS用のセキュリティグループを作成。EFS用セキュリティグループにWeb用セキュリティグループからの全許可を追加して保存。EFSインスタンスの画面からマウント方法を確認する。必要なEFSマウントヘルパーを導入する。amazon-efs-utils現在のVPCの設定ではDNS名でアクセスできないという警告が出ているので対応する。VPCの設定で「DNSホスト名の編集」を「はい」に変更。EFSにDNS名でアクセスできるようになります。先ほどのEFS接続方法がより具体的な内容に変化している。EFSのセキュリティグループの設定を先ほど作成したEFS用のセキュリティグループに変更。これでWebサーバからのNFSアクセスが通るようになります。手順通りにコマンドを実行しEFSがマウントできたことを確認。今回は手動で叩いていますが、EC2のユーザーデータに仕込んでおくと起動時にマウントしてくれるようになります。EC2のDNS名で接続できることを確認。EFSマウント配下にドキュメントルート用のディレクトリを作成、Apacheのドキュメントルート設定もそこを参照するように変更。ドキュメントルートにしています。Apacheを再起動して反映。閲覧テスト用のファイルをドキュメントルートに配置。PHP設定変更後もApache再起動を実施。閲覧できることを確認。WordPressをセットアップしていきます。tar.gzでのアーカイブをwgetでダウンロード。アーカイブをドキュメントルート配下に展開。この際にEFSは少しディスクI/Oが遅い事が分かります。CloudFrontなどでCDNキャッシュする事も検討した方がいいかもしれません。ファイル展開後はファイルの権限をApacheのものに変更。先ほど作成したindex.htmlとinfo.phpは削除しておきます。WebブラウザでアクセスしWordPressのセットアップを進める。DBの向き先はRDSのエンドポイント。その他WordPressのID・パスワードは適当に設定しメモしておく。現在起動しているEC2インスタンスのAMI(マシンイメージ)を取得。外部からのアクセスが有る状況でもないので「再起動しない」オプションは有効でOK。作成したAMIから2つ目のEC2インスタンスを起動していく。サブネットはAZ冗長化の為に1cの方を選択。マシン起動後にSSHログイン、先に1aで起動している方と同様にEFSマウント。先ほども書いたようにユーザーデータにしておくと最初からマウントされた状態になるかと思います。1aで起動している方のDNS名、同1cのDNS名でどちらもWordPressサイトが閲覧できることを確認。テーマを切り替えてみます。片方にも反映されました。画像アップロードを含む記事を作成してみます。どちらのDNS名でも画像が見られることを確認。これで冗長化を実現できている事が分かります。同期用の設定などを組まなくていいのは楽ですね。最後にロードバランサ―を立てます。Balancerを使います。既存のサブネットを登録。Web用のセキュリティグループを設定。本来このセキュリティグループにSSH許可は不要なのでALB用に別でセキュリティグループを作成した方がいいです。ターゲットグループには起動済みのEC2インスタンス2つを追加。作成したロードバランサーのDNS名をメモ。ALBのDNS名でWordPressサイトが閲覧できることを確認。以上でWebサーバー、DBサーバーが冗長化されただけでなく、コンテンツの同期も実現した環境が完成しました。ここまで所要時間は大体1時間強~2時間ほどでした。後は以下を検討していけばいいと思います。セッション維持:今回セッション維持は考えていません。WordPressに記事を投稿する際は起動している適当なインスタンスに直接アクセスするなど適当な方法を使います。オートスケーリング:AMI作成+ユーザーデータによるEFSマウント設定でオートスケーリングさせます。ファイルの同期はEFSをマウントするだけで完了します。セキュリティグループ周り:もうちょっと適切な内容で整理した方がいいです。Apahce、PHPの設定、MySQLの設定:今回は何も触っていないのでもちろん要チューニングですCloudFront導入:ファイルアクセスのレスポンスが気になるようであれば導入。実際どの程度の負荷まで耐えられるかは未知数。WAFを追加する事が出来ます。あとはEFSを利用したドキュメントルートがどの程度のI/Oまで耐えられるかですね。読み込みなら問題ない気がしていますが、これを実運用するならもちろん負荷テストは必要になるかと思います。場合によってはNFSからEC2ローカルに同期するような構成も検討が必要でしょう。以上、EFSでWordPressを冗長化してみた記事でした。8月より利用できるようになっています。正式版のリリースおめでとうございます。様々な部分で変更が有る物になっています。サポート期間は2年間となり、具体的にはセキュリティ修正の提供期間が2020年6月30日までとなります。7月6日現在既に2年間を切っている状態となります。最新バージョンに対するセキュリティ更新とコンテナイメージの提供を継続します。Linuxも加わる事になります。Linuxアップデートより重いものになります。関係者の皆様におかれましてはお早目の移行を検討いただけるよう何卒。AMIと言っていますが別に2もAMIで公開されているわけですし。無印のサポート期間が、2020年12月31日まで延長される事が発表されました。6カ月間だけでは有りますが猶予が伸びる事になります。Bloghttps://aws.amazon.com/jp/blogs/aws/update-on-amazon-linux-ami-end-of-life/また、上記のリンク先にも記載されているように一部のパッケージでは重要なセキュリティ修正のみに関して2023年6月30日まで保守されるようです。こちらはあくまで限定的な保守となるため基本的には2020年内がサポート期限という形になります。この記事には特に数値やコードを提示したうえでの考察などは無いです。いうパラメータが有ります。知られた設定としては以下のような物が有るかと思います。前)はこれがスワップを極力させない設定だった。今これを使うとスワップが無効化されOOMが出まくるというような話を聞く。今の時代におけるvm.swappinessの最低値。一般(どこの?)に言われる現実的な下限値。DataBase運用時の推奨値も10。頃の常識のようにも感じますし、サーバーという(一般的には)ピーク性能よりも安定稼働を目指す環境のうえではギリギリになってスワップを始めるよりはある程度事前にスワップを始めた方が安全のような気がします。カーネルのソースコードを読んだわけでもない完全な感覚値ですが、以下のような感じの方がいいのかもしれません。使うHDDならともかく、サーバーのストレージも(特にクラウドでは)SSDが普通という時代になり、以前よりも「極力スワップするべきではない!」という感じでもないかと思います。以外の設定例を見かけないので、この辺誰か詳しい人に考察してほしいなぁという所。Portalhttps://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-tunablesLinuxのswappinessは本当にスワップしにくさを設定できるのかhttps://qiita.com/rarul/items/a96b61b1fb535dea5fe3※本記事よりこちらを読んだ方がよっぽど詳しいです。