さて、簡単な説明と事前準備も完了しましたので具体的な作業に入ります。
まず、構築の手順を先に説明します。
- 正系ノードの構築
- 実サーバの設定
- シングル構成の動作確認
(1-2) keepalivedのインストール
(1-3) keepalived.confの編集
(1-4) keepalivedの起動と設定
(2-2) ARPへの対応
(3-2) クライアントからの接続と接続状況の確認
以上の手順で構築します。
なお、本説明はCentOS5.1上での構築を前提としており、
また、「LVSを使ったブローカーの構築:LVSの構築と確認」にて
あらかじめ準備を行っていることを前提としていますのでご注意ください。
では早速「1.正系ノードの構築」からはじめます。
(1-1) ipvsadmのインストール
「ipvsadm」はIPVSのフロントエンドです。
実際の操作はこのipvsadmを利用することになります。
「ipvsadm」のインストールはyumで可能です。
>yum install ipvsadm
(1-2) keepalivedのインストール
「keepalived」はIPVSを冗長化してくれます。
なお、keepalivedを利用する場合、IPVSの設定はkeepalived側の
設定ファイルから行う事となります。
今回のkeepalivedのインストールにはあらかじめ準備したRPMを利用します。
>rpm -ivh keepalived-1.1.13-6.i386.rpm
(1-3) keepalived.confの編集
RPMを利用して「keepalived」を導入した場合、
設定ファイルは「/etc/keepalived/keepalived.conf」に配置されます。
初期のkeepalived.confは念のため保存しておき、
今回は必要な内容記載した新たな設定ファイルを作成します。
>cd /etc/keepalived/
>mv keepalived.conf keepalived.conf.backup
>vi keepalived.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | vrrp_instance vip_mysqld { state BACKUP interface eth0 grap_master_delay 5 virtual_router_id 1 priority 100 nopreempt advert_int 1 authentication { auth_type PASS auth_pass secret } virtual_ipaddress { 10.1.100.100/24 dev eth0 } } virtual_server 10.1.100.100 3306 { delay_loop 3 lvs_sched rr lvs_method DR protocol TCP real_server 10.1.100.140 3306 { TCP_CHECK { connect_port 3306 connect_timeout 30 } } real_server 10.1.100.150 3306 { TCP_CHECK { connect_port 3306 connect_timeout 30 } } } |
以上の内容で「keepalived.conf」を作成すれば正系ノードの準備は完了です。
(1-4) keepalivedの起動と設定
1-3までの作業で最低限の設定は完了していますので、
keepalivedの自動起動の設定を行った上で、起動を行います。
>chkconfig keepalived on
>service keepalived start
仮想IPが応答することを確認します。
>ping 10.1.100.100
以上で「正系ノードの構築」は完了です。
次に「実サーバの設定」を行います。
(2-1) ループバックインターフェースの設定
今回クライアントから見た場合、仮想IPである「10.1.100.100」にアクセスすると
そのアクセスが実サーバへ転送されることとなります。
その際、実サーバは「10.1.100.100」へのアクセスが自分自身へのアクセスであると認識し
対応できるようにする必要があります。
その為にループバックインターフェースに仮想IPに設定した「10.1.100.100」を設定します。
>vi /etc/sysconfig/network-scripts/ifcfg-lo:0
1 2 3 4 5 6 | DEVICE=lo:0 IPADDR=10.1.100.100 NETMASK=255.255.255.255 NETWORK=10.1.100.0 BROADCAST=10.1.100.255 ONBOOT=yes |
上記の内容で「ifcfg-lo:0」を作成したら「lo:0」を起動します。
>ifup lo:0
正常に設定されているか確認をします。
>ifconfig

「lo:0」に「10.1.100.100」が設定されたことが確認できました。
(2-2) ARPへの対応
2-1にてループバックインターフェースとして「10.1.100.100」を設定しました。
それに関連してARP(Address Resolution Protocol)への対処を行っておきます。
>vi /etc/sysctl.conf
1 2 3 | #該当ファイルの最終行に設定を追加 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 |
「arp_ignore」とは受信時、「arp_announce」は送信時の動作について設定しています。
このあたりの情報は「人力検索はてな」によい情報がありますので参考にしてください。
参考:人力検索はてな(Question:1199870913)
設定が終了したら設定内容を反映します。
>sysctl -p
以上で実サーバ側の設定は完了です。
※2-1から2-2については「10.1.100.140」と「10.1.100.150」の両方に設定して下さい。
以上で「実サーバの設定」は終了です。
ここまでの作業でシングル構成でのブローカーの構築は完了しました。
最後に「シングル構成の動作確認」を行います。
(3-1) ここまでの作業で構築された環境の確認
ここまでの作業で構築された環境は以下のようになっています。

①クライアントは仮想IP(10.1.100.100)に対してアクセスを行う。
②仮想IPに対するアクセスをLBノード(1)は正常な実サーバに対し転送を行う。
③転送された実サーバ(「MySQLDノード(1)」または「MySQLDノード(2)」)はクライアントへ応答を行う。
上記のような動作をする環境が構築されているはずです。
(3-2) クライアントからの接続と接続状況の確認
それでは、実際の動作が想定通りであるか確認をしたいと思います。
まずは同一ネットワーク上に存在しているクライアントを準備します。
ここでは「10.1.100.180」のIPアドレスを持つクライアントを準備しました。
準備したクライアントから仮想IPである「10.1.100.100」に対して、
MySQLクライアントを使い接続を行ってみます。
>mysql -h 10.1.100.100 -u myadmin -p
※なお、接続に利用している「myadmin」ユーザは事前に準備して下さい。

無事つながりました。
コマンドの発行に対しても正常なレスポンスが行われています。
ここで、ipvsadmコマンドでも状態を確認してみます。
>ipvsadm -L

表示された結果から現在クライアントは「10.1.100.150」に接続していることがわかります。
※「10.1.100.150」側だけが「ActiveConn」が1となっている為
さて、ここでもう一つクライアントを増やし接続を行ったらどうなるのでしょうか?
実際に接続し、その上でipvsadmコマンドで確認した結果が以下のものです。

二つ目のクライアントの接続が「10.1.100.140」に対して割り振られたのがわかります。
以上でクライアントからの接続が正常に行われることと、
複数の実サーバへの振り分けが正常に行われることが確認できました。
ここまでの作業で無事正系ノードのみですがブローカーができました。
次回は副系ノードも構築します。
お疲れ様でした。
- Newer: LVSを使ったブローカーの構築:LVSの副系ノードの構築
- Older: LVSを使ったブローカーの構築:構築環境についての説明
Comments:0
Trackback+Pingback:0
- TrackBack URL for this entry
- http://blog.technology-knowledge.jp/2008/05/11/151/trackback/
- Listed below are links to weblogs that reference
- LVSを使ったブローカーの構築:LVS(シングル構成)の構築と確認 from SeeIn開発日誌
