KEEPALIVED 全csdn最详细----理论+实验(干货扎实,包教会的)
环境准备
| 主机名 | IP | 虚拟IP(VIP) | 功能 |
| ka1 | 172.25.254.10 | 172.25.254.100 | keepalived服务 |
| ka2 | 172.25.254.20 | 172.25.254.100 | keepalived服务 |
| realserver1 | 172.25.254.110 | web服务 | |
| realserver2 | 172.25.254.120 | web服务 |
注意一定要关闭selinux,和防火墙,不然在后面配置vrrp时不起作用
#在realserver1上配置
[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo realserver1 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.#在realserver2上配置
[root@realserver2 ~]# yum install httpd -y
[root@realserver2 ~]# echo realserver2 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.#在ka上面测试能否访问
[root@ka1 ~]# curl 172.25.254.110
realserver1 172.25.254.110
[root@ka1 ~]# curl 172.25.254.120
realserver2 172.25.254.120[root@ka2 ~]# curl 172.25.254.110
realserver1 172.25.254.110
[root@ka2 ~]# curl 172.25.254.120
realserver2 172.25.254.120
在ka1,ka2上面配置keepalived:
[root@ka1 ~]# yum install keepalived -y
[root@ka1 ~]# systemctl enable --now keepalived[root@ka2 ~]# yum install keepalived -y
[root@ka2 ~]# systemctl enable --now keepalived
keepalived基本配置
keepalived的主配置文件为/etc/keepalived/keepalived.conf,我们主要是在这里面进行配置
在ka1上面的配置
首先打开配置文件,找到global_defs(全局配置),vrrp_instance VI_1 (配置虚拟子接口)进行如下配置:
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {2787013485@qq.com}notification_email_from keepalived@xie.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id ka1.xie.comvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18vrrp_iptables
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}

其优先级为100,其作为主服务器。
然后我们要重启keepalived服务,进行测试,其就出现VIP来供我们使用。
[root@ka1 ~]# systemctl restart keepalived
[root@ka1 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.25.254.10 netmask 255.255.255.0 broadcast 172.25.254.255inet6 fe80::20c:29ff:fe67:d0cc prefixlen 64 scopeid 0x20<link>ether 00:0c:29:67:d0:cc txqueuelen 1000 (Ethernet)RX packets 5119 bytes 363815 (355.2 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 9498 bytes 713779 (697.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.25.254.100 netmask 255.255.255.0 broadcast 0.0.0.0ether 00:0c:29:67:d0:cc txqueuelen 1000 (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 8 bytes 600 (600.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 8 bytes 600 (600.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@ka1 ~]#
如下图所示

修改ka2
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {2787013485@qq.com}notification_email_from keepalived@xie.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id ka1.xie.comvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18vrrp_iptables
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}
重启测试,然后就发现ka2上是没有VIP的。
抓包测试
[root@ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18
首先是172.25.254.10为主在发送数据。
然后关闭ka1的keepalived服务再查看该走向,其VIP就会到ka2上面

然后再重启ka1的keepalived服务,再查看,发现又出现了。
使得ka1,ka2能够ping vip
最开始ping VIP172.25.254.100是ping不通的,想要ping通有以下两种方法
1.加上vrrp_iptables
在配置文件里面加上vrrp_iptables,就可以实现了。-----注意ka1,ka2都要设置,这样才能都实现

测试界面如下:


2.注释掉 vrrp_strict
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {2787013485@qq.com}notification_email_from keepalived@xie.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id ka1.xie.comvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18}[root@ka2 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {2787013485@qq.com}notification_email_from keepalived@xie.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id ka1.xie.comvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18}#测试注释掉 # vrrp_strict ping 172.25.254.100 能否ping通
[root@ka1 ~]# systemctl restart keepalived
[root@ka1 ~]# ping 172.25.254.100
PING 172.25.254.100 (172.25.254.100) 56(84) bytes of data.
64 bytes from 172.25.254.100: icmp_seq=1 ttl=64 time=0.011 ms
64 bytes from 172.25.254.100: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 172.25.254.100: icmp_seq=3 ttl=64 time=0.054 ms
64 bytes from 172.25.254.100: icmp_seq=4 ttl=64 time=0.037 ms#测试注释掉 # vrrp_strict ping 172.25.254.100 能否ping通
[root@ka2 ~]# systemctl restart keepalived
[root@ka2 ~]# ping 172.25.254.100
PING 172.25.254.100 (172.25.254.100) 56(84) bytes of data.
64 bytes from 172.25.254.100: icmp_seq=1 ttl=64 time=0.309 ms
64 bytes from 172.25.254.100: icmp_seq=2 ttl=64 time=0.750 ms
64 bytes from 172.25.254.100: icmp_seq=3 ttl=64 time=0.613 ms
^C
--- 172.25.254.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.309/0.557/0.750/0.185 ms
[root@ka2 ~]#
启用keepalived日志
[root@ka1 ~]# vim /etc/sysconfig/keepalived# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#KEEPALIVED_OPTIONS="-D -S 6"[root@ka1 ~]# vim /etc/rsyslog.conf
#-----------------------------------------省略---------------------------------------------
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local6.* /var/log/keepalived
#-----------------------------------------省略-------------------------------------------[root@ka1 ~]# systemctl restart rsyslog.service
[root@ka1 ~]# systemctl restart keepalived.service[root@ka1 ~]# ll /var/log/keepalived.log
-rw------- 1 root root 4005 Aug 17 16:07 /var/log/keepalived.log[root@ka1 ~]# tail -f /var/log/keepalived.log
Aug 17 16:07:38 ka1 Keepalived_healthcheckers[55872]: Timeout connecting server [192.168.201.100]:443.
Aug 17 16:07:38 ka1 Keepalived_healthcheckers[55872]: Check on service [192.168.201.100]:443 failed after 3 retry.
Aug 17 16:07:38 ka1 Keepalived_healthcheckers[55872]: Removing service [192.168.201.100]:443 from VS [192.168.200.100]:443
Aug 17 16:07:38 ka1 Keepalived_healthcheckers[55872]: Lost quorum 1-0=1 > 0 for VS [192.168.200.100]:443
Aug 17 16:07:38 ka1 Keepalived_healthcheckers[55872]: Remote SMTP server [172.0.0.1]:25 connected.
Aug 17 16:07:53 ka1 Keepalived_healthcheckers[55872]: Error reading data from remote SMTP server [172.0.0.1]:25.
实现独立子配置文件
将原来的主配置文件的虚拟路由部分注释掉,添 include"/etc/keepalived/conf.d/*.conf",重新写一个子配置文件
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {2787013485@qq.com}notification_email_from keepalived@xie.comsmtp_server 172.0.0.1smtp_connect_timeout 30router_id ka1.xie.comvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 224.0.0.18# vrrp_iptables
}#vrrp_instance VI_1 {
# state MASTER
# interface eth0
# virtual_router_id 100
# priority 100
# advert_int 1
# authentication {
# auth_type PASS
# auth_pass 1111
# }
# virtual_ipaddress {
# 172.25.254.100/24 dev eth0 label eth0:1
# }
#}
include "/etc/keepalived/conf.d/*.conf"[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d
[root@ka1 ~]# vim /etc/keepalived/conf.d/172.25.254.100.confvrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}[root@ka1 ~]# systemctl restart keepalived.service
#测试
[root@ka1 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.25.254.10 netmask 255.255.255.0 broadcast 172.25.254.255inet6 fe80::20c:29ff:fe67:d0cc prefixlen 64 scopeid 0x20<link>ether 00:0c:29:67:d0:cc txqueuelen 1000 (Ethernet)RX packets 35127 bytes 2447462 (2.3 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 71612 bytes 7215886 (6.8 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.25.254.100 netmask 255.255.255.0 broadcast 0.0.0.0ether 00:0c:29:67:d0:cc txqueuelen 1000 (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 35 bytes 2896 (2.8 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 35 bytes 2896 (2.8 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
keepalived企业应用实例
抢占模式和非抢占模式
非抢占模式
nopreempt
默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,这样会使vip在KA主机中来回漂移,造成网络抖动,建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色。
非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机。
注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP
ka1上主配置文件的配置:添加nopreempt,并修改BACKUP。
[root@ka1 ~]# vim /etc/keepalived/keepalived.confvrrp_instance VI_1 {state BACKUP #改为BACKUPinterface eth0virtual_router_id 100priority 100nopreempt #添加非抢占模式advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}
[root@ka1 ~]# systemctl restart keepalived.service[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}[root@ka2 ~]# systemctl restart keepalived
抢占延迟模式 preempt_delay
抢占延迟模式,即优先级高的主机恢复后,不会立即抢回 VIP ,而是延迟一段时间(默认 300s)再抢回 VIP
preempt_delay # # 指定抢占延迟时间为 #s ,默认延迟 300s
注意:需要各 keepalived 服务器 state 为 BACKUP, 并且不要启用 vrrp_strict
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf# KA1主机配置抢占延迟模式vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 100advert_int 1preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}[root@ka2 ~]# vim /etc/keepalived/keepalived.conf# KA2上的非抢占模式与KA1相同,加上preempt_delay 5s参数即可
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 100advert_int 1preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}
}
然后我们可以 通过stop再进行restart keepalived
查看VIP,间隔时间为抢占延时时间。做完这个实验之后建议删掉或者注释·此配置。
4.3 VIP单播配置
默认 keepalived 主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量。
注意:启用 vrrp_strict 时,不能启用单播
# KA1配置组播变单播vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}
}# KA2配置组播变单播vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}}
此时VIP在KA1上,利用抓包工具抓到从KA1传给KA2的流量

现在关掉KA1再做测试



此时VIP跑到KA2上,重新开启KA1后,VIP又会重新回到KA1上
keepalived通知脚本配置
邮件配置
安装邮件发送工具mailx,KA1和KA2都需要安装
[root@ka1 ~]# yum install mailx -y
QQ邮箱配置
[root@ka1 ~]# vim /etc/mail.rc# For Linux and BSD, this should be set.
set bsdcompat
set from=2787013485@qq.com #自己的QQ邮箱
set smtp=smtp.qq.com
set smtp-auth-user=2787013485@qq.com
set smtp-auth-password=umyqzzecpjhqddbc #在网页QQ邮箱中申请自己的授权码
set smtp-auth=login
set ssl-verify=ignore

[root@ka1 ~]# vim /etc/mail.rc
[root@ka1 ~]# echo hello world | mail -s test 2787013485@qq.com
测试发送邮箱:

[root@ka1 ~]# vim /etc/keepalived/mail.sh
#!/bin/bash
mail_dest='2787013485@qq.com'
send_message()
{mail_subj="$HOSTNAME to be $1 vip move"mail_mess="`date +%F\ %T`: vrrp move $HOSTNAME change $1"echo "$mail_mess" | mail -s "$mail_sub" $mail_dest
}case $1 inmaster)send_message master;;backup)send_message backup;;fault)send_message fault;;*);;
esac# 给脚本赋予权限
[root@ka1 ~]# chmod +x /etc/keepalived/mail.sh
# 执行脚本观察QQ邮箱
[root@ka1 ~]# /etc/keepalived/mail.sh master# 编辑配置文件实行脚本的调用
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
=================省略==================
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}notify_master "/etc/keepalived/mail.sh master"notify_backup "/etc/keepalived/mail.sh backup"notify_fault "/etc/keepalived/mail.sh fault"
}
=================省略==================# 重启服务
[root@ka1 ~]# systemctl restart keepalived.service#KA2也需要跟KA1做同样的操作,如果不想写可以直接复制
[root@ka2 keepalived]# scp -v 172.25.254.10:/etc/keepalived/mail.sh /etc/keepalived/# 最后停掉KA1的keepalived,然后在自己的QQ邮箱中查看是否发了邮件

实现master/master的Keepalived双主架构
双主架构用途:
master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高服务器资源利用率。
# KA1主机
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
=================省略==================
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}}
vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 80advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}
}
=================省略==================#KA2上
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
=================省略==================
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}
}
vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 100#advert_int 1#nopreemptpreempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}
}
=================省略==================


此时两台Keepalived主机上都分别有一个VIP
# 在两台后端RealServer上安装httpd
[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo realserver1 - 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl enable --now httpd.service # 配置环回IP地址
[root@realserver1 ~]# ip a a 172.25.254.100/32 dev lo# 禁止ARP响应
[root@realserver1 ~]# vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2[root@realserver2 ~]# sysctl --p
[root@realserver2 ~]# sysctl --system# RealServer2也做同样的配置
[root@realserver2 ~]# yum install httpd -y
[root@realserver2 ~]# echo realserver2 - 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl enable --now httpd.service # 配置环回IP地址
[root@realserver2 ~]# ip a a 172.25.254.100/32 dev lo# 禁止ARP响应
[root@realserver2 ~]# vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2[root@realserver2 ~]# sysctl --p
[root@realserver2 ~]# sysctl --system
# 在两台Keepalived主机上安装ipvsadm
#KA1
[root@ka1 ~]# yum install ipvsadm -y# 在Keepalived配置文件中配置Keepalived
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf=================省略==================
virtual_server 172.25.254.100 80 {delay_loop 6lb_algo wrrlb_kind DR#persistence_timeout 50protocol TCPreal_server 172.25.254.110 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}real_server 172.25.254.120 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
}
------------省略--------------# KA2
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
=================省略==================
virtual_server 172.25.254.100 80 {delay_loop 6lb_algo wrrlb_kind DR#persistence_timeout 50protocol TCPreal_server 172.25.254.110 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}real_server 172.25.254.120 80 {weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 2delay_before_retry 2}}
}
=================省略==================
# 重启服务,在测试端进行访问测试结果
# 检查一下lvs策略
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr-> 172.25.254.110:80 Route 1 0 0 -> 172.25.254.120:80 Route 1 0 0 [root@test ~]# while true; do curl 172.25.254.100; sleep 0.5; done
realserver1 - 172.25.254.110
realserver2 - 172.25.254.120
realserver1 - 172.25.254.110
realserver2 - 172.25.254.120
realserver1 - 172.25.254.110
realserver2 - 172.25.254.120
realserver1 - 172.25.254.110
realserver2 - 172.25.254.120# 模拟故障
#第一台RS1故障,自动切换至RS2
[root@realserver1 ~]# systemctl stop httpd #当RS1故障
[root@realserver1 ~]# while true; do curl 172.25.254.100; sleep 0.5; done
#全部流浪被定向到RS2中
realserver2 - 172.25.254.120
realserver2 - 172.25.254.120
realserver2 - 172.25.254.120
realserver2 - 172.25.254.120
realserver2 - 172.25.254.120
realserver2 - 172.25.254.120#RS1策略被踢出保留RS2的lvs策略
[root@ka1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.254.100:80 wrr -> 172.25.254.120:80 Route 1 0 0
# 在两台后端RealServer上删掉环回地址
[root@realserver1 ~]# ip a d 172.25.254.100/32 dev lo# 开启ARP响应
[root@realserver1 ~]# vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=0
net.ipv4.conf.all.arp_announce=0
net.ipv4.conf.lo.arp_ignore=0
net.ipv4.conf.lo.arp_announce=0# 注释掉在Keepalived主机上的LVS策略部分# 两台keepalived主机上安装HAProxy
[root@ka1 ~]# yum install haproxy -y#在两个ka1和ka2两个节点启用内核参数
[root@ka1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
[root@ka1 ~]# sysctl -p# 在两个ka1和ka2实现haproxy的配置
[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg=================省略==================
isten webclusterbind 172.25.254.100:80mode httpbalance roundrobinserver web1 172.25.254.110:80 check inter 3 fall 2 rise 5server web2 172.25.254.120:80 check inter 3 fall 2 rise 5# 编写脚本监测HAProxy状态
[root@ka1 ~]# vim /etc/keepalived/test.sh
#!/bin/bash
killall -0 haproxy# 给脚本执行权限
[root@ka1 ~]# chmod +x /etc/keepalived/test.sh# 在ka1中配置keepalived
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf =================省略==================
vrrp_script check_haproxy {script "/etc/keepalived/test.sh"interval 1weight -30fall 2rise 2timeout 2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 100priority 100advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}track_script {check_haproxy}}vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 80advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.10unicast_peer {172.25.254.20}
}=================省略==================# 在KA2上配置Keepalived
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf=================省略==================
vrrp_script check_haproxy {script "/etc/keepalived/test.sh"interval 1weight -30fall 2rise 2timeout 2
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 100priority 80advert_int 1#nopreempt#preempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.100/24 dev eth0 label eth0:1}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}
}
vrrp_instance VI_2 {state MASTERinterface eth0virtual_router_id 200priority 100#advert_int 1#nopreemptpreempt_delay 5sauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.25.254.200/24 dev eth0 label eth0:2}unicast_src_ip 172.25.254.20unicast_peer {172.25.254.10}track_script {check_haproxy}}
=================省略==================# 重启服务进行测试
相关文章:
KEEPALIVED 全csdn最详细----理论+实验(干货扎实,包教会的)
环境准备 主机名IP虚拟IP(VIP)功能ka1172.25.254.10172.25.254.100keepalived服务ka2172.25.254.20172.25.254.100keepalived服务realserver1172.25.254.110web服务realserver2172.25.254.120web服务 注意一定要关闭selinux,和防火墙,不然在…...
微信云开发云存储全部下载
一、安装 首先按照这个按照好依赖 安装 | 云开发 CloudBase - 一站式后端云服务 npm i -g cloudbase/cli 二、登录 tcb login 下载 首先在你要下载到的本地文件内创建一个名为:cloudbaserc.json 的json文件。 填入你的id {"envId":"你的云开发环…...
vos3000怎样对接voip落地语音网关呢?卡机和O口网关的配置技巧有哪些?
很多朋友没有接触过vos系统的使用,那么vos3000如何对接voip落地网关呢?卡机的配置技巧有哪些? VOS3000系统是针对中小等规模VoIP运营业务提供的支撑系统。 语音网关 落地网关分O口网关,S口网关,和全网通GOIP语音网关。…...
MySQL数据库专栏(四)数据库操作
1、创建数据库 create database if not exists [数据库名称] character set [字符集] COLLATE [排序规则]; 例如:create database if not exists db_demo character set utf8mb4 COLLATE utf8mb4_general_ci; if not exists:判断数据库是否存在&#x…...
Python编写Word文档
目录 0. 安装依赖 1. 创建word文档 2. 添加标题、居中、字体16大小 3. 添加标题一 4. 添加一段话并设置字体颜色 封装函数 5. 换页 6. 插入表格 0. 安装依赖 python-docx1.1.2 1. 创建word文档 from docx import Documentdoc Document() 2. 添加标题、居中、字体1…...
聚星文社AI工具
聚星文社AI工具是一款基于人工智能技术的文学创作辅助工具。聚星文社AI工具https://docs.qq.com/doc/DRU1vcUZlanBKR2xy 它能够帮助作者生成文字内容、自动校对、提供创作灵感等功能。 通过聚星文社AI工具, 作者可以更快速地完成文学作品的创作,提高创…...
思科OSPF动态路由配置8
#路由协议实现# #任务八OSPF动态路由配置8# 开放式最短路径优先(Open Shortest Path First,OSPF)协议是目前网络中应用最广泛的动态路由协议之一。它也属于内部网关路由协议,能够适应各种规模的网络环境,是典型的链路状态路由协…...
C++(10)类语法分析(1)
C(10)之类语法分析(1) Author: Once Day Date: 2024年8月17日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 …...
python语言day6 os random datetime .ini文件
os: 获取运行当前py文件的绝对路径: abspath中添加路径,会直接和绝对路径拼接。 folder_path os.path.abspath("") print(folder_path) 路径拼接: mac系统路径:file/TranslucentTB win系统路径:…...
powershell 终端 执行 pnpm -v报错
1.问题描述: 明明全局已安装 pnpm ,但在vscode默认终端 powershell 执行 pnpm -v 却报错: 2.问题根因: 原因是 PowerShell 执行策略问题。 3.解决方案: 以管理员身份运行 PowerShell 查看 PowerShell 的执行策略…...
最新保姆级Anaconda和Pycharm安装激活过程(2024最新版本)
Anaconda和Pycharm安装过程 Anaconda安装过程第一步第二步第三步第四步第五步第六步第七步第八步第九步Pycharm 安装过程:第一步第二步第三步第四步第五步第六步---激活过程第七步第八步第九步第十步第十一步第十二步第十三步第十四步Anaconda和Pycharm软件百度网盘…...
虚幻5|布料模拟
打开骨骼网格体 1.Mass Prooerties 如果给角色施加风力,密度越大越难飘,相反密度越小飘动浮度也小 2.Material Proerties Edge Stiffness,对衣服的折痕处的调整,其值越大就越能维持原本的折痕,相反折痕就会变小,但…...
K8S 存储
K8S(Kubernetes)的存储是容器化应用程序中非常重要的一部分,它帮助用户在不同场景下管理和存储数据。K8S提供了多种存储方式,以满足不同的存储需求。以下是对K8S存储的详细解析: 一、K8S存储类型 K8S的存储类型主要分…...
Kafka Manager支持jdk1.8的部署和使用
一、Kafka Manager简介 Kafka Manager 可能是现在能找到的最好的可视化的Kafka管理工具, 感谢Yahoo的开源; 使用Kafka Manager, 基本上之前需要运行Kafka相应命令行工具的工作现在都可以可视化的完成:创建Topic, 调整消息保存时长, Partition数量等等配置;管理Topic, 包括Reas…...
vmware和virtualbox优缺点
vmware和virtualbox优缺点 ,都可以搭建本地虚拟机,他们有什么优缺点,两个都用过 ,本次打算直接用virtualbox搭建本地虚拟机,比较轻量级 VirtualBox的优点: 免费使用:VirtualBox是一…...
[C++进阶]二叉树进阶的一些面试题(一)
首先我们先回忆我们过去学的二叉树和最近学的二叉搜索树,来完成下面的题目: 606. 根据二叉树创建字符串 这道题属于与基础题,首先我们观察输入输出样例可以得到如果root->left为空,root->right不为空时,我们的空格仍然需要保留,如果当前节点有两个孩子,那我…...
【Python单元测试】学习笔记1
文章目录 01-单元测试基础什么是单元测试常用的文件结构运行单元测试 02. 断言函数03. Test Fixtures什么是Test Fixtures模块级别的Fixtures类级别的Fixtures方法级别的Fixtures 04.Mock python单元测试学习笔记1:https://blog.csdn.net/qq_42761751/article/detai…...
NVDLA专题10:具体模块介绍——Planar Data Processor
概述 平面数据处理器(Planar Data Processor, PDP)沿宽x高的前两个维度平面执行操作,在NVDLA版中,PDPD旨在实现池化层,module定义在NV_NVDLA_pdp.v。支持最大、最小和平均池化方法。平面内的几个相邻输入元素将被发送到非线性函数来计算一个…...
面向财商人群的AI垂直产品 —— AI股票助手
在数字化转型的大潮中,AI技术正在重塑各行各业,尤其是金融市场。对于那些渴望在瞬息万变的股市中保持敏锐洞察力的金融分析师、投资者及股票爱好者来说,一款强大而智能的工具显得尤为重要。今天,我们将向大家介绍一款专为财商人群打造的AI垂直产品——AI股票助手。 一、产…...
玩AI第二步——python 环境安装
python 环境安装 前言 通常,我们会直接去python官网下载一个安装包直接安装即可. 但是这样很不好,总不能把所有版本的python都安装一遍 所以,这里安装minconda,是一个轻量级的Python环境管理工具,仅包括conda、Python及其所需的基本依赖库。因此,它的…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
