基本的にELB配下の場合にファイルを共有させるときは、
インスタンスをコピーしてELBにつけてあげるっていうやり方が簡単だったりする。
けど他の人と協力するとか、サーバーを複数用意している場合だと外したり付けたりとか面倒だったり。
ってことでだったら一つマスターサーバーを用意して、
そこを定期的に取りにいくって感じにすると楽になるのではないかと。
オートスケーリングをする際にファイルがちょっと古いAMIからでもrsyncで新しいファイルになるわけだし。
ということで今日はrsyncの設定のお話でも。
とりあえずやりたいこととしては上記のような感じ。
devはとりあえずテスト環境。
stgにファイルを入れるとwww配下のインスタンスたちがcronでファイルを同期する。
ってな感じ。
stgのファイルを同期するって感じで。
■同期元サーバー(devやstgが入ってるサーバー)
・xinetdとrsyncをダウンロード
# yum install xinetd rsync
・xientdの設定ファイル
# vi /etc/xinetd.d/rsync service rsync { disable = no flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
・rsyncの設定ファイルの作成
# vi /etc/rsyncd.conf uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = * //※1 hosts deny = * dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png #-------------- # Module options #-------------- [stg] comment = rsync server path = /var/www/html-stg use chroot = true auth users = rsync_user //※2 secrets file = /etc/rsyncd.secrets read only = false exclude = *.mp include = *.mp30※1:同期先サーバーを限定したい場合はIPをここに記述
※2:unixとかOSのユーザーとは関係ないので、わざわざuseraddする必要無し。適当なユーザー名を入力。
・ユーザー名とパスワードを記述した認証ファイルを作成(※2の)
# vi /etc/rsyncd.secrets
rsync_user:abcdefg //※3
# chmod 600 /etc/rsyncd.secrets
※3:パスワードは.htpasswdと違い平文で打つ・xinetdの起動
# chkconfig xinetd on # service xinetd start
■同期先サーバー(www配下のサーバー)
・rsyncのインストール
# yum install rsync
・同期元サーバーに接続するためのパスワードの記述
# vi /etc/rsync.passwd
abcdefg //※4
# chmod 600 /etc/rsync.passwd
※4:※3で記述したユーザー:パスワードのパスワードだけ記述・cronでstgのファイルを取得するようにする
# crontab -e */10 * * * * rsync -avz --delete --no-o --no-g --password-file=/etc/rsync.passwd rsync://rsync_user@xxx.xxx.xxx.xxx/stg /var/www/htmlこれで同期元サーバーの/var/www/html-stgファイルを10分毎に自分の/var/www/htmlにコピーするという感じになる。
--deleteオプションをつけてるので、消されたファイルもちゃんと同じように消されるという。
なおcrontabを設定したユーザーというか、rsyncを実行したユーザーでファイルの所有者を設定するようにしている。
ちなみに-aオプションは-r -l -p -t -g -o -Dオプションを全てっていう意味。
なので所有者情報とかグループ情報を同期元サーバーと一致させたくない場合は、--no-oと--no-gを指定してあげるといい。
ってな感じで設定してあげると同期元からどのサーバーにファイルを送るとか考えなくてよいし、
virtualhostとか最低限の設定をして、rsyncを設定したサーバー(AMI)をオートスケーリング対象にするだけで、
何も気にせず簡単にELB配下のサーバーに対して全て同じファイルをアップする事が出来るというなんとも便利な感じ。
0 件のコメント:
コメントを投稿