Keepalived简介
Keepalived可以实现服务器的高可用或热备,用来防止单点故障的问题,Keepalived的核心是VRRP(Virtual Router Redundancy Protocol)协议.VRRP协议主要实现路由器或三层交换机处的冗余。
LVS-DR-Keepalived架构配置
1.安装LVS+Keepalived(两个LVS安装)
yum -y install ipvsadm keepalived
#此处ipvsadm只是用来方便查看规则
源码包安装
yum install -y popt-static kernel-devel make gcc openssl-devel lftplibnl* popt* openssl-devel lftplibnl* popt* libnl* libpopt* gcc*
#安装ipvsadm
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar -zxvf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make && make install
ipvsadm #查看是否安装成功
#安装keepalived
wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz
tar -zxvf keepalived-1.2.16.tar.gz
cd keepalived-1.2.16
./configure
make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
service keepalived restart
2.主LVS配置Keepalived
! Configuration File for keepalived
global_defs {
notification_email { #设置报警通知邮件地址,可以设置多个
root@localhost
}
notification_email_from admin@msun.com #设置邮件的发送地址
smtp_server 127.0.0.1 #设置smtp server的地址,该地址必须是存在的
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id LVS_msun #运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息
}
vrrp_instance lvs_msun { #定义VRRP实例,实例名自定义
state MASTER #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器
interface eno16777736 #指定HA监测的接口
virtual_router_id 68 #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样
priority 100 #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
advert_int 1 #设置主备之间同步检查的时间间隔单位秒
authentication { #设置验证类型和密码
auth_type PASS #验证类型有两种{PASS|HA}
auth_pass 1689 #设置验证密码,在一个实例中主备密码保持一样
}
virtual_ipaddress { #定义虚拟IP地址,可以有多个,每行一个
192.168.1.160
}
}
virtual_server 192.168.1.160 80 { #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔
delay_loop 6 #设置健康状态检查时间,单位为秒
lb_algo rr #设置负载高度算法,rr为轮询
lb_kind DR #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种
nat_mask 255.255.255.0 #设置掩码
persistence_timeout 50 #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决>方案
protocol TCP #指定转发协议类型可以设置{TCP|UDP}两种
real_server 192.168.1.186 80 { #服务服务节点,需要指定Real_server的IP与端口,用空格分隔
weight 1 #配置服务节点的权重,数字越大,权重越高
HTTP_GET { #设置检测Realserver的方式为Http协议
url {
path /
status_code 200 #设定返回状态码为200表示Realserver是存活的
}
connect_timeout 3 #设置响应超时时间
nb_get_retry 3 #设置超时重试次数
delay_before_retry 3 #设置超时后重试间隔
}
}
real_server 192.168.1.188 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3.备LVS配置Keepalived
scp 192.168.1.166:/etc/keepalived/keepalived.conf /etc/keepalived/
#更改以下参数即可
state BACKUP
priority 98
4.Keepalived 开启路由转发并开启防火墙
echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf
sysctl -p
#VRPP组播地址允许
- firewall-cmd --permanent --add-rich='rule family="ipv4" destination address="224.0.0.18" protocol value="vrrp" accept'
firewall-cmd --permanent --add-port=80/tcp #开启防火墙80端口
firewall-cmd --reload
5.Web安装
操作IP 192.168.1.186 192.168.1.188
yum install httpd -y #安装httpd
echo 192.168.1.186 >/var/www/html/index.html #输入网站显示各自IP
systemctl restart httpd
firewall-cmd --permanent --add-port=80/tcp #开启防火墙80端口
firewall-cmd --reload
#测试,浏览器登录IP查看,是否正常启动。
6.配置Web11和Web2设置VIP
vim vip.sh
#!/bin/bash
SNS_VIP=192.168.1.160
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
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 "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
chmod 755 vip.sh
./vip.sh start
ifconfig
6.开启防火墙80端口允许并启动Keepalived
systemctl restart keepalived
LVS的一些重要参数(/proc/sys/net/ipv4/vs/下)
LVS转发行为影响参数:
expire_nodest_conn: 0 禁用(默认) 非0启用。
负载均衡器发现目标后端服务器不可用时会丢弃包。禁用,后端服务器出现删除重添回服务器池会继续连接。启用,会立即使连接过期,通知客户端连接关闭。
expire_quiescent_template: 0 禁用(默认) 非0启用。
启用时,当负载均衡器发现后端服务器处于静止(权重0)会使持续连接过期,并被发送到新的服务器。
LVS同步参数:
sync_threshold:
默认值为3.表示一个连接上收到多少个包后,才开始同步连接。
一个连接状态在以下情况会被同步:它收到的包数量除于50等于设定值。(设定值范围:0~49)
LVS-DR注意
后端服务器的虚拟IP必须绑定在lo:0上,同时子网掩码是255.255.255.255,禁用虚拟IParp。
负载均衡器之间对VRRP支持,(防火墙正确开启),防止脑裂。
lvs集群的负载均衡器推荐使用16GB内存,同时采用多队列网卡提高网卡吞吐量。《数据链路层的负载均衡》(多网卡绑定)
LVS服务器后端,根据IO密集型和CPU密集型,可以分别使用RAID10、SSD及高频多核CPU优化。