主機環境 redhat6.5 64位vim
實驗環境 服務端1 ip 172.25.25.113 主機名:server3.example.com 後端
服務端2 ip 172.25.25.114 主機名:server4.example.com服務器
管理端2 ip 172.25.25.112 主機名:server2.example.comide
管理端1 ip 172.25.25.111 主機名:server1.example.comoop
防火牆狀態:關閉測試
虛擬ip(vip): 172.25.25.200/24spa
前面的博文中已經介紹過將DR添加到高可用集羣(HA)的heartbeat中避免單點故障,本節將介紹將另外一個避免單點故障的方法:將DR添加到HA的keepalived中。keepalived對後端有健康檢查,則在安裝好keepalived以後可直接添加DR。3d
本節將再也不介紹DR的配置,感興趣的可查看前面的博文,本文直接從keeepalived的安裝開始。orm
在Keepalived.org官網可下載leepalived壓縮包(keeepalived對後端有健康檢查)router
1.源碼安裝keepalived
[root@server1 mnt]# ls
keepalived-1.2.24.tar.gz
[root@server1 mnt]# tar zxf keepalived-1.2.24.tar.gz #解壓
keepalived-1.2.24
keepalived-1.2.24.tar.gz
[root@server1 mnt]# cd keepalived-1.2.24
[root@server1 keepalived-1.2.24]# ls
aclocal.m4 ChangeLog CONTRIBUTORS genhash keepalived.spec.in missing
ar-lib compile COPYING INSTALL lib README
AUTHOR configure depcomp install-sh Makefile.am TODO
bin_install configure.ac doc keepalived Makefile.in
[root@server1 keepalived-1.2.24]# ./configure--prefix=/usr/local/keepalived
如有如下錯誤
則安裝
[root@server1 keepalived-1.2.24]# yum installopenssl-devel.x86_64 -y
[root@server1 keepalived-1.2.24]# ./configure--prefix=/usr/local/keepalived
[root@server1 keepalived-1.2.24]# make
[root@server1 keepalived-1.2.24]# make install
[root@server1 keepalived-1.2.24]# cd /usr/local/
[root@server1 local]# ls
bin etc games include keepalived lib lib64 libexec sbin share src
[root@server1 local]# scp -r keepalived/172.25.25.112:/usr/local/
root@172.25.25.112's password:
#做軟鏈接
[root@server1 local]# ln -s/usr/local/keepalived/etc/keepalived/ /etc/ #主配置文件的軟連接
[root@server1 local]# ln -s/usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ #啓動腳本的軟連接
[root@server1 local]# chmod +x /etc/init.d/keepalived #改變腳本的權限
[root@server1 local]# ln -s/usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ #配置文件的軟連接
[root@server1 local]# ln -s/usr/local/keepalived/sbin/keepalived /sbin/ #二進制文件的軟連接
[root@server1 local]# /etc/init.d/keepalived start #測試,開啓
Starting keepalived: [ OK ]
[root@server1 local]# /etc/init.d/keepalived stop
Stopping keepalived: [ OK ]
[root@server1 local]#
2.將DR添加到keepalived及測試(管理端)
1.添加DR到keepalived
[root@server1 local]# cd /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf samples
[root@server1 keepalived]# vim keepalived.conf #進入主配置文件
1 ! Configuration Filefor keepalived
2
3 global_defs {
4 notification_email {
5 root@localhost #郵件接受端
6 }
7 notification_email_from keepalived@server1.example.com #郵件發送端
8 smtp_server 127.0.0.1 #本地迴環
9 smtp_connect_timeout 30 #鏈接超時
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state MASTER #服務端1是master
19 interface eth0 #進入接口eth0
20 virtual_router_id 25 #虛擬路由id(1-254之間)
21 priority 100 #在啓動keepalived服務時,系統會比較priority的值,哪一個值大哪一個就是master
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26 }
27 virtual_ipaddress {
28 172.25.25.200 #虛擬ip‘
29 }
30 }
31
32 virtual_server172.25.25.200 80 { #虛擬服務
33 delay_loop 6
34 lb_algo rr
35 lb_kind DR #DR
36 # persistence_timeout 50 #超時
37 protocol TCP
38
39 real_server 172.25.25.113 80 { #真正的服務端
40 weight 1 #權重
41 TCP_CHECK {
42 connect_timeout 3
43 nb_get_retry 3
44 delay_before_retry 3
45 }
46 }
47 real_server 172.25.25.114 80 { #真正的服務端
48 weight 1
49 TCP_CHECK {
50 connect_timeout 3
51 nb_get_retry 3
52 delay_before_retry 3
53 }
54 }
55
56 }
[root@server1 keepalived]# /etc/init.d/keepalived start #開啓(服務端1)
Starting keepalived: [ OK ]
[root@server1 keepalived]# scp keepalived.conf172.25.25.112:/etc/keepalived/
root@172.25.25.112's password: #將其傳到服務端2
keepalived.conf 100%1049 1.0KB/s 00:00
[root@server2 keepalived]# vim keepalived.conf #進入剛傳到服務端2文件,修改
7 notification_email_from keepalived@server2.example.com#郵件發送段,本機
18 state BACKUP #備服務器
2[root@server2 local]# /etc/init.d/keepalived start #開啓(服務端2)
Starting keepalived: [ OK ]
1 priority 88 #比主的數值小就能夠
2.測試
[root@server1 keepalived]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port ForwardWeight ActiveConn InActConn
TCP 172.25.25.200:httprr
->server3.example.com:http Route 1 0 0
->172.25.25.114:http Route 1 0 0
#刷新以後,服務端2
[root@server1 keepalived]# ip addr show #查看ip,虛擬ip在服務端1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8scope host lo
inet6 ::1/128 scopehost
valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether 52:54:00:ec:8b:36brd ff:ff:ff:ff:ff:ff
inet 172.25.25.111/24brd 172.25.25.255 scope global eth0
inet 172.25.25.200/32scope global eth0 #虛擬ip
inet6fe80::5054:ff:feec:8b36/64 scope link
valid_lft foreverpreferred_lft forever
當主機keepalived停掉,系統會將服務轉移到備機上;當主機從新打開時,系統會從新讀配置文件,來肯定主機和備機,將服務開啓到主機上
#將服務端1的keepalived停掉,測試
[root@server1 keepalived]# /etc/init.d/keepalived stop
Stopping keepalived: [ OK ]
#服務正常
#刷新以後,服務端2
[root@server1 keepalived]# ip addr show #查看,虛擬ip不在服務端1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8scope host lo
inet6 ::1/128 scopehost
valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether52:54:00:ec:8b:36 brd ff:ff:ff:ff:ff:ff
inet 172.25.25.111/24brd 172.25.25.255 scope global eth0
inet6fe80::5054:ff:feec:8b36/64 scope link
valid_lft foreverpreferred_lft forever
[root@server2 keepalived]# ip addr show #查看ip虛擬在服務端2
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scopehost lo
inet6 ::1/128 scopehost
valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether52:54:00:85:1a:3b brd ff:ff:ff:ff:ff:ff
inet 172.25.25.112/24brd 172.25.25.255 scope global eth0
inet 172.25.25.200/32scope global eth0 #虛擬ip
inet6fe80::5054:ff:fe85:1a3b/64 scope link
valid_lft foreverpreferred_lft forever
#將服務端1的keepalived開啓
[root@server1 keepalived]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
#服務正常運行
#刷新以後,服務端2
[root@server1 keepalived]# ip addr show #查看虛擬ip,回到服務端1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8scope host lo
inet6 ::1/128 scopehost
valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether52:54:00:ec:8b:36 brd ff:ff:ff:ff:ff:ff
inet 172.25.25.111/24brd 172.25.25.255 scope global eth0
inet 172.25.25.200/32scope global eth0 #虛擬ip
inet6fe80::5054:ff:feec:8b36/64 scope link
valid_lft foreverpreferred_lft forever
[root@server2 keepalived]# ip addr show #查看,服務端2上沒有虛擬ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8scope host lo
inet6 ::1/128 scopehost
valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
link/ether52:54:00:85:1a:3b brd ff:ff:ff:ff:ff:ff
inet 172.25.25.112/24brd 172.25.25.255 scope global eth0
inet6fe80::5054:ff:fe85:1a3b/64 scope link
valid_lft foreverpreferred_lft forever