KEEPALIVED是什么?以及实现各功能的配置实验

news2024/9/11 9:59:26

一、高可用集群KEEPALIVED

1.1 KEEPALIVED的出现

LVS ---> HAProxy ---> KEEPALIVED

LVS:

LVS:四层调度,IP地址,mac地址以及端口对后端进行调度。优点:速度快,对 LVS 的性能要求比较低。缺点:不能实现对后端服务器进行健康检测。因此出现了 haproxy

HAProxy

HAProxy:可以实现对后端服务器进行健康检测,支持七层,可以通过httpd报文,对报文数据进行分析,实现动静分离(ACL)。缺点:稳定性弱。因此需要主备,使用 KEEPALIVED 实现。

1.2 集群类型

  • 负载均衡:LB。haproxy 和后端 realserver 共同组成的集群。流量通过不同的调度算法,调度到负载最小的主机上。
  • 高可用集群:HA。集群在生产环境中,在线率越高,在线时长越长,高可用性能越好,例如:主备。解决单点故障问题
  • 高性能集群:HPC。解决单个主机的运算能力达不到要求,将多台主机组合到一起。

1.3 高可用计算公式

A=MTBF/(MTBF+MTTR):MTBF(在线时间)、MTTR(平均故障处理时间)越小高可用效果更好

1.4 实现高可用

  • 主 <---> 备
  • 双主(主主:互为主备,提供不同的服务)

注:两台服务器之间都有心跳(服务器每隔一段时间发送信息给组播地址,组播地址收到后便认为该服务器是存活的)

1.5 VRRP

VRRP:虚拟路由冗余协议,解决静态网关单点风险,心跳。解决路由出现问题(主备两台路由器,同时发送组播信息,组播地址收不到信息,通过组播发现问题机,将vip地址进行切换,换成活动的(组播可以收到信息的)机器),如下图 。心跳基于该协议。

VRRP 对于路由和服务器的管理区别:

VRRP 用于虚拟路由:主要管理内部主机能够出去,访问互联网。

VRRP 用于keepalived:解决互联网的客户访问能够通过 vip 进入访问内部网络。

1.6 VRRP相关术语

虚拟路由器标识VRID(0-255),唯一标识虚拟路由器

VIP:虚拟IP。VIP的切换,取决于路由的优先级

VMAC:虚拟MAC地址

物理路由器
        master:主设备
        backup:备用设备
        priority:优先级(在主备服务器中,谁优先级高vip就在哪里)

通告:心跳。通过给组播发送存活信息。

工作方式:抢占式,非抢占式,延迟抢占(当宕机的机器恢复好后,抢占模式就会将 vip 抢回来,非抢占模式就会保持不变,延迟抢占是设定一定的时间,时间一到就将 vip 抢回来)

安全认证:信息的传输过程是否加密。

        无认证
        简单字符认证:预共享密钥
        MD5

工作模式

        主/备:单虚拟路由器
         主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

二、keepalived部署

2.1 功能:

  1. 基于vrrp协议完成地址流动

  2. 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

  3. 为ipvs集群的各RS做健康状态检测

  4. 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

2.2 用户空间核心组件:

vrrp stack:VIP消息通告

checkers:监测real server

system call:实现 vrrp 协议状态转换时调用脚本的功能

SMTP:邮件组件(当两端任意一方挂了后,负责通知)

IPVS wrapper:生成IPVS规则(当任意一方挂了后,从策略里面剔除)

Netlink Reflector:网络接口

WatchDog:监控进程

三、keepalived 基础配置实验

3.1 主备实验

环境准备:

四台主机

RHEL7备份:realserver1(172.25.254.110)、realserver2(172.25.254.120)、ka1(172.25.254.10)、ka2(172.25.254.20)(vip:172.25.254.100)

> 1个核心处理器,1G内存大小即可 <

代码部分:

[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl enabled --now httpd
[root@realserver2 ~]# yum install httpd -y
[root@realserver2 ~]# echo 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl enabled --now httpd
[root@ka1 ~]# yum install keepalived -y
[root@ka1 ~]# rpm -ql keepalived
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
        1231234574@qq.com				#keepalived 发生故障切换时邮件发送的目标邮箱
   }
   notification_email_from keepalived@company.org			#发邮件的地址
   smtp_server 127.0.0.1				#邮件服务器地址
   smtp_connect_timeout 30				#邮件服务器连接timeout
   router_id ka1.company.org		#每个keepalived主机唯一标识
   vrrp_skip_check_adv_addr				#对所有通告报文都检查,会比较消耗性能
   vrrp_strict							#严格遵循vrrp协议
   										#启用此项后以下状况将无法启动服务:
											#1.无VIP地址
											#2.配置了单播邻居
											#3.在VRRP版本2中有IPv6地址
											#建议不加此项配置
   vrrp_garp_interval 0					#报文发送延迟,0表示不延迟
   vrrp_gna_interval 0					#消息发送延迟
   vrrp_mcast_group4 224.0.0.18			#指定组播IP地址范围
}
#配置虚拟路由器
vrrp_instance VI_1 {
    state MASTER
    interface eth0						#绑定为当前虚拟路由器使用的物理接口
    virtual_router_id 100			#每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一
											#否则服务无法启动
											#同属一个虚拟路由器的多个keepalived节点必须相同
											#务必要确认在同一网络中此值必须唯一
    priority 100						#当前物理节点在此虚拟路由器的优先级,范围:1-254
											#值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1						#vrrp通告的时间间隔,默认1s
    authentication {					#认证机制
        auth_type PASS					#AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
        auth_pass 1111					#预共享密钥,仅前8位有效。#同一个虚拟路由器的多个keepalived节点必须一样
    }
    virtual_ipaddress {					#虚拟IP,生产环境可能指定上百个IP地址
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka1 ~]# systemctl enable --now keepalived.service
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# ifconfig
#抓包检测:
[root@ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18
#另开一台ka1测试
[root@ka1 ~]# systemctl stop keepalived.service 
[root@ka1 ~]# systemctl start keepalived.service
[root@ka2 ~]# yum install keepalived -y
[root@ka2 ~]# rpm -ql keepalived
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
        1231234574@qq.com
   }
   notification_email_from keepalived@company.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.company.org
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# systemctl enable --now keepalived.service

测试:

 

但并不能实现对 vip 的访问

3.2 实现 vip 访问

代码部分:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka1 ~]# systemctl restart keepalived.service 
global_defs {
   notification_email {
        1231234574@qq.com
   }
   notification_email_from keepalived@company.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.company.org
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
   vrrp_iptables
}
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service 

测试: 

3.3 启用keepalived日志功能

代码部分:

[root@ka1 ~]# vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"
[root@ka1 ~]# vim /etc/rsyslog.conf
local6.*                                                /var/log/keepalived.log
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# systemctl restart rsyslog.service 
[root@ka1 ~]# ll /var/log/keepalived.log 
-rw------- 1 root root 601 Aug 12 13:51 /var/log/keepalived.log

3.4 独立子配置文件

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
#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.conf
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
    }
}

[root@ka1 ~]# systemctl restart keepalived.service 

3.5 抢占模式和非抢占模式:

非抢占

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka1 ~]# systemctl restart keepalived.service 		#先重启da1的服务
[root@ka1 ~]# ifconfig 
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# ifconfig 

抢占延迟

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# ifconfig 

[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
}
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# ifconfig 

[root@ka1 ~]# systemctl stop keepalived.service 
[root@ka1 ~]# systemctl restart keepalived.service

3.6 VIP单播配置

前提:

#vrrp_strict

#vrrp_iptables         #注释这两个参数,与vip单播模式冲突

以上两行影响单播抢占效果

单播:一个IP到一个IP

组播:一个IP到多个IP

广播:一个IP到...(未知)

unicast_src_ip:源主机IP

unicast_peer:对端IP

代码部分:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# ifconfig 
[root@ka1 ~]# tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20

[root@ka1 ~]# systemctl stop keepalived.service 		#停止服务后,去da2查看,发现有包达,vip过去了。重启后,vip又过来了,da1就又有了
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20


[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# ifconfig 
[root@ka2 ~]# tcpdump -i eth0 -nn src host 172.25.254.20 and dst 172.25.254.10
10:
global_defs {
   notification_email {
        1231234574@qq.com
   }
   notification_email_from keepalived@company.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.company.org
   vrrp_skip_check_adv_addr
   #vrrp_strict		 #注释此参数,与vip单播模式冲突
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
   #vrrp_iptables	 #注释此参数,与vip单播模式冲突
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.10
    unicast_peer {
        172.25.254.20
    }
}

20:
global_defs {
   notification_email {
        1231234574@qq.com
   }
   notification_email_from keepalived@company.org
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id ka1.company.org
   vrrp_skip_check_adv_addr
   #vrrp_strict		 #注释此参数,与vip单播模式冲突
   vrrp_garp_interval 0
   vrrp_gna_interval 0
   vrrp_mcast_group4 224.0.0.18
   #vrrp_iptables	 #注释此参数,与vip单播模式冲突
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
}

测试:

 

3.7 Keepalived通知脚本配置

前提:

需要使用QQ邮箱开启授权码:前往QQ邮箱的账号与安全中心进行设置

代码部分:

[root@ka1 ~]# yum install mailx -y
[root@ka1 ~]# vim /etc/mail.rc 
#最后编写:
set from=1231234574@qq.com        #编写自己可收邮箱的
set smtp=smtp.qq.com
set smtp-auth-user=1231234574@qq.com
set smtp-auth-password=ukjiwlpvufjtjj
set smtp-auth=login
set ssl-verify=ignore
[root@ka1 ~]# echo test| mail -s test 1231234574@qq.com

[root@ka1 ~]# vim /etc/keepalived/mail.sh
[root@ka1 ~]# chmod +x /etc/keepalived/mail.sh
[root@ka1 ~]# /etc/keepalived/mail.sh master

#!/bin/bash
mail_dst="1231234574@qq.com"
send_message()
{
  mail_sub="$HOSTNAME to be $1 vip move"
  mail_msg="`date +%F\ %T`: vrrp move $HOSTNAME chage $1"	#date +%F\ %T:年月日时间 move移动
  echo $mail_msg | mail -s "$mail_sub" $mail_dst
}

case $1 in
  master)
  send_message master
  ;;
  backup)
  send_message backup
  ;;
  fault)
  send_message fault
  ;;
  *)
  ;;
esac
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.10
    unicast_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 
[root@ka1 ~]# systemctl stop keepalived.service		#da2自动发送
[root@ka1 ~]# systemctl restart keepalived.service		#da1发送



[root@ka2 ~]# yum install mailx -y
[root@ka2 ~]# vim /etc/mail.rc
#最后编写:
set from=1231234574@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1231234574@qq.com
set smtp-auth-password=ukjiwlpvufjtjj
set smtp-auth=login
set ssl-verify=ignore
[root@ka1 ~]# echo test| mail -s test 1231234574@qq.com

[root@KA2 ~]# vim /etc/keepalived/mail.sh
[root@KA2 ~]# chmod +x /etc/keepalived/mail.sh
[root@ka2 ~]# /etc/keepalived/mail.sh master
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
    notify_master "/etc/keepalived/mail.sh master"
    notify_backup "/etc/keepalived/mail.sh backup"
    notify_fault "/etc/keepalived/mail.sh fault"
}

3.8 多主模式:

前提:

双主:需要两个vip

代码部分:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# ifconfig 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.10
    unicast_peer {
        172.25.254.20
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 200
    priority 80
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev eth0 label eth0:2
    }
    unicast_src_ip 172.25.254.10
    unicast_peer {
        172.25.254.20
    }
}


[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# ifconfig 
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 80
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 200
    priority 100
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.200/24 dev eth0 label eth0:2
    }
    unicast_src_ip 172.25.254.20
    unicast_peer {
        172.25.254.10
    }
}

测试:

3.9 实现IPVS的高可用性

可以实现一台机器宕机也不会影响轮询效果

前提:

110和120都需要vip

110:

ip a a 172.25.254.100/32 dev lo

代码部分:

[root@realserver1 ~]# ip a a 172.25.254.100/32 dev lo
[root@realserver1 ~]# cd /etc/sysconfig/network-scripts/
[root@realserver1 network-scripts]# vim ifcfg-lo
DEVICE=lo
IPADDR0=127.0.0.1
NETMASK0=255.0.0.0
IPADDR1=172.25.254.100
NETMASK1=255.255.255.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
[root@realserver1 ~]# sysctl -a | grep arp



[root@realserver2 ~]# ip a a 172.25.254.100/32 dev lo
[root@realserver2 ~]# vim /etc/sysctl.d/arp.conf
[root@realserver2 ~]# sysctl --system
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 ~]# scp /etc/sysctl.d/arp.conf root@172.25.254.100:/etc/sysctl.d/arp.conf




[root@ka1 ~]# yum install ipvsadm -y
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[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@ka1 ~]# yum install ipvsadm -y
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# ipvsadm -Ln
virtual_server 172.25.254.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
    
    real_server 172.25.254.110 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            } 
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 2
        }   
    }   
    
    real_server 172.25.254.120 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 2
        }
    }
}

测试:

3.10 实现HAProxy高可用

代码部分:

[root@realserver1 ~]# systemctl restart network
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
[root@realserver1 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0   
virbr0  0675fa0c-3989-45c3-bdf8-014f2e31edaf  bridge    virbr0 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  --     
[root@realserver1 ~]# nmcli connection delete ens33			#删除没用的ens33
Connection 'ens33' (c96bc909-188e-ec64-3a96-6a90982b08ad) successfully deleted.
[root@realserver1 ~]# systemctl restart network
[root@realserver1 ~]# ip a		#查看上个实验添加的环回地址是否还在,在就删除掉
[root@realserver1 ~]# ip a d 172.25.254.100/32 dev lo			#删除环回
[root@realserver1 ~]# ip a
[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
[root@realserver1 ~]# sysctl --system
#停止和启动ka1的服务,轮询依旧不变
[root@realserver1 ~]# while true; do curl 172.25.254.100;sleep 1; done
[root@realserver2 ~]# systemctl restart network
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
[root@realserver2 ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
eth0    5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0   
virbr0  6dd347bc-a380-4e1c-8272-86658279a412  bridge    virbr0 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  --     
[root@realserver2 ~]# nmcli connection delete ens33
Connection 'ens33' (c96bc909-188e-ec64-3a96-6a90982b08ad) successfully deleted.
[root@realserver2 ~]# systemctl restart network
[root@realserver2 ~]# ip a
[root@realserver2 ~]# ip a d 172.25.254.100/32 dev lo
[root@realserver2 ~]# ip a
[root@realserver2 ~]# vim /etc/sysctl.d/arp.conf 
[root@ka1 ~]# vim /etc/sysctl.conf 
net.ipv4.ip_nonlocal_bind=1
[root@ka1 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
[root@ka1 ~]# yum install haproxy -y
[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg 
#最后添加
listen webcluster
    bind 172.25.254.100:80
    mode http
    balance roundrobin
    server web1 172.25.254.110:80 check inter 3 fall 2 rise 5
    server web2 172.25.254.120:80 check inter 3 fall 2 rise 5
[root@ka1 ~]# systemctl enable --now haproxy.service 
[root@ka1 ~]# netstat -antlupe | grep haproxy

[root@ka1 ~]# vim /etc/keepalived/test.sh 
#!/bin/bash
killall -0 haproxy
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 		#注释掉virtual_server的内容,增加内容如下图
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# systemctl restart haproxy.service 
[root@ka1 ~]# systemctl stop keepalived.service 
[root@ka1 ~]# ifconfig 
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# ifconfig 
[root@ka2 ~]# vim /etc/sysctl.conf 
[root@ka2 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
[root@ka2 ~]# yum install haproxy -y

[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg 
[root@ka2 ~]# systemctl enable --now haproxy.service 
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# vim /etc/keepalived/test.sh
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service 
[root@ka2 ~]# systemctl restart haproxy.service 
#关闭ka1的服务后,检查
[root@ka2 ~]# ifconfig 
#开启ka2的服务后,检查
[root@ka2 ~]# ifconfig 
vrrp_script check_haproxy {
    script "/etc/keepalived/test.sh"
    interval 1
    weight -30
    fall 2
    rise 2
    timeout 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    #preempt_delay 5s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:1
    }
    unicast_src_ip 172.25.254.10
    unicast_peer {
        172.25.254.20
    }
    track_script {
        check_haproxy
    }
}

测试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

离职保密协议是什么?怎么样才是合法的?如何维护公司权益?

“商贾之道&#xff0c;在于诚信&#xff1b;机密之重&#xff0c;犹胜千金。” 在历史的长河中&#xff0c;商业机密一直是商家兴衰成败的关键。 时至今日&#xff0c;随着科技的飞速发展&#xff0c;信息时代的浪潮更是将商业秘密的保护推向了新的高度。 离职保密协议&…

前端(HTML + CSS)小兔鲜儿项目(仿)

前言 这是一个简单的商城网站&#xff0c;代码部分为HTML CSS 和少量JS代码 项目总览 一、头部区域 头部的 购物车 和 手机 用的是 文字图标&#xff0c;所以效果可以和文字一样 购物车右上角用的是绝对定位 logo用的是 h1 标签&#xff0c;用来提高网站搜索排名 二、banne…

简单的class.getResource与classLoader.getResource区别

简单的getClass().getResource()与ClassLoader.getResource()区别 1.简介 我们在springboot项目中&#xff0c;如果要获取到自己配置的资源或者配置类信息一般会用到Class.getResource()或ClassLoader.getResource()&#xff0c;这两种方式在使用的过程中很容易混淆&#xff…

echarts格式化图例回调函数返回对象

使用返回的对象可以自定义图例显示 formatter:function(obj){var label obj.seriesName "<br/>" obj.marker obj.name ":" obj.value "宗" "<br/>" "占比" obj.percent "%";return label…

四川大型数字媒体产业园区在哪里,有推荐吗?

四川省作为中国西南地区的经济和文化重镇&#xff0c;数字媒体产业的发展取得了令人瞩目的成绩。以下是四川省排名前十的数字媒体产业园&#xff0c;这些园区在推动科技创新和区域经济发展方面发挥了重要作用。 1、 国际数字影像产业园 位置&#xff1a;成都市金牛区 特点&…

触摸屏接口设置-洋桃百科

触摸屏接口设置-洋桃百科 电路设计 ​​ 触摸屏的组成&#xff1a; PCB板层&#xff1a;是电子设备中用于支撑和连接电子元件的基板。 显示层&#xff1a;是LCD触摸屏的核心部分&#xff0c;负责生成视觉图像。它由以下部分组成&#xff1a; 液晶层&#xff1a;包含液晶材料…

框架盛行,还记得原生JS如何获取表单数据吗?

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注&#xff01;个人知乎 在这个前端框架遍地开花的时代&#xff0c;同学们常常被React、Vue、Angular等现代JavaScript框架的便捷性和高效性所吸引。那么多年过去&#xff0c;你还记得原生JS是如何获取表单数据的吗…

论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理

本文旨在对任意模态输入-任意模态输出 (X2X) 的LLM的编解码方式进行简单梳理&#xff0c;同时总结一些代表性工作。 注&#xff1a;图像代表Image&#xff0c;视频代表Video&#xff08;不含声音&#xff09;&#xff0c;音频代表 Audio/Music&#xff0c;语音代表Speech 各种…

docker数据卷和资源控制

目录 数据卷 实现数据卷 宿主机和容器之间进行数据共享 容器与容器之间进行数据共享 容器互联 docker容器的资源控制 cpu 1.设置cpu资源控制&#xff08;比重&#xff09; 2. 设置cpu的资源占用比&#xff08;权重&#xff09; 3.设置容器绑定cpu 内存 1.内存限制 …

Docker搭建Minio容器

Docker搭建Minio容器 前言 在上一集我们介绍了分布式文件存储行业解决方案以及技术选型。最终我们决定选用Minio作为分布式文件存储。 那么这集我们就在Docker上搭建Minio容器即可。 Docker搭建Minio容器步骤 创建Minio文件目录 我们选择创建/minio/data目录 修改目录权…

系统编程 day11 进程(线程)3

fork函数的总结&#xff1a; 总结对进程学习之中的回收函数wait wait函数&#xff1a; 1.获取子进程的退出状态 2.回收资源------会让僵尸态的子进程销毁 注&#xff1a;1.wait函数本身是一个阻塞操作&#xff0c;会使调用者阻塞 2.父进程要获得子进程的退出状态 子进程&…

解决STM32G474单片机_HAL_UART_Transmit_IT()连续发送之问题

在使用STM32G474单片机的HAL库时&#xff0c;使用“在中断服务程序中发送数据”和“在中断程序中接收数据”&#xff0c;是一种很常用的方法&#xff0c;特别是RS485通讯中。首次使用&#xff0c;肯定会踩坑。要么出现第一个数据收不到&#xff0c;要么出现连续发送&#xff0c…

米联客-FPGA程序设计Verilog语法入门篇连载-02 Verilog语法_基本设计方法

软件版本&#xff1a;无 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用所有系列FPGA 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑&#xff01; 1概述 本节主要讲解Verilog的基本设…

【屏驱MCU】增加自定义分区指南

说明&#xff1a;本文主要给出基于该款 点屏 MCU。增加自定义分区指南 屏驱MCU系列文章 【屏显MCU】多媒体接口总结&#xff08;一&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;硬件&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;软件&#xff…

CCF-GESP8级考试—图论算法及综合应用(最小生成树)

&#x1f349;1 最小生成树的概念 1.1 连通图 &#x1f388; 连通图用于描述图中顶点之间是否存在路径相连。一个无向图中&#xff0c;如果从图中的任意一个顶点出发&#xff0c;都可以通过边的连接到达图中的任意其他顶点&#xff0c;则该图被称为连通图。 连通图的性质&…

为何众多卖家都选择入驻亚马逊VC?有什么优势?——WAYLI威利跨境助力商家

众多卖家选择入驻亚马逊VC&#xff08;Vendor Central&#xff09;&#xff0c;主要是因为VC平台为卖家提供了一系列显著的优势。VC使卖家与亚马逊建立直接供应关系&#xff0c;提升曝光率和销售机会。作为全球领先电商平台&#xff0c;亚马逊拥有庞大用户群和完善物流体系&…

C#窗体自定义快捷操作键的实现 - 开源研究系列文章

这次想到应用程序的窗体的快捷操作键的使用的问题。 上次发布过一个快捷键的例子(https://www.cnblogs.com/lzhdim/p/18342051)&#xff0c;区别在于它是操作系统全局注册的热键&#xff0c;如果其它应用程序注册了对应的热键&#xff0c;那就会失效。此例子是对某个窗体里的按…

AI驱动人才社区革新:智能化探索与实践

一、引言&#xff1a;AI赋能人才新生态 在21世纪的数字化浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术以其强大的数据处理能力、学习优化算法及创新应用模式&#xff0c;正深刻地改变着各行各业的面貌&#xff0c;人才管理领域亦不例外。传统的人才社区&#xf…

yolo中的iou是什么意思

在YOLO&#xff08;You Only Look Once&#xff09;算法中&#xff0c;IoU 是“Intersection over Union”的缩写&#xff0c;中文可以理解为“交并比”。IoU 是一个用于衡量两个边界框&#xff08;bounding box&#xff09;重叠程度的指标。具体来说&#xff0c;IoU 是通过计算…

CUDA-MODE 第二课: PMPP 书的第1-3章

我的课程笔记&#xff0c;欢迎关注&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode 第二课: PMPP 书的第1-3章 这节课非常基础&#xff0c;讲的都是基本概念和初级的注意事项&#xff0c;有CUDA基础的朋友可以不用花时间看。 PMPP …