2010年10月01日
WINSサーバの二重化
さて先日やらかした失態。
WINSサーバとして運用している機体をうっかり再起動してしまい、さらに何故か起動に10分以上の時間がかかり、その間名前解決ができず…というもの。
まあ営業時間中に再起動すること自体がダメダメなんですが、障害の可能性も含め対策して於いた方が良いかと思い、WINSサーバの二重化を試みます。
そもそもVPNでネットワーク同士を繋いでいるためにWINSサーバが必要でした。このとき同時にDMBも必要と思い、VPNのこっち側とあっち側にそれぞれSambaをたてており、そのうちこっち側のみがWINSサーバとして稼働しています。
あっち側はDMBの同期の為だけに稼働していましたが、最近になって、そもそもDMBは不要だったのではないか…と感じているのは内緒。^^
ともかく、ちょうど2台目のWINSサーバに最適な機体がありますので、これを設定していきたいと思います。
(備忘録ですから簡潔に書いていますが、正常稼働までには何気に苦労しています。^^)
参考文献:
http://wiki.samba.gr.jp/mediawiki/index.php?title=WINS-replication
http://www.osstech.co.jp/techinfo/samba/wins-push
まずwinzsendを試しましたが、私の知識ではうまく動かすことができませんでした。
CPANというものも(Google先生のおかげで一応操作できましたが)初めて見るものだったこともあって、うまく動かない時の障害切り分けができないため、少しいじくって早々にあきらめました。
で、wins-pushの方でうまくいきましたので、そのメモ。
まずwins-pushを解説に従って設定していきます。
現WINSサーバにインストール
# mkdir /usr/local/sbin/wins-push
# chmod 755 /usr/local/sbin/wins-push
# wget http://www.osstech.co.jp/_media/techinfo/samba/wins-push.pl /usr/local/sbin/wins-push/.
2台目WINSサーバを指定するための設定ファイル作成
# echo "wins servers = 192.168.???.???" >/etc/samba/wins-push.conf
(???は2台目WINSサーバのアドレスを指定)
状態保持用ディレクトリを作成
# mkdir /var/cache/samba/wins-push
現WINSサーバのSambaの設定を変更
# vi /etc/samba/smb.conf
[global]
wins hook = /usr/local/sbin/wins-push
2台目のSambaも設定変更
# vi /etc/samba/smb.conf
[global]
wins support = yes
これでそれぞれのSambaを再起動したところ、2台目のwins.datにきちんと情報が追加され行くことを確認しました。
(Sambaの再起動に手間取りましたが…)
次にWindwosに渡しているWINSサーバの情報に、両サーバのアドレスを渡すようにしました。(アドレスは渡せましたが、障害時にうまく動いてくれるかは判りません)
各PCのIPアドレスは管理の都合上DHCPで取得させています。DHCPサーバはルータ(YAMAHA RT-58i)を利用し、配布するIPアドレスはMACアドレスを基に固定となってています。
従って、ルータの設定を少し変えるだけで全PCのWINSサーバ情報が(次回接続時より)更新されます。
設定はルータGUIの「コマンドの実行」に
wins server 192.168.???.??? 192.168.???.???
(1台目2台目それぞれのIPを指定)
とするだけです。
ここで注意事項。
winssendの方で、双方向にデータのやりとりができるスクリプトであると説明がありました。
(引用)
双方向レプリケーション
ver 0.02 までは片方向レプリケーションしか出来ませんでした。ある1つのマスタとなるwinsサーバを立ち上げておいて、ここから他のwinsサーバに対してデータを配信することしか出来ませんでした。
ver 0.13からは双方向(pushのみ)のレプリケーションが出来るようになりました。それぞれのwinsサーバにwinssend.plを設定することで、互いに他のwinsサーバに対してデータを供給できるようになりました。ただ、そのままでは他のwinsサーバから登録要求があったデータもwinssend.plを起動して、また他のwinsサーバにデータを送り込んでしまいます。そこで、winssend.plでは自分自身が所属しているネットワーク以外からのデータは送り出さないようにしています。これで、winsデータの白山羊さん黒山羊さん問題を解決できます。
winssendを基にしたとされるwins-pushの方も同様かと思いましたが、当方の環境では双方向ではうまく動いてくれませんでした。
一方通行のみに設定したところ、うまく動いてくれています。
まあ、あくまで非常用ですから現状で問題ありません。
私が「いらんこと」をしなければ、そうそう障害も起こらないでしょうしね…。