2013年02月28日

準同期レプリケーション時のiptables設定に悩む。

MySQL5.6で準同期レプリケーションを構築している。

そしてマスタサーバー、スレーブサーバ共にセキュリティ向上のためにiptablesの設定を施したいのだけど、どうもうまく行かない。。。

まずマスタ側なんだけど、
iptables -A INPUT -p tcp --dport 3306 -s $LOCALNET -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -s $VPNNET -j ACCEPT

※スレーブサーバはローカルネット内と、VPNネット内にある。

マスタ側は上記の設定を反映させてもレプリケーションは問題なかった。

問題はスレーブサーバ側。。。

色々試してダメだったので、最終的に3306を無条件に開放。。。

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

これでもダメだった。あ、もちろん内部から行ったアクセスに対する外部からの返答アクセス許可はしている。

通常レプリケーションと違い、準同期レプリケーションはマスタとスレーブが相互にやり取りを行うと理解している。

大まかには以下の通り。

マスタ側:
A.バイナリログをスレーブに転送する
B.スレーブから「受け取った」サインを取得後コミット

スレーブ側:
C.レプリケーションユーザーでマスタにログイン
D.マスタからバイナリログが来たら「受け取った」サインを返してコミット

今回の現象はAの処理でスレーブのF/Wに引っかかってるように見える。

スレーブサーバの3306以外を使ってるのかなぁ?

netstat -na とか、tcpdumpとかで調べてみたけどいまいちこれといったのは分からなかった。

結局、マスタサーバーは何でも有りな定義をするとうまくいった。。。

iptables -A INPUT -s $MASTER_SERVER -j ACCEPT

こんなのでいいのか疑問だけど、iptables 停止しとくよりはマシだよね???
posted by hana at 16:07| Comment(0) | TrackBack(0) | DB,SQL関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック