keepalived のインストール
Contents
概要
クラスタの勉強にkeepalivedをインストールしてみました。
その時にインストール時のメモです。
構成情報
構成は、2台のノード(192.168.24.151,192.168.24.152)で構成し、仮想IPとして192.168.24.160をフロントとします。
+-----------------------------------------------------------------+ | HOSTNAME | IP ADDRESS | 役割 +-----------------------------------------------------------------+ | ex-test1 | 192.168.24.151 | master | ex-test2 | 192.168.24.152 | backup | | 192.168.24.160 | VRRP +-----------------------------------------------------------------+
keepalivedのインストール(RPMパッケージ)
keepaliveが、yumで提供されていないので、RPMのパッケージを作成します
(1)依存関係のサービスのインストール
インストールに必要なパッケージをyum でインストールします
# yum -y install make kernel kernel-devel rpm-build openssl-devel
(2)作業用ディレクトリに移動
# cd /usr/local/src/
(3)keepaliveをRPMパッケージを作成
ファイルをダウンロード # wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz # tar xvzf keepalived-1.1.20.tar.gz # cd keepalived-1.1.20 # ./configure rootグループに変更しないと、以下とのエラーとなるのでrootグループに変更します error: Bad owner/group: /usr/local/src/keepalived-1.1.20/keepalived.spec # chown root:root /usr/local/src/keepalived-1.1.20/keepalived.spec rootグループに変更されたことを確認 # ls -l /usr/local/src/keepalived-1.1.20/keepalived.spec -rw-r--r-- 1 root 1000 5230 Nov 16 17:47 /usr/local/src/keepalived-1.1.20/keepalived.spec RPMパッケージを作成及びインストール # cp -p /usr/local/src/keepalived-1.1.20.tar.gz /usr/src/redhat/SOURCES/ # rpmbuild -ba ./keepalived.spec # cd /usr/src/redhat/RPMS/i386/ # rpm -ivh keepalived-1.1.20-5.i386.rpm
(4)ipvsadmのインストール
# yum -y install ipvsadm
設定ファイルの編集
(1)設定ファイル(keepalived.conf)を編集
# cd /etc/keepalived/ # mv keepalived.conf keepalived.conf.org # vi keepalived.conf マスター側(192.168.24.151) ! Configuration File for keepalived global_defs { notification_email { admin@example.jp } notification_email_from Alexandre.Cassen@firewall.loc smtp_server localhost smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.24.160 } } バックアップ側 (192.168.24.152) ! Configuration File for keepalived global_defs { notification_email { admin@example.jp } notification_email_from Alexandre.Cassen@firewall.loc smtp_server localhost smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.24.160 } }
keepalivedの起動
(1)自動起動の設定
# chkconfig keepalived on # chkconfig --list keepalived keepalived 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(2)keepaliceの起動
# /etc/init.d/keepalived start keepalived を起動中: [ OK ] # ps -ef|grep keepalived|grep -v grep root 4279 1 0 19:39 ? 00:00:00 keepalived -D root 4280 4279 0 19:39 ? 00:00:00 keepalived -D
keepaliveの動作確認(PING)
ping で動作確認します。まずは仮想IP(192.168.24.160)の疎通確認します。
$ ping 192.168.24.160 PING 192.168.24.160 (192.168.24.160) 56(84) bytes of data. 64 bytes from 192.168.24.160: icmp_req=1 ttl=64 time=18.5 ms 64 bytes from 192.168.24.160: icmp_req=2 ttl=64 time=0.423 ms 64 bytes from 192.168.24.160: icmp_req=3 ttl=64 time=0.345 ms 64 bytes from 192.168.24.160: icmp_req=4 ttl=64 time=0.557 ms 64 bytes from 192.168.24.160: icmp_req=5 ttl=64 time=0.288 ms 64 bytes from 192.168.24.160: icmp_req=6 ttl=64 time=0.388 ms
意図的にMASTER側のeth0をダウンし、仮想IP(192.168.24.160)に対して疎通確認します。
# ifdown eth0 $ ping 192.168.24.160 PING 192.168.24.160 (192.168.24.160) 56(84) bytes of data. 64 bytes from 192.168.24.160: icmp_req=1 ttl=64 time=18.5 ms 64 bytes from 192.168.24.160: icmp_req=2 ttl=64 time=0.423 ms 64 bytes from 192.168.24.160: icmp_req=3 ttl=64 time=0.345 ms 64 bytes from 192.168.24.160: icmp_req=123 ttl=64 time=0.514 ms 64 bytes from 192.168.24.160: icmp_req=124 ttl=64 time=1.42 ms ← MASTER停止時に、レスポンスが悪くなる 64 bytes from 192.168.24.160: icmp_req=125 ttl=64 time=0.692 ms
一瞬、PINGが止まりますがPINGは通ります
keepaliveの動作確認(HTTP)
WEBサーバを構築して、WEBサーバに仮想IP(192.168.24.160)を振りHPが表示されるか確認します。
(1)apache インストール
# yum -y install httpd # chkconfig httpd on # chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(2)ループバックアインターフェイスの設定
lo:0 を設定 # vi /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.24.160 NETMASK=255.255.255.255 NETWORK=192.168.24.0 BROADCAST=192.168.24.255 ONBOOT=yes lo:0 を起動 # ifup lo:0 # ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:8A:31:A4 inet addr:192.168.24.152 Bcast:192.168.24.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe8a:31a4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:349994 errors:0 dropped:0 overruns:0 frame:0 TX packets:242000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35563237 (33.9 MiB) TX bytes:22892602 (21.8 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:30649 errors:0 dropped:0 overruns:0 frame:0 TX packets:30649 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2244235 (2.1 MiB) TX bytes:2244235 (2.1 MiB) lo:0 Link encap:Local Loopback inet addr:192.168.24.160 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:16436 Metric:1 arpへの対応 # vi /etc/sysctl.conf #下記をの最終行に追加 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 ※設定の意味 ・arp_ignore は受信時 ・arp_announce は送信時 設定を確認 # sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 4294967295 kernel.shmall = 268435456 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2
(1)keepalived に80を追記
# cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived_YYYYMMDD.conf # vi /etc/keepalived/keepalived.conf virtual_server 192.168.24.160 80 { delay_loop 10 lb_algo rr lb_kind DR protocol TCP real_server 192.168.24.151 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 30 } } real_server 192.168.24.152 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 30 } } }
(2)ブラウザで動作確認する
# /etc/init.d/httpd start httpd を起動中: [ OK ] # /etc/init.d/keepalived restart keepalived を停止中: [ OK ] keepalived を起動中: [ OK ]
(3)1号機(192.168.24.150)を停止して動作確認
# /etc/init.d/httpd stop httpd を停止中: [ OK ] ※ 1号機で動作確認すると、停止直前にはコンテンツは表示されなくなるが、再度リクエスト(再読込)すると表示される # ipvsadm -L IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.24.160:http rr -> ex-test2:http Route 1 0 31
ディスカッション
コメント一覧
まだ、コメントがありません