そしてマスタサーバー、スレーブサーバ共にセキュリティ向上のために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 停止しとくよりはマシだよね???