昨日の日記、smtp を keepalived で分散する話だが、それだけでなく ftp や rsh も同様に冗長化してほしいとなった。keepalived ではポートのレンジ指定とか書けないんじゃないかな。だからたくさんのポートを使うやつは無理とまでは言わないけど面倒だなあ。1ポートにつき1設定。rsh は 514 と 1022 だっけ? ftp はコントロールの 21 のほうはいいとして、データのほうどうするよ。PASSIVE だと毎回ポート変わるし使用されそうなレンジのポートを conf ファイルに全部登録とかやってられるかー!と思って keepalived ではなく、呼び出す先の ipvsadm のマニュアル見てたら、Port 指定を 0 にしろと。なるほど。
virtual_server_group MySystem1 { 192.168.0.10 0 } virtual_server group MySystem1 { lvs_sched rr lvs_method DR protocol TCP persistence_timeout 50 ~その他オプションいろいろ~ sorry_server 192.168.0.9 0 real_server 192.168.0.1 0 { ~オプションいろいろ~ } real_server 192.168.0.2 0 { ~オプションいろいろ~ } real_server 192.168.0.3 0 { ~オプションいろいろ~ } }
こんな設定で、virtual の IP (上記例では 192.168.0.10) に接続に来たものは、80 だろうか 25 だろうがなんだろうがポート問わず全部 real_server (上記例では 192.168.0.1~3) に投げると。こいつは便利だ。ヘルスチェックがほんのり面倒だけど。チェック先のポートを connect_port 80
などとして明示しとかないと次々と死んでるステータスになるので注意。また、Port 0 の設定をするときは persistence_timeout
の指定も必須。これが無いとカーネルのログにエラーが出まくり、うまく繋がらなくなる。
しかし実際のところ、いまどき rsh や ftp は無いわー、という話である。閉じた環境のシステムだと旧来の手法がいまだに生き残っていたりするよね。でもこれから新規に作るなら ssh や scp を使うよね。これだと Port 22 だけ明示的に設定すればいいから快適だよね。