「Nextcloud 環境の構築を通じて AWS での環境構築を体験する」 シリーズの記事は下記からどうぞ。
- 【第 1 回】EC2 と RDS を利用した Nextcloud 環境の構築
- 【第 2 回】ElastiCache サービスの導入
- 【第 3 回】EFS ファイルサーバーへの移行
- 【第 4 回】ALB を利用したサーバー負荷分散、可用性向上に向けた取り組み
- 【第 5 回】分散した EC2 インスタンスのログの集約
- 【第 6 回】Cron の外部実行とメール送信の追加
- 【第 7 回】AutoScaling の導入
はじめに
今回は、前回記事 で作成した環境構成から キャッシュサービスである Redis を分離してみます。
この Nextcloud 環境において、 Redis は次の役割を担っております。
- セッション情報の保持
- ファイルロック情報の保持
このサービスを分離することで、将来的に EC2 サーバーをロードバランサ等を利用して複数台運用としても、上記情報を Web サーバーで共有することができるようになります。
前回の記事で環境を構築して Nextcloud の環境を少し理解されている方であれば、「あれ、他にも分離しなきゃいけないやつあるじゃん。」と気が付くと思われますが、それは次回の記事に回します。
今回構築する Nextcloud on AWS 環境
今回追加で利用する AWS サービス
サービス名 | 役割 |
---|---|
Amazon ElastiCache | フルマネジメントのインメモリデータストアサービス。Redis と Memcached が利用できます。 |
変更手順
ElastiCache サービスを起動する
-
サービスを起動するための設定情報をいくつか設定します。
まず、クラスターエンジンは「Redis」を選択します。クラスタモードは今回は利用しないのでチェックされていたら外します。
引き続き、Redis の設定です。以下のように設定します。 -
Redis の詳細設定は下記のように設定します。
-
ステータスが "available" となったら作成完了です。お待たせしました!
"▼" をクリックすると作成した ElastiCache サービスの詳細情報を確認できます。このうち「プライマリエンドポイント」がこのサービスへのアクセスポイントとなりますので控えておきます。
Nextcloud の設定変更
前回作成した Nextcloud サービスの一部を設定変更して、Nextcloud で今回作成した ElastiCache が利用できるようにします。
Nextcloud サーバーに SSH 接続して作業を行います。
サービスの一時停止
設定変更中に不用意にアクセス等が行われないように、一部サービスを停止しておきます。
-
Nextcloud バックグラウンドジョブの停止。
sudo mv /etc/cron.d/nextcloud-cron-php /etc/cron.d/.nextcloud-cron-php
-
Nginx の停止。
sudo systemctl stop nginx
-
PHP-FPM の停止。
sudo systemctl stop php-fpm
-
このサーバーで動いている Redis の停止。今後使わないので自動起動も停止。
sudo systemctl stop redis sudo systemctl disable redis
設定ファイルの変更
作成した ElastiCache を利用できるようにするための設定を投入します。
-
Nextcloud 設定ファイルの変更。
sudo cp -pi /var/www/html/nextcloud/config/config.php{,.orig2} sudo vi /var/www/html/nextcloud/config/config.php ※以下の diff 結果のように設定行を追加します。 sudo diff /var/www/html/nextcloud/config/config.php.orig2 /var/www/html/nextcloud/config/config.php 27c27 < 'host' => 'localhost', --- > 'host' => '【作成した ElastiCache のアクセスポイント】',
-
PHP-FPM 設定ファイルの変更。
sudo cp -pi /etc/php-fpm.d/www.conf{,.orig3} sudo vi /etc/php-fpm.d/www.conf ※以下の diff 結果のように設定行を追加します。 diff /etc/php-fpm.d/www.conf.orig2 /etc/php-fpm.d/www.conf 438c438 < php_value[session.save_path] = "tcp://localhost:6379" --- > php_value[session.save_path] = "tcp://【作成した ElastiCache のアクセスポイント】:6379"
サービスの起動
一時停止しているサービスを起動します。
-
PHP-FPM の起動。
sudo systemctl start php-fpm
-
Nginx の起動。
sudo systemctl start nginx
-
Nextcloud バックグラウンドジョブの起動。
sudo mv /etc/cron.d/.nextcloud-cron-php /etc/cron.d/nextcloud-cron-php
Nextcloud の動作確認
Nextcloud が動作しているか確認します。ログインしてログアウトできれば問題ないです。
お疲れさまでした! これですべての設定が完了です。
あとがき
今回の記事を起こすにあたって、初めて ElastiCache サービスを利用してみたのですが (過去、客先提案で ElastiCache を利用した構成を提案したことあるのですが、使ったことはなかったのは内緒で)、けっこうあっさり起動してしまいました。EC2 インスタンス作るのに慣れている方はほぼ問題なくサービス起動できると思います。
前回に比較して今回は説明少なめでしたが、それだけ簡単に ElastiCache が導入できると理解いただければと思います。
当然ですが、このサービスを使わないで、EC2 で Redis サーバーを追加で立てて運用することも可能です。ですが、フルマネジメントで普段は面倒見なくてもいいように、あえて ElastiCache サービスを利用します。
で、
前回の記事で環境を構築して Nextcloud の環境を少し理解されている方であれば、「あれ、他にも分離しなきゃいけないやつあるじゃん。」と気が付くと思われますが、
ですが、これは、 EC2 サーバーに保存しているデータファイル群です。これも複数の Nextcloud サーバーで同じものが見れなければいけません。
ということで、次回はこれを分離してみます。