皆さんこんにちは。
暖房全開のヤマオカです。
今回は、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