35:予備のサーバーを製作

今のサーバーはバックアップも取っていますが、まったく同じサー バーをもう一台製作し、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

# 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をrootユー ザーで走らして、chrootを可能にし、ローカルネットワーク(一部伏せ字)からのみRQを受付、圧縮しない拡張子を指定し、バックアップされる部分を 指定している。注意するのはrsyncで指定するのは[ ]で指定した文字列になること。例えば

[abc]
     path=/XXX/YYY/CCC

としたらCCCディレクトリーの指定は abc になる。又、ここにある /etc/rsyncd.secrets に ユーザー名:パスワード の書式でを設定しておく。又、複数のユーザーが可能だが一行毎に記入しておく。大事なのはこのファイルのパーミッションを600にしておかないとエラーになる。そしてrsyncをデーモンモードで起動する。
# rsync –daemon –config=/etc/rsyncd.conf
これらを同期したい全てのサーバーに指定して置く。
次はバック先のホストの設定
先ずは予備のKVMホストの設定だが、rsyncdにパスワードを設定してあるのでそのファイルを作る。
/etc/rsync.passwd にバックアップ元で指定したパスワードのみを記入しておく(ユーザーはrsyncコマンドの中で指定する)。このファイルもパーミッションを600にしておかなければならない。
/etc/rc.d/rc.localに下記を追記

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

私 の場合は /Thunderbird (メールのデーター)と /Download(色々なダウンロードした物の置き場所)を同期した。–delete でバックアップ先にあってバックアップ元に無い物はdeleteされる(完全に同期)。パスワードファイルを指定し、rsync://root@ でユーザーを指定している。大事なのはバックアップ元の最後の / の指定、これが無いとバックアップ先のディレクトリーの下にバックアップ元のディレクトリーを作ってしまう。
これと同じように全てのバックアップ先のホストで指定する。
これで一様同期する筈だが、このままではシャットダウンしない。色々試したが、全ての同期に一時間もいらないので(毎日同期しているので)メインのホストでcron.dに設定を入れる。

# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root shutdown -h now

この設定は毎日午前3時10分にシャットダウンする(UEFIで午前2時に起動する設定をしている)
これを /etc/cron.d に Shutdwn(オーナーはroot、わざとshutdownにしていない。理由はコマンドと同じにすると何かあるといけないから)として保存する。
これで午前2時にEUFIのタイマーで起動し、午前3時10分にシャットダウンする筈。
あれ!シャットダウンしないぞ、何でだ??
エラーメールが着ていた。内容は
/bin/sh: shutdown: command not found
だと!スペル間違えてないよなー、shutdownは確か/sbinにあったと思うので、/etc/cron.d/Shutdwnを下記に変更

# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root /sbin/shutdown -h now

。テストの為に今の時間の5分後に変更して試すと。無事シャットダウンしてくれたので、時間を戻し、保存。

フジマル について

1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
カテゴリー: 省エネサーバー製作(CentOS 6) パーマリンク

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください