Linux系统高可用集群软件之Keepalived
? ???Keepalived 集群軟件是一個基于VRRP協議來實現的LVS(四層協議)服務高可用方案,可以利用避免單節點故障.LVS服務需要有2臺服務器運行Keepalived服務,一臺為主服務器(MASTER),一臺為備份服務器(BACKUP),但是對外只有一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,備份服務器認為主服務器宕機并會接管虛擬IP提供服務,從而保證了服務的高可用性.
?
1.環境說明
系統:Centos 6.5 64位
軟件:Keepalived ipvsadm
服務:apache
網絡:
node1:192.168.1.100?
node2:192.168.1.102??
vip:192.168.1.105
?
2.配置本地時間和網絡
(1)兩臺服務器時間必須一至
[root@node2 ~]# date?????????????????????? --節點2的時間
Thu Nov 13 15:11:09 CST 2014
[root@node2 ~]#
[root@node1 ~]# date???????????????????????--節點1的時間
Thu Nov 13 15:11:13 CST 2014
[root@node1 ~]#
?
(2)配置本地網絡
node1節點:
[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:EE:3D:F6
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
[root@node1 ~]# vim /etc/hosts???????????????? --兩臺服務器相互解析
192.168.1.100 node1
192.168.1.102 node2
[root@node1 ~]#
?
node2節點:
[root@node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:A5:94:4C
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.102
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
[root@node2 ~]# vim /etc/hosts
192.168.1.100 node1
192.168.1.102 node2
[root@node2 ~]#
?
3.安裝所需要的軟件包,配置httpd服務
node1節點:
[root@node1 ~]# yum install httpd keepalived ipvsadm -y????????? --安裝所需的軟件
[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1
[root@node1 ~]# echo "node1" > /var/www/html/index.html?????????? --定義web首頁
[root@node1 ~]# /etc/init.d/httpd restart
Stopping httpd:??????????????????????????????????????????? [FAILED]
Starting httpd:??????????????????????????????????????????? [? OK? ]
[root@node1 ~]# chkconfig httpd on??????????????????? --重啟web服務
[root@node1 ~]#
?
node2節點:
[root@node2 ~]# yum install httpd keepalived ipvsadm -y
[root@node2 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1
[root@node2 ~]# echo "node2" > /var/www/html/index.html
[root@node2 ~]# /etc/init.d/httpd restart
Stopping httpd:??????????????????????????????????????????? [FAILED]
Starting httpd:??????????????????????????????????????????? [? OK? ]
[root@node2 ~]# chkconfig httpd on
?
4.配置keepalived集群服務
node1節點:
[root@node1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore?
[root@node1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore?
[root@node1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@node1 ~]# ifconfig eth0:1 192.168.1.105 broadcast 192.168.1.105 netmask 255.255.255.255 up
[root@node1 ~]# route add -host 192.168.1.105 dev eth0:1
[root@node1 ~]# ifconfig?
eth0????? Link encap:Ethernet? HWaddr 08:00:27:EE:3D:F6??
????????? inet addr:192.168.1.100? Bcast:192.168.1.255? Mask:255.255.255.0
????????? inet6 addr: fe80::a00:27ff:feee:3df6/64 Scope:Link
????????? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
????????? RX packets:1600615 errors:0 dropped:0 overruns:0 frame:0
????????? TX packets:1574022 errors:0 dropped:0 overruns:0 carrier:0
????????? collisions:0 txqueuelen:1000?
????????? RX bytes:106099219 (101.1 MiB)? TX bytes:102403193 (97.6 MiB)
eth0:1??? Link encap:Ethernet? HWaddr 08:00:27:EE:3D:F6??
????????? inet addr:192.168.1.105? Bcast:192.168.1.105? Mask:255.255.255.255
????????? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
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:5087 errors:0 dropped:0 overruns:0 frame:0
????????? TX packets:5087 errors:0 dropped:0 overruns:0 carrier:0
????????? collisions:0 txqueuelen:0?
????????? RX bytes:403339 (393.8 KiB)? TX bytes:403339 (393.8 KiB)
[root@node1 ~]# route? -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.1.105?? 0.0.0.0???????? 255.255.255.255 UH??? 0????? 0??????? 0 eth0
192.168.1.0???? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 1002?? 0??????? 0 eth0
0.0.0.0???????? 192.168.1.1???? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node1 ~]# cd /etc/keepalived/
[root@node1 keepalived]# vim keepalived.conf????????? --配置keepalived文件
! Configuration File for keepalived
global_defs {
?? notification_email {
?????z597011036@qq.com??????????? --宕機后郵件報警
?? }
?? notification_email_from root?????? --從哪個用戶發出
?? smtp_server localhost??????????????? --郵件服務器
?? smtp_connect_timeout 30
?? router_id LVS_DEVEL
}
vrrp_instance VI_1 {
??? state MASTER?????????????????? --主節點
??? interface eth1???????????????????? --監聽的網卡
??? virtual_router_id 51??????????? --虛擬路由ID號
??? priority 100???????????????????????? --配置優先級
??? advert_int 1
??? authentication {
??????? auth_type PASS???????? --認證類型
??????? auth_pass keep????????? --認證密碼
??? }
??? virtual_ipaddress {
????????192.168.1.105?????????? --虛擬IP地址
??? }
}
virtual_server 192.168.1.105 80 {??????? --虛擬IP和端口設置
??? delay_loop 6
??? lb_algo rr????????
??? lb_kind DR
??? nat_mask 255.255.255.0
??? protocol TCP
??? real_server 192.168.1.100 80 {??????? --主服務器的IP和端口
??????? weight 1?????????????????? --權重
??????? HTTP_GET {???????????--啟用HTTP服務
??????????? url {
????????????? path /
????????????? status_code 200????????? --監控狀態碼為200,如果返回不是200表示宕機
??????????? }
??????????? connect_timeout 3
??????????? nb_get_retry 3
??? ????????delay_before_retry 3
???????? }
??? }
??? real_server 192.168.1.102 80 {????????????? --從服務器的IP和端口
???????? weight 1??????????????????????? --權重
???????? HTTP_GET {
???????????? url {
?????????????? path /
?????????????? status_code 200
???????????? }
???????????? connect_timeout 3
???????????? nb_get_retry 3
???????????? delay_before_retry 3
???????? }
???? }
}
[root@node2 keepalived]#??
?
node2節點:
[root@node2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore?
[root@node2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore?
[root@node2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_ignore?
[root@node2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node2 ~]# ifconfig eth0:1 192.168.1.105 broadcast 192.168.1.105 netmask 255.255.255.255 up
[root@node2 ~]# route add -host 192.168.1.105 dev eth0:1
[root@node2 ~]# ifconfig?
eth0????? Link encap:Ethernet? HWaddr 08:00:27:A5:94:4C??
????????? inet addr:192.168.1.102? Bcast:192.168.1.255? Mask:255.255.255.0
????????? inet6 addr: fe80::a00:27ff:fea5:944c/64 Scope:Link
????????? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
????????? RX packets:1601817 errors:0 dropped:0 overruns:0 frame:0
????????? TX packets:1574326 errors:0 dropped:0 overruns:0 carrier:0
????????? collisions:0 txqueuelen:1000?
????????? RX bytes:104324952 (99.4 MiB)? TX bytes:104338539 (99.5 MiB)
eth0:1??? Link encap:Ethernet? HWaddr 08:00:27:A5:94:4C??
????????? inet addr:192.168.1.105? Bcast:192.168.1.105? Mask:255.255.255.255
????????? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
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:6824 errors:0 dropped:0 overruns:0 frame:0
????????? TX packets:6824 errors:0 dropped:0 overruns:0 carrier:0
????????? collisions:0 txqueuelen:0?
????????? RX bytes:2407997 (2.2 MiB)? TX bytes:2407997 (2.2 MiB)
[root@node2 ~]# cd /etc/keepalived/
[root@node2 keepalived]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
?? notification_email {
?????z597011036@qq.com
?? }
?? notification_email_from root
?? smtp_server localhost
?? smtp_connect_timeout 30
?? router_id LVS_DEVEL
}
vrrp_instance VI_1 {
??? state?BACKUP??????????????? --備用節點
??? interface eth1
??? virtual_router_id 51
??? priority 101??????????????????
??? advert_int 1
??? authentication {
??????? auth_type PASS
??????? auth_pass keep
??? }
??? virtual_ipaddress {
????????192.168.1.105
??? }
}
virtual_server 192.168.1.105 80 {
??? delay_loop 6
??? lb_algo rr
??? lb_kind DR
??? nat_mask 255.255.255.0
??? protocol TCP
??? real_server 192.168.1.100 80 {
??????? weight 1
??????? HTTP_GET {
??????????? url {
????????????? path /
????????????? status_code 200
??????????? }
??????????? connect_timeout 3
??????????? nb_get_retry 3
??? ????????delay_before_retry 3
???????? }
??? }
?? real_server 192.168.1.102 80 {
???????? weight 1
???????? HTTP_GET {
???????????? url {
?????????????? path /
?????????????? status_code 200
???????????? }
???????????? connect_timeout 3
???????????? nb_get_retry 3
???????????? delay_before_retry 3
???????? }
???? }
}
[root@node2 keepalived]#??
?
5.啟動keepalived服務和ipvsadm的狀態
node1和node2啟動服務:
[root@node1 keepalived]# /etc/init.d/keepalived restart
Stopping keepalived:?????????????????????????????????????? [? OK? ]
Starting keepalived:?????????????????????????????????????? [? OK? ]
[root@node1 keepalived]#
[root@node2 ~]# /etc/init.d/keepalived restart
Stopping keepalived:?????????????????????????????????????? [? OK? ]
Starting keepalived:?????????????????????????????????????? [? OK? ]
[root@node2 ~]#
[root@node1 keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
? -> RemoteAddress:Port?????????? Forward Weight ActiveConn InActConn
TCP? 192.168.1.105:80 rr
? -> 192.168.1.100:80???????????? Local?? 1????? 0????????? 0?????????
? -> 192.168.1.102:80???????????? Route?? 1????? 0????????? 0?????????
[root@node1 keepalived]#
6.測試是否正常
本文轉自 z597011036 51CTO博客,原文鏈接:http://blog.51cto.com/tongcheng/1576111,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Linux系统高可用集群软件之Keepalived的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: log file sync
- 下一篇: Windows 使用 Gogs 搭建 G