Amazon Ec2

aws ec2でlsyncdを使ってサーバ間でファイル同期してみた

皆さんこんにちは。
暖房全開のヤマオカです。

今回は、lsyncdを使って、
冗長化された別のAZにいるec2のサーバ間でファイル同期させてみました。

今回の要件

今回はすでにec2が構築済みので行います。
そして私はcentos7で構築しておりますので、所有者を変更する際にはご自身の環境に合わせてください。

同期ディレクトリの作成

primaryの設定

今回同期したいディレクトリを作成していきます。

mkdir /var/www/html/test

primaryの場合はディレクトリの作成だけでひとまずOKです。

secondaryの設定

secondaryの場合はディレクトリ作成と同時に所有者も変更する必要があります。

mkdir /var/www/html/test
chown centos:centos /var/www/html/test

公開鍵の鍵の作成と設定

primaryで公開鍵を作成

//公開鍵の作成コマンド
$ssh-keygen -t rsa

Generating public/private rsa key pair.

//keyファイルのパスを指定
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.

//パスワードの設定
Enter passphrase (empty for no passphrase):

//パスワードの再確認
Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

The key's randomart image is:

いったんここはenterで大丈夫です。passphraseも入力せずに進んでいきます。

それでは作成した公開鍵をコピーして、secondaryに貼り付けていきます。catでファイルを開いてコピーしてください。

#cat /root/.ssh/id_rsa.pub

secondaryに公開鍵をコピー

ではsecondaryに先ほどprimaryで作成した鍵をつけたします。ここで私は間違えてkeypairのauthorized_keysを上書きしたので、後にpcからsshしようとしたらできなくなって1度ec2を作り直すことになりました。今回は追記という形で公開鍵を付け足します。

#vim /home/centos/.ssh/authorized_keys

サーバ間で接続できるのか確認

では、primaryからsecondaryに接続できるようになったか確認してみましょう。

#ssh centos@{secondaryのプライベートIP}

ここでうまく接続できて、secondaryにsshできたらひとまず成功です。

lsyncdのインストールと設定

次にlsyncdをprimaryにインストールしていきましょう。

lsyncdのインストール

#yum install lsyncd

EPELのリポジトリが入っていない場合は先にレポジトリのインストールをしてくださいね。

lsyncdの設定

installが終了したら設定ファイルの中身を書いていきます。

#vim /etc/lsyncd.conf

//lsyncdの基本的な設定
settings{
    logfile = "/var/log/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    statusInterval = 1,
    insist         = 1,
}
//lsyncdで行いたい動作
sync{
    default.rsync,
    source="/var/www/html/test",
    target="centos@{secondaryのプライベートIP}:/var/www/html/test",
    rsync = {
        archive = true,
        links = true,
        update = true,
        verbose = false
    }
}

確認

ここで一度記述があっているのかどうかlsyncdを起動させて確認しましょう。

#systemctl start lsyncd
#systemctl enable lsyncd

この際にうまく起動できなかったらログを確認してみてください。

journalctl -xef

エラーもうまく解消できたら完成です。
primaryでファイル、フォルダを作成してみてそれがsecondaryにも同期されていたら成功になります。

まとめ

今回公開鍵認証のところで間違えてもともとあった公開鍵を消してしまうという凡ミスを犯してしまいましたが、何とかできました。ec2を使ってサーバ間を同期する際にはぜひ参考にしてみてください。

参考

https://norm-nois.com/blog/archives/4784

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA