前言:Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
准备工作:
yum install keepalived httpd
iptable -F
setenforce 0
实验:高可用的ipvs集群示例
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { root@localhost # 邮箱 } notification_email_from keepalived@localhost # 邮箱 smtp_server 127.0.0.1 # smtp服务 smtp_connect_timeout 30 # 延时 router_id xdg1 # 路由标识 vrrp_mcast_group4 224.100.100.48 # 组播地址 }vrrp_instance VI_1 { state MASTER # 主模式 interface eth0 # 监听的网卡 virtual_router_id 99 # 虚拟路由标识 priority 100 # 优先级 advert_int 1 # 通行间隔时间 1s authentication { # 预共享密钥认证 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 虚拟的ip地址 172.16.0.10/16 dev eth0 } }virtual_server 172.18.48.48 80 { # vip的地址、端口 delay_loop 3 # 健康检查时间间隔 lb_algo wrr # 基于权重的轮询模式 lb_kind DR # lvs-dr模式 protocol TCP # 基于TCP协议 sorry_server 127.0.0.1 80 # 全都出错时,返回本地的页面 real_server 172.18.48.100 80 { # RS服务器1 weight 1 # 权重 HTTP_GET { # 基于HTTP_GET的检测 url { path / # 要监控的URL status_code 200 # 检测为健康状态的响应码 } connect_timeout 1 # 连接请求的超时时长 nb_get_retry 3 # 重试次数 delay_before_retry 1 # 重试之前的延迟时长 } } real_server 172.18.48.200 80 { # RS服务器2 weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } }}
在RS服务器还要配置VIP地址,因为是LVS_DR模式基于IP地址的访问,所以要配置相应的VIP
vim lvs_dr_rs.sh
#!/bin/bashvip=172.18.48.48mask='255.255.255.255'dev=lo:1case $1 instart) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ifconfig $dev $vip netmask $mask broadcast $vip up echo "The RS Server is Ready!" ;;stop) ifconfig $dev down echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce*) echo "Usage: $(basename $0) start|stop" exit 1 ;;esac
注意事项:
1.查看系统所的服务是否开启
2.tcpdump -i eth0 -nn host 224.100.100.48 # 查看网卡接口是否接收组播的数据信息
3.配置完成之后重新启动服务
service keepalived restart
service httpd restart
4.重启之后,查看VIP的地址是否配置成功
ip a
5. 客户机 curl 172.18.48.48 # 这个时间会基于权重的轮询访问