安装
[root@server1 software]# tar xfz keepalived-1.2.20.tar.gz
[root@server1 software]# cd keepalived-1.2.20
[root@server1 keepalived-1.2.20]# ./configure --prefix=/usr/local/keepalived
[root@server1 keepalived-1.2.20]# make && make install
[root@server1 sbin]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
[root@server1 sbin]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 sbin]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived
/etc/sysconfig/
[root@server1 sbin]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ [root@server1 sbin]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
配置
[root@server1 sbin]# vim /etc/keepalived/keepalived.conf
3 global_defs {
4 notification_email {
5 root@localhost //邮件报警 设置为本机 可以不设置
6 }
7 notification_email_from keepalived@server1//server4 此处后缀为 server4
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 }
14
15 vrrp_instance VI_1 { //设置节点
16 state MASTER //状态只有 MASTER(工作)和 BACKUP(备用)两种,此处为 master,另一节点 server4 备用
17 interface eth0 //网络接口
18 virtual_router_id 51 // 虚拟路由标识,同一个 vrrp_instance 的 MASTER 和 BACKUP 的 virtual_router_id 一致
19 priority 100 //优先级 MASTER 必须比 BACKUP 高,server4 此处为 50
20 advert_int 1 //MASTER 和 BACKUP 同步检查的时间间隔
21 authentication { //验证
22 auth_type PASS
23 auth_pass 1111
24 }
25 virtual_ipaddress { //虚拟 ip 地址
26 172.25.98.100
27 }
28 }
29
30 virtual_server 172.25.98.100 80 {//此处 ip 来源于上面的虚拟 ip 后面加空
格和端口号
31 delay_loop 6 //健康检查时间间隔
32 lb_algo rr //负载均衡调度算法
33 lb_kind DR
34 #persistence_timeout 50 //会话保持时间,在时间内会把请求发送给同一服务器,50s 后的请求会再次被负载均衡调度
35 protocol TCP //设置转发协议为 TCP
36
37 real_server 172.25.98.2 80 {//真实服务器地址 包括 ip 和端口号
38 weight 1 //权重
39 TCP_CHECK { //判断真实服务器的健康状态
40 connect_timeout 3 //连接超时时间
41 nb_get_retry 3 //重连次数
42 delay_before_retry 3 //重连时间间隔
43 }
44 }
45
46 real_server 172.25.98.3 80 {//设置第二个真实服务器
47 weight 1
48 TCP_CHECK {
49 connect_timeout 3
50 nb_get_retry 3
51 delay_before_retry 3
52 }
53 }
54 }
[root@server1 sbin]# /etc/init.d/keepalived start //启动服务
测试
测试是否正常工作
[root@server2 ~]# /etc/init.d/httpd start //启动真实服务器的 httpd 服务
[root@server3 ~]# /etc/init.d/httpd start
[root@server1 sbin]# ipvsadm //查看真实服务器是否添加进 ipvs 列表
TCP 172.25.98.100:http rr
-> server2:http Route 1 0 0
-> server3:http Route 1 0 0
[kiosk@foundation98 Desktop]$ curl 172.25.98.100//访问虚拟 ip可成功访问到真实
服务器,且被负载均衡
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server2-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100 Server3-index
测试对真实服务器是否健康检查
[root@server2 ~]# /etc/init.d/httpd stop //关闭真实服务器 server2 的 httpd 服务
[root@server1 sbin]# ipvsadm //查看 ipvs 列表
TCP 172.25.98.100:http rr
-> server3:http Route 1 0 0 //
健康检查机制使 server2 从 ipvs 列表中删除
[kiosk@foundation98 Desktop]$ curl 172.25.98.100//只有真实服务器 server3 被访
问,不再访问 server2,当 server2 恢复后便被重新添加进 ipvs 表
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server3-index
测试主备切换
[root@server1 sbin]# /etc/init.d/network stop //切断主节点的网络,使心跳不能被
备用节点接收
[root@server4 etc]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:22:ce:69 brd ff:ff:ff:ff:ff:ff inet 172.25.98.4/24 brd 172.25.98.255 scope global eth0
inet 172.25.98.100/32 scope global eth0 //备用节点接管资源 inet6 fe80::5054:ff:fe22:ce69/64 scope link
valid_lft forever preferred_lft forever
[kiosk@foundation98 Desktop]$ arp 172.25.98.100 //在客户端上查看到此时访问的 mac 地址为 server4 备用节点
Address HWtype HWaddress Flags Mask
Iface
172.25.98.100 ether 52:54:00:22:ce:69 C br0
[kiosk@foundation98 Desktop]$ curl 172.25.98.100//真实服务器正常被访问,系统正常工作
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server2-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server3-index
[kiosk@foundation98 Desktop]$ curl 172.25.98.100
Server2-index
[root@server1 sbin]# /etc/init.d/network start //恢复主节点
[kiosk@foundation98 Desktop]$ arp 172.25.98.100 //主节点恢复,资源回切到主节点
Address HWtype HWaddress Flags Mask
Iface
172.25.98.100 ether 52:54:00:8e:a7:97 C br0
遇到的错误调试
配置完成后,访问虚拟服务器无反应