OpenBSDで作るウェブ/メルマガサーバ
筆者の勤務先のウェブサーバの更新 ... 4台目へ更新(3回目)
え~、また俺がやるのぉ?
... やってもいいけど、じゃあ代わりに好きにやらしてもらうよ。
... というわけで、OpenBSD。
現行サーバは、
新サーバはこうしたい;
CARP - Common Address Redundancy Protocol
基本的な考え方はHSRP, VRRPと同じ
現用/予備で動作するFailOver構成の場合
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240 ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.240 \ carpdev bge0 \ <- carp0が動作する物理I/F advbase 1 \ <- Adv Packetの基本送信間隔(秒) vhid 1 \ <- 仮想ホストの識別番号 advskew 0 <- Adv Packetの送信タイミング差ホストwwws
ifconfig bge0 inet 231.182.63.238 netmask 255.255.255.240 ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.240 \ carpdev bge0 \ advbase 1 \ vhid 1 \ advskew 200 <- この部分がホストNと異なっている advbase + (advskew/256)秒間隔でAdvertise
前項の基本設定では、現予備構成なので、予備が遊んでいてもったいない。
両方同時に動せればいいのに‥‥。
考え方
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240 ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.240 \ carpdev bge0 \ carpnodes 1:0,2:200 \ <- vhid:advskewの組 balancing ip <- Source IPアドレスで分散させるホストwwws
ifconfig bge0 inet 231.182.63.238 netmask 255.255.255.240 ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.240 \ carpdev bge0 \ carpnodes 1:200,2:0 \ balancing ip
OpenBSD 4.9のportsに収録されているPostgreSQL 9.0.3をインストール
Streaming Replicationを用いてDB間の同期を取った
rsyncを用いて、定期的にお互いをコピーしあう。
rsync -aqH --update . 相方サーバ/.とし、「タイムスタンプの新しいもののみ」コピー
今時sendmail+smtpfeed (ry
(1) 00:1a:6d:2e:0f:ff > ff:ff:ff:ff:ff:ff : arp who-has (CARPアドレス) tell (対向ルータ) (2) 78:ac:c0:88:69:64 > 00:1a:6d:2e:0f:ff : arp reply (CARPアドレス) is-at 01:00:5e:00:01:01 (3) 00:1a:6d:2e:0f:ff > 01:00:5e:00:01:01 : (対向ルータ) > (CARPアドレス): icmp: echo request (4) 78:ac:c0:88:69:64 > 00:00:0c:07:ac:35 : (CARPアドレス) > (対向ルータ): icmp: echo reply
pass in on bge0 from any to { bge0のアドレス, carp0のアドレス } port { ssh, http, https } pass out on { bge0, carp0 }