目录
Keepalived的简介
Keepalived 是一个用于实现服务器高可用性的开源软件。高可用集群是一组协同工作的计算机系统,其目的是为了在面对硬件故障、软件故障、网络故障或其他异常情况时,仍能持续提供关键服务,减少服务中断的时间,确保业务的连续性和稳定性。
一、主要功能
1. 故障切换
- 监控一组服务器的健康状况,当主服务器出现故障时,自动将服务切换到备用服务器,确保服务的连续性。
- 例如,在一个主从服务器架构中,如果主服务器宕机,Keepalived 能迅速将虚拟 IP 地址转移到备用服务器上,使客户端的请求能够继续得到处理。
2. 虚拟 IP 管理=
- 可以为服务器组配置一个虚拟 IP 地址。在正常情况下,主服务器拥有该虚拟 IP ,当主服务器故障时,虚拟 IP 会漂移到备用服务器上。
- 这样,客户端始终通过虚拟 IP 访问服务,而无需关心实际提供服务的服务器是哪一台。
3. 健康检查
- 支持多种方式对服务器进行健康检查,如通过 ICMP (Ping) 、TCP 连接、HTTP 请求等。
- 比如,可以定期向服务器发送 HTTP 请求来检查 Web 服务是否正常运行。
二、工作原理
Keepalived 通常在主、备服务器上同时运行。它们之间通过心跳信息来相互通信和监控状态。 主服务器会定期发送心跳信号给备用服务器,如果备用服务器在一定时间内未收到主服务器的心跳信号,就会认为主服务器出现故障,并触发故障切换操作。
三、应用场景
1. Web 服务器集群 - 保证网站服务的不间断运行,当一台 Web 服务器出现故障时,另一台能够立即接管。
2. 数据库服务器 - 对于关键的数据库服务,实现高可用性,确保数据的持续访问。
3. 负载均衡器 - 当主负载均衡器失效时,备用负载均衡器能够迅速接替工作,维持系统的负载均衡功能。Keepalived 是一种简单而有效的实现服务器高可用性的工具,能够在服务器故障时快速响应,保障业务的正常运行。
VRRP
虚拟路由冗余协议VRRP是一种用于实现网关冗余和网络容错的网络协议。
一、基本原理
VRRP 将多个路由器组成一个虚拟路由器组。在这个组中,会选举出一个主路由器(Master)和一个或多个备份路由器(Backup)。 主路由器负责处理发往虚拟路由器的数据包。备份路由器处于监听状态。
二、作用
1. 提供默认网关的冗余
- 当主路由器出现故障时,备份路由器能够迅速接管,确保网络中的主机仍然能够与外部网络进行通信,不会因为默认网关的失效而导致网络中断。
2. 增强网络的可靠性和稳定性
- 减少由于单点故障导致的网络中断风险,提高网络的整体可用性。
三、工作过程
1. 选举 - 路由器根据优先级等参数进行主路由器的选举。优先级高的路由器优先成为主路由器;如果优先级相同,则比较接口的 IP 地址,IP 地址大的成为主路由器。
2. 状态维护 - 主路由器定期发送通告报文,通知备份路由器自己的工作状态。备份路由器如果在一定时间内没有收到主路由器的通告报文,就会认为主路由器出现故障,并进行新一轮的主路由器选举。
3. 切换 - 当主路由器故障时,备份路由器中优先级最高的会迅速切换为主路由器,并开始承担数据包的转发工作。
四、应用场景
1. 企业网络 - 保障企业内部网络与外部网络的连接可靠性,确保业务的连续性。
2. 数据中心 - 为服务器提供稳定的网络连接,防止因网关故障导致的服务中断。
VRRP 是一种有效的网络冗余技术,能够提高网络的可靠性和稳定性,保障网络服务的连续性。
五、组成部分
1. 虚拟路由器:由一个主路由器和若干个备份路由器组成的逻辑实体。对于连接到该网络的设备来说,它们看到的是这个虚拟路由器的 IP 地址,而不是具体某个物理路由器的 IP 地址。
2. 主路由器(Master Router):在 VRRP 组中负责实际转发数据包的路由器。它定期发送 VRRP 通告消息来表明自己的工作状态。
3. 备份路由器(Backup Router):处于备用状态的路由器。它们监听主路由器的通告消息,并准备在主路由器故障时接管工作。
4. 优先级(Priority):用于决定路由器在 VRRP 组中的角色。数值越大,优先级越高,越有可能成为主路由器。默认情况下,优先级为 100。
5. 通告间隔(Advertisement Interval):主路由器发送 VRRP 通告消息的时间间隔。默认通常是 1 秒。
6. 抢占模式(Preemption Mode):当一个具有更高优先级的路由器加入 VRRP 组时,如果开启抢占模式,它会立即成为主路由器;如果关闭,则即使优先级更高,也不会主动抢占主路由器的角色,除非当前的主路由器故障。
7. 虚拟 IP 地址(Virtual IP Address):虚拟路由器的 IP 地址。这是客户端设备用作默认网关的 IP 地址。
8. 认证(Authentication):可用于防止非法的 VRRP 设备加入 VRRP 组,增强安全性。 理解这些概念对于正确配置和管理 VRRP 以实现网络的高可用性至关重要。
实验
准备4台主机,给予修改成合适的内存和处理器大小,同步节点时间,关闭防火墙。
给虚拟机添加网卡
[root@localhost ~]# vmset.sh eth0 172.25.254.110 realserver1.dx.org
(配置IP)
在虚拟机里安装httpd,并启用
yum install httpd -y
systemctl enable --now httpd
安装keepalive服务
echo 172.25.254.110 > /var/www/html/index.html
yum install keepalived -y
全局配置
global_defs { --全局配置
notification_email {
3519904227@qq.com #keepalived--发生故障切换时邮件发送的目标邮箱
}
notification_email_from keepalived@dx.org --发邮件的地址
smtp_server 127.0.0.1 --邮件服务器地址
smtp_connect_timeout 30 --响应超时时间
router_id dx.org
vrrp_skip_check_adv_addr --同一地址的流量验证
vrrp_strict --遵循vrrp
vrrp_garp_interval 0 --vrrp发送超时,0表示无延迟
vrrp_gna_interval 0 --消息发送延迟时间
}
编辑配置文件
vim /etc/keepalived/keepalived.conf
systemctl enable --now keepalived.service
systemctl restart keepalived.service
scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf--将配置文件复制到第二个主机中
设定router-id和VIP
修改优先级
vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service
systemctl enable --now keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.systemctl enable --now keepalived.service --重启服务
更改另一台主机配置
虚拟路由通讯设置
测试:通讯正常
keepalived日志分离
核心命令:
[root@kat1 ~]# vim /etc/sysconfig/keepalived --进入配置文件
[root@kat1 ~]# systemctl restart keepalived.service --重启服务[root@kat1 ~]# vim /etc/rsyslog.conf--进入日志文件
[root@kat1 ~]# systemctl restart rsyslog.service--重启服务
[root@kat1 ~]# systemctl restart keepalived.service--重启服务
keepalived独立子配置文件
进入配置文件
vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service
创建文件
mkdir -p /etc/keepalived/conf.d
vim /etc/keepalived/conf.d/172.25.254.100.conf
keepalived的抢占模式和非抢占模式
抢占模式
1. 特点:
- 当主节点恢复正常后,会重新夺回主节点的角色。
- 这意味着如果备用节点在主节点故障期间成为了主节点,一旦原主节点恢复,且其优先级高于当前主节点,它将抢占回主节点的地位。
2. 适用场景:
- 适用于主节点的性能或资源配置明显优于备用节点的情况。
- 当主节点能够提供更高效、更稳定的服务时,希望主节点恢复后能立即重新接管服务。
非抢占模式
1. 特点:
- 即使主节点恢复正常,只要当前的备用节点没有出现故障,主节点不会主动夺回主节点的角色。
- 只有当当前主节点出现故障时,原主节点才有机会重新成为主节点。
2. 适用场景:
- 适用于对服务切换的稳定性要求较高,不希望因为主节点的频繁切换而导致服务波动的情况。
- 例如在某些对服务连续性要求极高的场景中,避免不必要的主备切换。 在配置 Keepalived 时,可以根据实际需求选择合适的模式来满足系统的高可用性要求。
非抢占模式
此为非抢占模式
进入配置文件,修改配置,重启服务
vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service
测试结果:
延迟抢占:
vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service
--进入配置文件
设置延迟抢占时间
设置延迟时间
VIP单播
VIP 单播(Virtual IP Unicast)指的是将一个虚拟 IP 地址(VIP)通过单播的方式在网络中进行通信和使用。 在高可用性和负载均衡的场景中,VIP 通常被用作服务的访问入口。单播是一种网络通信方式,即数据包从一个源地址发送到一个明确的目标地址。
VIP 单播的优点包括:
1. 精确的目标定位:数据包只会被发送到指定的单个目标地址,减少了网络中的广播和多播流量,降低了网络拥塞的可能性。
2. 更好的网络控制:可以更精确地控制 VIP 所关联的服务的访问路径和流量分布。
例如,在一个服务器集群中,通过配置 VIP 单播,可以将客户端的请求准确地导向到当前提供服务的服务器,实现负载均衡和故障转移。 然而,VIP 单播的配置需要确保网络中的路由器和交换机正确支持和处理单播数据包,以保证通信的正常进行。
1
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka1 ~]# systemctl restart keepalived.service
2
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# systemctl restart keepalived.service
邮件通知
安装
yum install mailx -y
vim /etc/mail.rc
在配置里,填入邮箱和授权码
脚本:
vim /etc/keepalived/mail.sh --创建脚本
chmod +x /etc/keepalived/mail.sh
提升权重
双主模式
双主模式(Dual Master Mode)是一种在高可用性和冗余架构中的配置方式,其中两个系统或组件同时处于主(活动)状态,共同处理工作负载或提供服务。
优点:
1. 更高的性能和处理能力:两个主节点同时工作,可以处理更多的请求和任务,提高系统的整体性能。
2. 快速故障恢复:当一个主节点出现故障时,另一个主节点可以立即接管,减少了故障切换的时间和对服务的影响。
需要注意:
1. 数据同步问题:两个主节点需要确保数据的一致性和同步,以避免数据冲突和不一致。
2. 资源竞争:可能会出现对某些共享资源的竞争,需要有效的资源管理和协调机制。
例如,在数据库环境中,可以采用双主模式,两个主数据库同时处理读写操作,并通过数据复制和同步机制保持数据的一致性。在网络环境中,两台核心交换机可以处于双主模式,共同转发流量,当其中一台出现故障时,另一台能够无缝接管。
进入配置:
进入配置文件
vim /etc/keepalived/keepalived.conf
systemctl start keepalived.service
1
2
IPVS
配置VIP
ip a a 172.25.254.100/32 dev lo
cd /etc/sysconfig/network-scripts/
配置文件内容
DEVICE=lo
IPADDR0=127.0.0.1
NETMASK0=255.0.0.0
IPADDR1=172.25.254.100
NETMASK1=255.255.255.255
NETWORK=127.0.0.0
写入配置文件
vim /etc/sysctl.d/arp.conf
启用文件
sysctl --system
进入配置文件
vim /etc/keepalived/keepalived.conf
1
2
keepalived和harapoxy
进入配置启用参数
vim /etc/sysctl.conf
sysctl -p
haproxy的配置
vim /etc/haproxy/haproxy.cfg
systemctl enable --now haproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
vim /etc/haproxy/haproxy.cfg