WINS-replicationのソースを表示
提供:Samba-JP
←
WINS-replication
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
ページ
名前空間にあるページを編集する権限がありません。
このページのソースの閲覧やコピーができます。
==SambaにおけるWINSサーバ複製機能の実装== ===概要=== Samba Samba2.x~3.x では、winsの複製が出来ません。これは、 winsの複製に必要なプロトコルが公開されていないからです。Sambaでは、認証 サーバ本体をPDC/BDCとして多重化することは出来ますが、winsサーバの複製が 出来ないために、PDCが障害した場合には、名前解決でトラブルを生じる場合が あります。 PDCのクラスタ化を行なえば、自動的にWINSサーバも複製が出来るため、問題 はありませんが、高価なクラスタ化ソフトウェアが必要となります。 そこで、Sambaの機能を使って、限定的にWINS情報の複製を行なう方法を考案 してみました。このソフトは、この機能を実現するものです。 ===動作の基本=== MicrosoftによるWINSデータの複製は、push/pull 型で行なわれます。すなわち、 あるサーバに登録されたWINSデータは、そのサーバから別サーバに送りつけること も、別のサーバの情報を定期的に取得しに行くことも、どちらも可能です(双方向 レプリケーション)。この機能を実現するためには、かなりめんどくさい 同期プロトコルが必要となります。そのかわり、もよりのWINSサーバに情報を 登録するだけで、全部のWINSサーバに情報が伝達するという利便性があります。 双方向レプリケーションの実装は難しく、Sambaそのものでもまだ実現は されていません。そこで、winssend.plは、pull型の同期を諦め、push型の同期 のみに絞ることで、機能を縮小してはいますが、WINS情報の複製を可能にしました。 また、WINS情報をpushするための仕組みとして、送り込むプログラムの他に、 Sambaのwins hook 機能を使います。このため、wins hook が実装されている バージョンのSamba(2.2系列、3.0系列)であれば、本体の改造無しにWINS情報の 複製が可能です。従って、ディストリビューション中のSambaをそのまま使う ことが可能です。 ===実現方法=== ====基本的な考え方==== SambaはWINSの登録やリフレッシュ、削除があるたびごとに、wins hook で 定義されたプログラムを呼び出す機能を持っています。本来この機能は、DNSとの 連携を目的としていたものですが、この機能を使って、他のWINSサーバに情報を 送りつけることで、WINS情報の複製を行なっています。 具体的には、wins hook で渡されたパラメータを元に、WINS登録のためのパケット を作成し、他のWINSサーバに送ります。 作成するパケットは、RFC1001とRFC1002で定義されていますので、入力データ を元に組み立てています。WINSサーバにクライアントが名前を登録したときの パケットとは微妙に違いますが、要は名前登録さえできてしまえばいいので、 あまり細かなところまでは考慮していません。 ====双方向レプリケーション==== ver 0.02 までは片方向レプリケーションしか出来ませんでした。ある1つのマスタ となるwinsサーバを立ち上げておいて、ここから他のwinsサーバに対してデータを 配信することしか出来ませんでした。 ver 0.13からは双方向(pushのみ)のレプリケーションが出来るようになりました。 それぞれのwinsサーバにwinssend.plを設定することで、互いに他のwinsサーバに 対してデータを供給できるようになりました。ただ、そのままでは他のwinsサーバか ら登録要求があったデータもwinssend.plを起動して、また他のwinsサーバにデータを 送り込んでしまいます。そこで、winssend.plでは自分自身が所属しているネットワー ク以外からのデータは送り出さないようにしています。これで、winsデータの白山羊 さん黒山羊さん問題を解決できます。 ==準備作業== winssend.pl を使うためにはいくつかの準備が必要です。 ===perlとモジュール=== #perl #:5.6.0 以降が必要です。できれば5.8.x系が望ましいです。 #IO::Socket #:標準で添付されているはずです。 #Data::Hexdumper #:CPANからダウンロードしてください。バージョン1.2を使っています。 #File::Log #:CPANからダウンロードしてください。バージョン1.0.2を使っています。 ===smb.confの設定=== winssend.pl はwins hook機能を使います。そのため、winssend.pl を smb.conf の wins hook で設定します。たとえば、 wins hook = /etc/samba/winssend.pl と記述します。 ===winssend.conf の設定=== winssend.conf には、WINS情報を送り込みたいWINSサーバを設定します。 たとえば以下のように記述します。 wins list = 1.2.3.4 [2.3.4.5 ...] サーバはIPアドレスで記述します。複数のサーバを記述するときは空白 で分離します。 ===winssend.plの設定=== Ver 0.02 ではwinssend.confおよびログファイルの場所を指定する部分を 個別に設定する必要があります。既定値では、Red Hat 系のLinuxにあわせて あります。 ===相手側のWINSサーバ=== WINS情報を複製する先のWINSサーバが必要です。Sambaの場合、smb.conf で、 wins support = yes と設定してください。なお、Windows サーバでの実績はありません。 ==利用方法== ===サーバの設定=== 利用方法は単純です。 #smb.confのwins hook = で指定した場所に winssend.pl を配置します。 #winslist.confに複製先のWINSサーバの情報を記述します。 #複製先のSambaの設定をWINSサーバに変更します。 #設定変更が終わったサーバを再起動します。 これでWINSの複製が出来るようになります。 ===クライアントの設定=== プライマリWINSサーバを、もともとのサーバに、複製先のWINSサーバを、 セカンダリのWINSサーバに設定します。 ==注意事項== ===サーバの動作について=== #2つのhostからのpush動作しか検証していません。それ以上のhostからの双方向 pushは検証していません。 #WINS登録が輻湊する場合、負荷がかかる場合があります。winssend.plの構造上、登録ごとにperlスクリプトが起動するからです。 #障害時の動作は検証していません。 ===クライアントの動作について=== #プライマリサーバが障害した場合、セカンダリサーバに登録されたものはどうなるか不明です。 ===その他=== winssendについては2006年のソフトウェアシンポジウムで論文が採択され、 発表を行ないました。本バージョンでは論文時(ver 0.02)から機能強化を行 なったものです。論文本体はNECのLinuxのページ( [http://www.nec.co.jp/linux/topics070627.html http://www.nec.co.jp/linux/topics070627.html])にあります。 本件についてのお問い合わせは Samba-JP ML(samba-jp@samba.gr.jp)までお 願いします。 ==プログラム本体== [[画像:Winssend.zip]]です。mediawikiのアップロード機能を使っていますので、画像扱いになっていますが実態はアーカイブファイルです。 最新版は ver 0.14です。
WINS-replication
に戻る。
案内メニュー
ページ操作
ページ
議論
閲覧
ソースを閲覧
履歴
ページ操作
ページ
議論
その他
ツール
個人用ツール
ログイン
案内
メインページ
Sambaとは
メーリングリスト
Samba技術情報
マニュアル(4.20.4対応)
マニュアル(旧ver)
マニュアル(3.6.22対応)
公式のSamba3-HOWTO(β版:4.6.6対応)
公式のSamba3-HOWTO(β版:3.6まで)
Samba3開発者ガイド(β版)
プロジェクト
イベント
リンク
有料サポート等
ユーザー会
本家
お問い合わせ
ご支援&ご協力
最近の更新
ヘルプ
検索
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報