6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EFS ファイルサーバーへの移行 - Nextcloud 環境の構築を通じて AWS での環境構築を体験する③

Last updated at Posted at 2020-01-13

「Nextcloud 環境の構築を通じて AWS での環境構築を体験する」 シリーズの記事は下記からどうぞ。

はじめに

今回は、前回記事 で作成した環境構成から Nextcloud に保管されているファイル群を Amazon Elastic File System (EFS) を利用した外部のファイルサーバーに移してみます。
これを分離することで、将来的に EC2 サーバーをロードバランサ等を利用して複数台運用としても、Nextcloud 保管ファイルを Web サーバーで共有することができるようになります。

# EFS ってなかなか 東京リージョンに下りてこなかったので、追加が発表されたときには「いよいよ!」と歓喜した思い出 w

今回構築する Nextcloud on AWS 環境

次のような構成となります。EC2 から ファイルサーバーをマウントする形となります。
image.png

今回追加で利用する AWS サービス

サービス名 役割
Amazon Elastic File System (EFS) シンプルでスケーラブル、かつ伸縮自在な完全マネージド型の NFS ファイルシステム。

変更手順

EFS サービスを起動する

  1. AWS マネジメントコンソールにログインし、EFS サービスを選択します。「作成」をクリックします。
    image.png

  2. サービスを起動するための設定情報をいくつか設定します。
    ネットワークアクセスの設定です。
    まず、「 VPC 」は、EFS をどの VPC でアクセスできるようにするかを選択します。EC2 と同じ VPC を選択してください。デフォルト VPC でも問題ありません。
    次にマウントターゲットの作成です。マウントターゲットは EC2 インスタンスから EFS に接続するための接続先となります。現時点では、EC2 を作成しているアベイラビリティゾーンのみあれば問題ありませんが、将来的にどこのアベイラビリティゾーンの EC2 でも接続できるようにするため、この時点ですべてのアベイラビリティゾーンの EC2 インスタンスに接続できるようにしてしまいます。表示されているすべてのアベイラビリティゾーンについてチェックをして有効にします。
    そのほかの項目は以下のように設定し、「次のステップ」をクリックします。

    項目 内容
    サブネット EFS のマウントポイントをどのサブネットで作成するかを選択します。今回は EC2 と接続することができれば問題ないので、プライベートサブネットで OK です。
    セキュリティグループ マウントターゲットに関連付けるセキュリティグループを設定します。Nextcloud EC2 に設定されているセキュリティグループを追加して、このセキュリティグループを持つ EC2 と疎通できるようにします。

    image.png

  3. ファイルシステムの設定です。
    以下のように設定し、「次のステップ」をクリックします。

    項目 内容
    タグの追加 作成する EFS にタグを追加します。Name キーとしてこの EFS の名前を最低限追加しておきます。その他必要なタグがあれば追加しておきます。
    ライフサイクル管理の有効化 ここでは、「最後のアクセスから 30 日」を選択し、30 日アクセスされなかったファイルを移動するようにします。ライフサイクル管理は最近追加された機能で、 EFS に保管されているファイルを自動的に EFS 低頻度アクセスストレージクラスに移動する機能です。EFS 低頻度アクセスストレージクラスは S3 の低頻度アクセスタイプみたいな感じで、容量当たりの利用料金が安い代わりに取り出しにコストがかかるやつです。
    スループットモードの選択 「バースト」を選択します。要件などでより高いスループットが必要でなければこれで問題ありません。
    パフォーマンスモードの選択 「汎用」を選択します。
    暗号化の有効化 チェックがついていたら外します。ファイルシステムの暗号化をするかどうかを選択するもので、セキュリティ要件などで暗号化が必要であればチェックします。
    image.png
  4. これまでの設定内容を確認します。問題なければ「ファイルシステムの作成」をクリックします。
    image.png

  5. EFS ファイルシステムの作成が開始されます。マウントターゲットの状態が「作成中」の場合はまだ使えないので気長に待ちます。
    image.png

  6. ブラウザ再読み込みをしてファイルシステムの状態、マウントターゲットの状態が「利用可能」となったら作成完了です。
    「ファイルシステムへのアクセス」の「DNS 名」がこの EFS へのアクセスポイントとなりますので確認しておきます。
    この後、 Nextcloud EC2 サーバーにこれをマウントするのですが、この手順は「 Amazon EC2 のマウント手順 (ローカル VPC から)」のリンクに親切にも記載されていますのでこれを参照して設定していきます。
    image.png

EC2 サーバーにEFS サービスをマウント

これまでで作成した EC2 の Nextcloud サーバーにこの EFS をマウントして、EC2 に保管されている Nextcloud 保管ファイルをここに移動します。

Nextcloud サーバーに SSH 接続して作業を行います。

サービスの一時停止

設定変更中に不用意にアクセス等が行われないように、一部サービスを停止しておきます。

  1. Nextcloud バックグラウンドジョブの停止。

    sudo mv /etc/cron.d/nextcloud-cron-php /etc/cron.d/.nextcloud-cron-php
    
  2. Nginx の停止。

    sudo systemctl stop nginx
    
  3. PHP-FPM の停止。

    sudo systemctl stop php-fpm
    

既存の Nextcloud 保管ファイルを退避

既存の Nextcloud データファイルが保管されているディレクトリを一時退避します。

  1. データ保管ディレクトリの名前を変更。

    sudo -i
    mv /DATA /DATA_back
    exit
    

EFS を接続(マウント)

作成した EFS をこのサーバーのファイルシステムとして利用できるようにマウントを行います。

  1. マウント先ディレクトリの作成。

    sudo mkdir /DATA
    
  2. 作成したディレクトリをマウントポイントとして EFS をマウント。

    sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 【EFS の DNS 名】:/ /DATA
    
  3. 接続されているか確認。

    df -Th
    

    ※以下の表示を確認します。

    項目 内容
    ファイルシス 【EFS の DNS 名】:/
    タイプ nfs4
    マウント位置 /DATA
  4. サーバーが再起動しても自動的にマウントするように設定追加。

    sudo echo "【EFS の DNS 名】:/ /DATA nfs4 defaults 0 0" >> /etc/fstab
    
  5. 設定が追加されているか確認。

    cat /etc/fstab
    

    ※「【EFS の DNS 名】:/ /DATA nfs4 defaults 0 0」の 1 行が追加されていることを確認します。
    ※指定を誤っているとサーバーが起動しなくなる可能性があるので、確認はしっかり行ってください。

Nextcloud 保管ファイルを退避先からコピー

マウントした EFS に退避していた Nextcloud 保管ファイルをコピーして復元します。

  1. 先に名前変更したディレクトリの中身を EFS にコピー。

    sudo cp -piR /DATA_backup/. /DATA
    

    ※隠しファイルもあるため、コピー元の指定には注意してください。

サービスの起動

一時停止しているサービスを起動します。

  1. PHP-FPM の起動。

    sudo systemctl start php-fpm
    
  2. Nginx の起動。

    sudo systemctl start nginx
    
  3. Nextcloud バックグラウンドジョブの起動。

    sudo mv /etc/cron.d/.nextcloud-cron-php /etc/cron.d/nextcloud-cron-php
    

Nextcloud の動作確認

Nextcloud が動作しているか確認します。Nextcloud にログインしてファイルアップロード、ダウンロード等を試してみます。

お疲れさまでした! これですべての設定が完了です。

あとがき

EFS 東京リージョン追加に歓喜した割には、なかなか利用する機会に恵まれず、前回同様、今回の記事を起こすにあたって、初めて EFS を利用してみたのですが、こちらもけっこうあっさり起動、マウントまで完了ました。
当然ですが、このサービスを使わないで、EC2 で NFS ファイルサーバーを追加で立てて運用することも可能です。ですが、フルマネジメントで保管領域を気にしたり EC2 障害などを普段は面倒見なくてもいいように、あえて EFS サービスを利用します。

ここまでで、次回に向けての準備はできましたので、次回は EC2 を複数にし、ロードバランサを追加することで、Nextcloud の可用性を高めていきます。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?