RIGHT:EBUG 第xx回会合 RIGHT:2011年9月3日、会津OSS RIGHT:川俣吉広、kaw@on.rim.or.jp SIZE(24){''OpenBSDで作るウェブ/メルマガサーバ''} *発端 [#e26e083c] 筆者の勤務先のウェブサーバの更新 ... 4台目(3回目)の更新 え~、また俺がやるのぉ? ~ ... やってもいいけど、じゃあ代わりに好きにやらしてもらうよ。 *設計 [#ddd8d92b] ... というわけで、OpenBSD 現行サーバは、 -DELL PowerEdge / RedHat Enterprise Linux -現用/予備の2台構成 ... 内製の「なんちゃってFailOver」付き。 新サーバはこうしたい; -現用/予備切替えじゃなくて、「両現用」 -もちろんIPv6対応 **ネットワーク [#vd1bc70e] CARP - Common Address Redundancy Protocol -HSRP, VRRPのAlternative ... 例によってOpenBSDで開発された。~ VRRPはRFCで規定されたNon proprietaryな規格だが、一部HSRP (こっちはCicsoプロプラ)に触る部分があるらしく、 BSDライセンスでの開発・公開が困難なことから新規にCARPを開発した(らしい)。 ***基本原理 [#e9af792e] 基本的な考え方はHSRP, VRRPと同じ 現用/予備で動作するFailOver構成の場合 -複数のホストで一台の仮想ホストを構成 ... 各ホストは一定間隔でAdvertise Packetを送信し、マスタになろうとする -ホスト間でAdv Packetの送信タイミングに差を持たせる(advskew) ... これがプライオリティとなる -Advertise Packetを連続して送出できたホストがマスタになる。 -実際の設定 ~ ホストN ifconfig bge0 inet 218.223.36.237 netmask 255.255.255.240 ifconfig carp0 inet 218.223.36.236 netmask 255.255.255.240 \ carpdev bge0 \ <- carp0が動作する物理I/F advbase 1 \ <- Adv Packetの基本送信間隔(秒) vhid 1 \ <- 仮想ホストの識別番号 advskew 0 <- Adv Packetの送信タイミング差 ホストS ifconfig bge0 inet 218.223.36.238 netmask 255.255.255.240 ifconfig carp0 inet 218.223.36.236 netmask 255.255.255.240 \ carpdev bge0 \ advbase 1 \ vhid 1 \ advskew 200 <- この部分がホストNと異なっている advbase + (advskew/256)秒間隔でAdvertise |CENTER:&ref(MediaSrv_Carp10_normal.gif);| |CENTER:正常時| | | |CENTER:&ref(MediaSrv_Carp15_fail.gif);| |CENTER:障害発生時| ***負荷分散への応用 [#z40560b1] 前項の基本設定では、現予備構成なので、予備が遊んでいてもったいない。~ 両方同時に動せればいいのに。 考え方 -仮想ホストを2つ生成する。 -2台ある実ホストがそれぞれ、仮想ホスト1, 仮想ホスト2のマスタになるように構成する。 -外部からの通信に対しては、どちらかのホストが反応するようにする。 -実際の設定 ~ ホストN ifconfig bge0 inet 218.223.36.237 netmask 255.255.255.240 ifconfig carp0 inet 218.223.36.236 netmask 255.255.255.240 \ carpdev bge0 \ carpnodes 1:0,2:200 \ <- vhid:advskewの組 balancing ip <- Source IPアドレスで分散させる ホストS ifconfig bge0 inet 218.223.36.238 netmask 255.255.255.240 ifconfig carp0 inet 218.223.36.236 netmask 255.255.255.240 \ carpdev bge0 \ carpnodes 1:200,2:0 \ balancing ip |CENTER:&ref(MediaSrv_Carp20_normal.gif);| |CENTER:正常時| | | |CENTER:&ref(MediaSrv_Carp25_fail.gif);| |CENTER:縮退時| ***実際に使ってみる [#yb9076bf] -テスト環境でNG! --対向ルータがマルチキャスト用MacアドレスのARP返答に応答しない -実環境でOK! --Cisco NG, Juniper OK **ストレージ [#oc809877] -同一型式のディスクが2式実装されている ... ディスクアレイ用 -ソフトウェアRAIDを構成する場合、OpenBSDには raid(4) (NetBSD由来の RAIDframe)、とsoftraid(4) (OpenBSD独自の実装)とがある。 ~ ...今回はsoftraid(4)を使用 --使用法: disklabelでraid type partitionを作成し、bioctl -c [part ...]で作成 **データベース [#p03d6a1b] **静的ウェブコンテンツの同期 [#p15e8bbd] **メルマガ配信 [#j412d5ab] 今時sendmail+smtpfeed |CENTER:&ref(MediaSrv_Phys.gif);| |CENTER:物理接続| | | |CENTER:&ref(MediaSrv.gif);| |CENTER:データフロー| **その他 [#c9367583] ***監視系 [#y28dec65] -Network I/F -ディスク -ウェブコンテンツ ***注意点 [#t9dda58e]