EBUG勉強会/20110903_ロードバランサなしで負荷分散してみた
をテンプレートにして作成
Start:
#topicpath
----
SIZE(24){'''''Open'''BSDで作るウェブ/メルマガサーバ''}
RIGHT:EBUG 第39回会合
RIGHT:2011年9月3日、会津OSS
RIGHT:川俣吉広、kaw@on.rim.or.jp
*発端
筆者の勤務先のウェブサーバの更新 ... 4台目へ更新(3回目)
え~、また俺がやるのぉ? ~
... やってもいいけど、じゃあ代わりに好きにやらしてもらう...
*設計
... というわけで、'''''Open'''BSD''。
現行サーバは、
-DELL PowerEdge / RedHat Enterprise Linux
-現用/予備の2台構成 ... 内製の「なんちゃってFailOver」付...
新サーバはこうしたい;
-現用/予備切替えじゃなくて、「両現用」
-もちろんIPv6対応
**ネットワーク
CARP - Common Address Redundancy Protocol
-ルータ冗長化プロトコルであるHSRP, VRRPの代替として(例に...
VRRPはRFC3768で規定されたNon proprietaryな規格だが、一部H...
BSDライセンスでの開発・公開が困難なことから新規にCARPを開...
-現在は各 *BSDで使用可。
***動作のしくみ
基本的な考え方はHSRP, VRRPと同じ
現用/予備で動作するFailOver構成の場合
-複数のホストで一台の仮想ホストを構成 ... 各ホストは一定...
Advertise Packetを連続して送出できたホストがマスタになる。
-ホスト間でAdv Packetの送信タイミングに差を持たせる(advsk...
-設定例 ~
ホストwwwn
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240
ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.2...
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.2...
carpdev bge0 \
advbase 1 \
vhid 1 \
advskew 200 <- この部分がホストNと異なっている
advbase + (advskew/256)秒間隔でAd...
|CENTER:&ref(MediaSrv_Carp10_normal.gif);|
|CENTER:正常時|
| |
|CENTER:&ref(MediaSrv_Carp15_fail.gif);|
|CENTER:障害発生時|
***負荷分散への応用
前項の基本設定では、現予備構成なので、予備が遊んでいても...
両方同時に動せればいいのに‥‥。
考え方
-仮想ホストを2つ生成し、両方共稼働させる。
-設定例 ~
ホストwwwn
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240
ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.2...
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.2...
carpdev bge0 \
carpnodes 1:200,2:0 \
balancing ip
-2台ある実ホストがそれぞれ、仮想ホスト1, 仮想ホスト2のマ...
-外部からの通信に対しては、どちらかのホストが反応するよう...
|CENTER:&ref(MediaSrv_Carp20_normal.gif);|
|CENTER:正常時|
| |
|CENTER:&ref(MediaSrv_Carp25_fail.gif);|
|CENTER:縮退時|
**その他の要素
***ストレージ
-同一型式のディスクが2式実装されている ... ディスクアレ...
-ソフトウェアRAIDを構成する場合、OpenBSDには raid(4) (Net...
softraid(4) (OpenBSD独自の実装)とがある。 ~
...今回はsoftraid(4)を使用
--使用法: disklabelでRAIDタイプのパーティションを作成し、...
|CENTER:&ref(WWWDisks_NoSize.gif);|
|CENTER:ディスクレイアウト|
-ルートパーティションと /usrは、RAID化してません ... RAID...
***データベース
OpenBSD 4.9のportsに収録されているPostgreSQL 9.0.3をイン...
Streaming Replicationを用いてDB間の同期を取った
-わかりやすいドキュメントがあまりないが、まぁ普通にインス...
-DB間に主従関係あり。更新は主DBに対してのみ可。
--主DBが停止した場合は、従DBで参照のみ可の運用になる ... ...
***静的ウェブコンテンツの同期
rsyncを用いて、定期的にお互いをコピーしあう。
--そのままではコピーがループしてしまうので、
rsync -aqH --update . 相方サーバ/.
とし、「タイムスタンプの新しいもののみ」コピー
--なので、片方だけ消してもしばらく経つと復活します。
***メルマガ配信
今時sendmail+smtpfeed (ry
**全体の構成
|CENTER:&ref(MediaSrv_Phys.gif);|
|CENTER:物理接続 - bge0:外部向け、 bge1:サーバ間直結|
| |
|CENTER:&ref(MediaSrv.gif);|
|CENTER:データフロー|
**その他もろもろ
***監視系
-OpenBSD標準のもの ... daily/weelky/monthly output, daily...
-動作一般の記録・表示 ... SAG (http://fuguita.org/?SAG )
-cronで定期的に実行されるスクリプト群 ... 異常があった場...
--syslog ... /var/log/messagesに追加された直近のエントリ...
--carpの稼働状態 ... 縮退していないかどうか?
--RAIDの稼働状態 ... 縮退していないかどうか?
--ウェブコンテンツ ... 外部ホストからwgetで定期的にアクセ...
***はまったこと
-CARPのトラブル
--社内のテスト環境ではOK。
--実機を社内からインターネットに接続したところ、CARPの共...
---各サーバの実アドレスについてはOK。
---ネットワークをモニタしたところCARPの共通アドレスのARP...
(以下のシーケンスの3以降が行われない)
(1) 00:1a:6d:2e:0f:ff > ff:ff:ff:ff:ff:ff : arp who-has ...
(2) 78:ac:c0:88:69:64 > 00:1a:6d:2e:0f:ff : arp reply (C...
(3) 00:1a:6d:2e:0f:ff > 01:00:5e:00:01:01 : (対向ルータ)...
(4) 78:ac:c0:88:69:64 > 00:00:0c:07:ac:35 : (CARPアドレ...
---対向ルータはCisco製で、HSRPを使っていた ... 相性問題あ...
(01:00:5e:00:01:xxはAdv Packet送出用に用いられるマルチキ...
---一旦サーバをDCに移設し、実環境でテスト ... OK。
-PFの設定注意
--carp0は実デバイスであるbge0上にある仮想デバイスなので、...
pass in on bge0 from any to { bge0のアドレス, carp0のア...
pass out on { bge0, carp0 }
-RAIDコントローラ ~
カタログ仕様では、「SmartArray P410i」 ... サポートされて...
http://www.openbsd.org/i386.html#hardwareでは、
--cac(4) ...Compaq Smart ARRAY 2*, 3* and 4* RAID control...
--ciss(4) ...Compaq Smart ARRAY 5*, 6* and 4* RAID contro...
-という記述があるので、とりあえずやってみる ... 認識せず ...
--dmesgを確認したところ「Intel 82801JI RAID」
--BIOSメニューでRAIDコントローラを使わない設定にしたとこ...
*まとめ
-結果
--ほぼ予定通りの構成で運用開始できた。
--テスト環境がOKでも、できるだけ実運用での試験をしましょ...
-ToDo
--障害発生時の手順書を完備しておく。
--DCがIPv6対応となった場合の設定追加 ~
... CARPのデュアルスタック対応はテスト環境では検証済み。
----
#topicpath
End:
#topicpath
----
SIZE(24){'''''Open'''BSDで作るウェブ/メルマガサーバ''}
RIGHT:EBUG 第39回会合
RIGHT:2011年9月3日、会津OSS
RIGHT:川俣吉広、kaw@on.rim.or.jp
*発端
筆者の勤務先のウェブサーバの更新 ... 4台目へ更新(3回目)
え~、また俺がやるのぉ? ~
... やってもいいけど、じゃあ代わりに好きにやらしてもらう...
*設計
... というわけで、'''''Open'''BSD''。
現行サーバは、
-DELL PowerEdge / RedHat Enterprise Linux
-現用/予備の2台構成 ... 内製の「なんちゃってFailOver」付...
新サーバはこうしたい;
-現用/予備切替えじゃなくて、「両現用」
-もちろんIPv6対応
**ネットワーク
CARP - Common Address Redundancy Protocol
-ルータ冗長化プロトコルであるHSRP, VRRPの代替として(例に...
VRRPはRFC3768で規定されたNon proprietaryな規格だが、一部H...
BSDライセンスでの開発・公開が困難なことから新規にCARPを開...
-現在は各 *BSDで使用可。
***動作のしくみ
基本的な考え方はHSRP, VRRPと同じ
現用/予備で動作するFailOver構成の場合
-複数のホストで一台の仮想ホストを構成 ... 各ホストは一定...
Advertise Packetを連続して送出できたホストがマスタになる。
-ホスト間でAdv Packetの送信タイミングに差を持たせる(advsk...
-設定例 ~
ホストwwwn
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240
ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.2...
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.2...
carpdev bge0 \
advbase 1 \
vhid 1 \
advskew 200 <- この部分がホストNと異なっている
advbase + (advskew/256)秒間隔でAd...
|CENTER:&ref(MediaSrv_Carp10_normal.gif);|
|CENTER:正常時|
| |
|CENTER:&ref(MediaSrv_Carp15_fail.gif);|
|CENTER:障害発生時|
***負荷分散への応用
前項の基本設定では、現予備構成なので、予備が遊んでいても...
両方同時に動せればいいのに‥‥。
考え方
-仮想ホストを2つ生成し、両方共稼働させる。
-設定例 ~
ホストwwwn
ifconfig bge0 inet 231.182.63.237 netmask 255.255.255.240
ifconfig carp0 inet 231.182.63.236 netmask 255.255.255.2...
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.2...
carpdev bge0 \
carpnodes 1:200,2:0 \
balancing ip
-2台ある実ホストがそれぞれ、仮想ホスト1, 仮想ホスト2のマ...
-外部からの通信に対しては、どちらかのホストが反応するよう...
|CENTER:&ref(MediaSrv_Carp20_normal.gif);|
|CENTER:正常時|
| |
|CENTER:&ref(MediaSrv_Carp25_fail.gif);|
|CENTER:縮退時|
**その他の要素
***ストレージ
-同一型式のディスクが2式実装されている ... ディスクアレ...
-ソフトウェアRAIDを構成する場合、OpenBSDには raid(4) (Net...
softraid(4) (OpenBSD独自の実装)とがある。 ~
...今回はsoftraid(4)を使用
--使用法: disklabelでRAIDタイプのパーティションを作成し、...
|CENTER:&ref(WWWDisks_NoSize.gif);|
|CENTER:ディスクレイアウト|
-ルートパーティションと /usrは、RAID化してません ... RAID...
***データベース
OpenBSD 4.9のportsに収録されているPostgreSQL 9.0.3をイン...
Streaming Replicationを用いてDB間の同期を取った
-わかりやすいドキュメントがあまりないが、まぁ普通にインス...
-DB間に主従関係あり。更新は主DBに対してのみ可。
--主DBが停止した場合は、従DBで参照のみ可の運用になる ... ...
***静的ウェブコンテンツの同期
rsyncを用いて、定期的にお互いをコピーしあう。
--そのままではコピーがループしてしまうので、
rsync -aqH --update . 相方サーバ/.
とし、「タイムスタンプの新しいもののみ」コピー
--なので、片方だけ消してもしばらく経つと復活します。
***メルマガ配信
今時sendmail+smtpfeed (ry
**全体の構成
|CENTER:&ref(MediaSrv_Phys.gif);|
|CENTER:物理接続 - bge0:外部向け、 bge1:サーバ間直結|
| |
|CENTER:&ref(MediaSrv.gif);|
|CENTER:データフロー|
**その他もろもろ
***監視系
-OpenBSD標準のもの ... daily/weelky/monthly output, daily...
-動作一般の記録・表示 ... SAG (http://fuguita.org/?SAG )
-cronで定期的に実行されるスクリプト群 ... 異常があった場...
--syslog ... /var/log/messagesに追加された直近のエントリ...
--carpの稼働状態 ... 縮退していないかどうか?
--RAIDの稼働状態 ... 縮退していないかどうか?
--ウェブコンテンツ ... 外部ホストからwgetで定期的にアクセ...
***はまったこと
-CARPのトラブル
--社内のテスト環境ではOK。
--実機を社内からインターネットに接続したところ、CARPの共...
---各サーバの実アドレスについてはOK。
---ネットワークをモニタしたところCARPの共通アドレスのARP...
(以下のシーケンスの3以降が行われない)
(1) 00:1a:6d:2e:0f:ff > ff:ff:ff:ff:ff:ff : arp who-has ...
(2) 78:ac:c0:88:69:64 > 00:1a:6d:2e:0f:ff : arp reply (C...
(3) 00:1a:6d:2e:0f:ff > 01:00:5e:00:01:01 : (対向ルータ)...
(4) 78:ac:c0:88:69:64 > 00:00:0c:07:ac:35 : (CARPアドレ...
---対向ルータはCisco製で、HSRPを使っていた ... 相性問題あ...
(01:00:5e:00:01:xxはAdv Packet送出用に用いられるマルチキ...
---一旦サーバをDCに移設し、実環境でテスト ... OK。
-PFの設定注意
--carp0は実デバイスであるbge0上にある仮想デバイスなので、...
pass in on bge0 from any to { bge0のアドレス, carp0のア...
pass out on { bge0, carp0 }
-RAIDコントローラ ~
カタログ仕様では、「SmartArray P410i」 ... サポートされて...
http://www.openbsd.org/i386.html#hardwareでは、
--cac(4) ...Compaq Smart ARRAY 2*, 3* and 4* RAID control...
--ciss(4) ...Compaq Smart ARRAY 5*, 6* and 4* RAID contro...
-という記述があるので、とりあえずやってみる ... 認識せず ...
--dmesgを確認したところ「Intel 82801JI RAID」
--BIOSメニューでRAIDコントローラを使わない設定にしたとこ...
*まとめ
-結果
--ほぼ予定通りの構成で運用開始できた。
--テスト環境がOKでも、できるだけ実運用での試験をしましょ...
-ToDo
--障害発生時の手順書を完備しておく。
--DCがIPv6対応となった場合の設定追加 ~
... CARPのデュアルスタック対応はテスト環境では検証済み。
----
#topicpath
Page: