| 今のサーバーはバックアップも取っていますが、まったく同じサーバーをもう一台製作し、rsyncで同期をして、何かあればすぐに予備サーバーに切り替えられる様にします。ただし予備のサーバーは普段は電源を落としておき、一日1回タイマーで立ち上げ同期を取ってシャットダウンします。 方針:予備のサーバーは一日1回UEFI(BIOS)のタイマーを使い立ち上げて、その後シャットダウンをする(省エネ化)
 問題:予備のサーバーをシャットダウンするタイミングはどうするか?
 現状では名案が無いので、時間を見計らってシャットダウンする。
 rsyncを走らすタイミング
 UEFI(BIOS)のタイマーで立ち上げった時、KVMホスト、全てのサブホストを起動し、起動時にスクリプトを走らすことが出来る /etc/rc.d/rc.local に起動スクリプトを記入していく。
 
 まずは、現状のサーバーと同じサーバーを作ります。そして予備サーバーの設定をしていきます。
 最初はUEFI(BIOS)の設定
 私の場合はマザーボードにASRockのAM1HーITXを使っていますので、設定は当然このマザーボードのもので。まず電源を入れDELキーでEUFIの設定画面を出し、Advanced → RTC Alarm Power On → Enble と選び、新しいウィンドウが開きますので、Every day をクリック後、時間:分:秒 を設定したらOKをクリックし、さらに設定を保存しEUFIを抜けます。
 次にサブホストのシャットダウン時の設定
 ここを Resume にしていると、KVMホストが起動してもサブホストが起動では無く、Resumeしてしまい。起動スクリプトが走ってくれませんので、KVMホストがシャットダウンする時サブホストもシャットダウンする設定をします。この設定は /etc/init.d/libvirt-guests で設定します。
 このスクリプトの
 ON_SHUTDOWN=shutdown ← ホストがシャットダウンしたらゲストもシャトダウンする
にした。参考にした中には SHUTDOWN_TIMEOUT や START_DELAY を変更しているのもあったが、私はデフォルトのまま。これでホストをシャットダウンしたらゲストもシャットダウンする。又、ON_BOOT=start にしていると、ホストがシャットダウンするときに走っていたコンピューターがホストが起動するとゲストも起動するようになる。ここを参照
 これで起動とサブホストのシャットダウンはうまくいく。
 今度は本チャンのコンピューターとの同期である。これにはrc.local を使いrsyncで同期する。
 rsyncの書式は rsync [option] SOURCE [SOURCE]... DEST でソースは複数指定できる。
 (rsyncの設定はここを参照)
 早速rsyncの設定をしていく。rsyncはリモートからリモートへの同期は出来ないので、各ホスト毎に設定が必要になる。まずはバックアップ元(SOURCE)でrsyncをデーモンで走らせておく(この方が何かとやりやすかったので)
 最初にrsyncd.confの設定(この設定を全ての同期元のサーバー全部に設定していく)
 # gedit /etc/rsyncd.conf
 この設定の意味はrsyncをrootユーザーで走らして、chrootを可能にし、ローカルネットワーク(一部伏せ字)からのみRQを受付、圧縮しない拡張子を指定し、バックアップされる部分を指定している。注意するのはrsyncで指定するのは[ ]で指定した文字列になること。例えばとしたらCCCディレクトリーの指定は abc になる。又、ここにある /etc/rsyncd.secrets に ユーザー名:パスワード の書式でを設定しておく。又、複数のユーザーが可能だが一行毎に記入しておく。大事なのはこのファイルのパーミッションを600にしておかないとエラーになる。そしてrsyncをデーモンモードで起動する。# Global options
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 192.168.XX.XX/24
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png
# Module options
[Thunderbird]
         comment      = rsync server
         path         = /Thunderbird
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
[Download]
 	 comment      = rsync server
         path         = /Download
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
# rsync --daemon --config=/etc/rsyncd.conf  これはCentOS6の時
 # systemctl start rsyncd  これはCentOS7の時
 これらを同期したい全てのサーバーに指定して置く。
 
 次はバック先のホストの設定
 先ずは予備のKVMホストの設定だが、rsyncdにパスワードを設定してあるのでそのファイルを作る。
 /etc/rsync.passwd にバックアップ元で指定したパスワードのみを記入しておく(ユーザーはrsyncコマンドの中で指定する)。このファイルもパーミッションを600にしておかなければならない。
 /etc/rc.d/rc.localに下記を追記
 私の場合は /Thunderbird (メールのデーター)と /Download(色々なダウンロードした物の置き場所)を同期した。--delete でバックアップ先にあってバックアップ元に無い物はdeleteされる(完全に同期)。パスワードファイルを指定し、rsync://root@ でユーザーを指定している。大事なのはバックアップ元の最後の / の指定、これが無いとバックアップ先のディレクトリーの下にバックアップ元のディレクトリーを作ってしまう。freshclam ← 予備のコンピューターはいつもは電源が入っていないのでVirusデーターのアップデートをする
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Thunderbird/ /Thunderbird
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Download/ /Download
これと同じように全てのバックアップ先のホストで指定する。
 これで一様同期する筈だが、このままではシャットダウンしない。色々試したが、全ての同期に一時間もいらないので(毎日同期しているので)メインのホストでcron.dに設定を入れる。
 この設定は毎日午前3時10分にシャットダウンする(UEFIで午前2時に起動する設定をしている)# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root shutdown -h now
これを /etc/cron.d に Shutdwn(オーナーはroot、わざとshutdownにしていない)として保存する。
 これで午前2時にEUFIのタイマーで起動し、午前3時10分にシャットダウンする筈。
 あれ!シャットダウンしないぞ、何でだ??原因調査中
 エラーメールが着ていた。内容は
 /bin/sh: shutdown: command not found
 だと!スペル間違えてないよなー、shutdownは確か/sbinにあったと思うので、/etc/cron.d/Shutdwnを下記に変更
 。テストの為に今の時間の5分後に変更して試すと。無事シャットダウンしてくれたので、時間を戻し、保存。# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root /sbin/shutdown -h now
 |