CentOS7 安装Keepalived以及基本配置 这篇文章介绍了如何安装keepalived以及配置虚拟IP实现双机故障切换。
本文主要介绍 Keepalived+LVS 负载均衡配置与后台节点健康检查。
1:下载RPM软件包 http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26-1.src.rpm
2:安装 rpm -ivh ipvsadm-1.26-1.src.rpm 包
3:yum install ipvsadm 安装软件
4:执行 ipvsadm 看是否有下面输出说明安装成功
5:执行命令 lsmod|grep ip_vs 检查当前加载的内核模块,看是否存在 ip_vs 模块
注 1、只有执行 ipvsadm 以后,才会在内核加载 ip_vs 模块
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id NodeA
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.220
}
}
virtual_server 192.168.1.220 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.1.107 8080 {
weight 1
HTTP_GET {
url {
path /index.jsp
digest d654f21f87b7e6900b887f07c19e73fe
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.108 8080 {
weight 11
HTTP_GET {
url {
path /index.jsp
digest 625eddd79c61cf84c71c0c17448f8093
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 192.168.1.220 8080 : 这里配置虚拟服务器 (192.168.1.220 为虚拟IP, 监听8080端口)客户端就访问这个地址。
delay_loop :健康检查时间间隔,单位是秒。
lb_algo :负载均衡调度算法,互联网应用常使用 wlc 或 rr。
lb_kind :负载均衡转发规则。一般包括 DR,NAT,TUN3 种,在我的方案中,都使用DR 的方式。
persistence_timeout. :会话保持时间,单位是秒。这个会话是网络7层传输协议中的(第三层)会话。比如我们把它设置为60,那么客户端60秒内访问LVS虚拟服务器的请求都会被转到到同1个后台服务器节点。如果设置为0,那么每次请求都会根据配置的调度情况进行分发。
转发协议 protocol. 一般有 tcp 和 udp 两种。实话说,我还没尝试过 udp 协议类的转发。
real_server 192.168.1.107 8080 : 这里配置真实服务器的地址与端口。
weight 1 :权重,不解释了。一般都是机器性能好的高一些,低的小一些。
HTTP_GET:配置健康检查
url {
path /index.jsp 健康检查的页面
digest 625eddd79c61cf84c71c0c17448f8093 根据页面计算出的MD5的值,这个值一定不能随便写,不然keepliv
}
下面说一下如何计算digest
我的keepalived的安装目录在 /usr/local/keepalive/
进入到/usr/local/keepalive/bin
./genhash -s 192.168.1.107 -p 8080 -u /index.jsp
通过上诉命令计算digest 然后写到配置文件上就可以了。
connect_timeout 5 :连接超时时间
nb_get_retry 3 :重连次数
delay_before_retry 3 :重连间隔时间
connect_port 8080 :检测端口
1:CentOS7 下配置Keepalived为系统服务,开机自动启动。 systemctl start keepalived.service
2:也可以直接 /usr/local/keepalive/sbin/keepalived -D 启动,怎么启动都行。
3:启动成功输入命令 ps aux | grep keepalived
Keepalived 正常运行时,共启动 3 个进程,其中一个进程是父进程,负责监控其子进程;一个是 vrrp 子进程;另外一个是 checkers 子进程。
4:也可以查看日志:tail -f /var/log/message
5:可以用其它服务器去ping 192.168.1.220这个虚拟IP,Telnet 8080端口,测试虚拟服务器是否有问题。
#!/bin/bash
#description : start realserver
VIP=192.168.1.220
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
virtual_server 192.168.80.120 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.80.129 8080 {
weight 1
TCP_CHECK {
connect_port 8080
connect_timeout 5
}
}
real_server 192.168.80.131 8080 {
weight 1
TCP_CHECK {
connect_port 8080
connect_timeout 5
}
}
}