高可用-Lvs+Keepalived
主从模式
环境
IP
用途
10.10.181.17
Master
10.10.181.17
Slave
10.10.181.100
VIP
初始化
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
systemctl stop firewalld && systemctl disable firewalld
yum install ntpdate -y
ntpdate time.windows.com
安装依赖
yum -y install gcc openssl-devel popt-devel libnl* kernel-devel ipvsadm libnfnetlink libnfnetlink-devel net-snmp-agent-libs wget
安装keepalived
wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
tar xvf keepalived-1.3.5.tar.gz
cd keepalived-1.3.5
./configure --prefix=/usr/local/keepalived/
make && make install
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
/usr/sbin/keepalived
echo '/usr/sbin/keepalived' >> /etc/rc.local
# 查看主是否存在 vrrp ip 地址
配置 keepalived
# 备主机: 修改一下 state、优先级
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
xxxx@xxxxxx
}
notification_email_from xxxx@xxxxxx
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
# 定义脚本
vrrp_script check_nginx {
script "/usr/local/keepalived/sbin/check_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
# 设置主机状态,MASTER|BACKUP
state MASTER
# 对外提供服务的网络接口
interface ens192
# 主备服务器要保持一致,VRID标记 ,路由ID,可通过 tcpdump vrrp 查看
virtual_router_id 100
# 优先级,高优先级竞选为master
priority 100
# 心跳线检验时间
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# VIP地址, 可多个
10.10.181.100
}
# 使用自定义脚本函数
track_script {
check_nginx
}
}
# LVS服务器地址,使用VIP地址
virtual_server 10.10.181.100 80 {
# 健康检查时间间隔
delay_loop 6
# LVS调度算法,rr|wrr|lc|wlc|lblc|sh|dh
lb_algo rr
# LVS工作模式,负载均衡转发规则NAT|DR|RUN
lb_kind DR
# 保持客户端的请求在这个时间段内全部发到同一个真实服务器,单位为秒; 会话保持
#persistence_timeout 50
# 使用协议
protocol TCP
# 后端真实WEB服务器1
real_server 10.10.181.17 80 {
weight 1
TCP_CHECK {
# 连接超时时间
connect_timeout 3
# 健康检查的端口的端口;
connect_port 80
# 重连次数
nb_get_retry 3
# 重连间隔时间
delay_before_retry 3
}
}
# 后端真实WEB服务器2
real_server 10.10.181.18 80 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
nb_get_retry 3
delay_before_retry 3
}
}
}
EOF
检查脚本
#!/bin/bash
run=$(ps -C nginx --no-header | wc -l)
if [[ $run -eq 0 ]];then
/etc/rc.d/init.d/nginx start
sleep 3
fi
# 执行权限
chmod +x /usr/local/keepalived/sbin/check_nginx.sh
主主模式
与主从模式类似,只需要再复制: vrrp_instance 、virtual_server 即可,再添加 一个vip,让新添加的vip漂移到主从的从服务器上,然后反过来定义master,slave, 主主ok
Last updated