高可用集群KeepLived实验集

KeepLived技术介绍

Keepalived 是一个开源的高可用性解决方案,主要用于提高网络服务的可靠性。它最初是为了解决 Linux 虚拟服务器(LVS)集群中的单点故障问题而设计的,但现在已经发展成为一个通用的高可用性工具,可以用于各种网络服务。

技术介绍

VRRP介绍

VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)是一种用于提高网络可靠性、稳定性的协议。它通过在多台路由器之间建立备份机制,使得网络中的数据传输更加安全可靠。

在VRRP中,多台路由器组成一个虚拟路由器,它们共享同一个虚拟IP地址。其中一台路由器被选为主路由器(Master),负责处理所有的网络流量。其他路由器作为备份路由器(Backup),随时准备接管主路由器的工作。

当主路由器发生故障或宕机时,备份路由器会立即接管其工作,继续处理网络流量,从而实现了无缝切换,避免了网络中断。这种机制大大提高了网络的可靠性和稳定性。

VRRP还支持负载均衡功能,可以通过配置多条虚拟路由器,将网络流量分散到多台路由器上,从而提高了网络的吞吐量和效率。

总的来说,VRRP是一种非常重要的网络协议,它通过建立备份机制和负载均衡功能,提高了网络的可靠性和稳定性,使得网络中的数据传输更加安全可靠。

工作原理

Keepalived 主要通过以下几个组件来实现其功能:

  1. VRRP(Virtual Router Redundancy Protocol):虚拟路由器冗余协议,用于在多个路由器之间提供冗余,从而消除单点故障。
  2. 健康检查:Keepalived 提供了一套健康新机制,用于监控集群中各个服务的状态。
  3. 故障转移:当主服务器出现故障时,Keepalived 可以自动将服务转移到备用服务器。

Keepalived 的工作原理主要基于 VRRP 协议。以下是其工作原理的简要概述:

  1. VRRP 组:在一个 Keepalived 集群中,多个服务器组成一个 VRRP 组。每个组有一个虚拟 IP 地址(VIP),并且只有一个服务器(称为 Master)拥有这个 VIP。
  2. 心跳机制:Keepalived 使用心跳机制来检测 Master 服务器的状态。如果 Master 服务器出现故障,备用服务器(称为 Backup)会接替 Master 的角色。
  3. 优先级:每个服务器都有一个优先级。优先级最高的服务器成为 Master。如果 Master 服务器故障,优先级次高的服务器将成为新的 Master。
  4. 虚拟路由器:每个 VRRP 组相当于一个虚拟路由器,具有唯一的 VRID(Virtual Router Identifier)。这个 VRID 用于生成虚拟 MAC 地址(VMAC),格式为 00:00:5E:00:01:VRID。

工作模式

Keepalived 支持多种工作模式,主要包括以下几种:

  1. Master/Slave 模式:这是最常见的模式,其中一个服务器作为 Master,其他服务器作为 Slave。Master 服务器负责处理所有网络流量,而 Slave 服务器处于待机状态,随时准备接管 Master 的工作。
  2. Master/Master 模式:在这种模式下,所有服务器都处于活动状态,共同分担网络流量。如果某个服务器出现故障,其他服务器会接管其工作。
  3. 抢占模式和非抢占模式
    • 抢占模式:如果 Backup 服务器的优先级高于当前 Master 服务器,Backup 服务器会主动接管 Master 的角色。
    • 非抢占模式:即使 Backup 服务器的优先级更高,也不会主动接管 Master 的角色,除非 Master 服务器完全失效。

典型应用场景

  1. 负载均衡:Keepalived 可以与 LVS 结合使用,实现高效的负载均衡。
  2. 高可用性:通过 VRRP 和健康检查机制,Keepalived 可以确保服务的高可用性。
  3. 故障恢复:当主服务器出现故障时,Keepalived 可以快速恢复服务,避免服务中断。

总之,Keepalived 是一个强大且灵活的高可用性解决方案,适用于各种网络服务的监控和故障转移。

VRRP 相关术语

虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
物理路由器:
master:主设备
backup:备用设备
priority:优先级
1.5.2 VRRP 相关技术
通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
安全认证:
无认证
简单字符认证:预共享密钥
MD5
工作模式:
主/备:单虚拟路由器
主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

keepalived虚拟路由管理(环境搭建)

准备四台虚拟机:基本模型如下,实际配置IP不完全与图上一致
在这里插入图片描述
实际配置:
在这里插入图片描述

做好配置之后,开始在ka1和ka2上面安装KeepLived服务,在web服务器上面安装httpd服务。

 [root@KA1 ~]# dnf install keepalived -y
 [root@KA1 ~]# systemctl start keepalived
 [root@KA1 ~]# ps axf | grep keepalived
 #输出的结果
2385 pts/0    S+     0:00     \_ grep --color=auto keepalived
2326 ?        Ss       0:00 /usr/sbin/keepalived -D
2327 ?        S        0:00  \_ /usr/sbin/keepalived -D

keepalived虚拟路由管理(基本路由配置)

主:
在这里插入图片描述

在这里插入图片描述
从:
在这里插入图片描述
查看:(主)
在这里插入图片描述

开启通信功能及独立日志

主:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

独立文件的使用与非抢占式实验

注意:
两边都必须是 backup:备用设备
要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP
默认为抢占模式preempt,,会抢占低先级的主机的master角色, 这样会使vip在KA主机中来回漂移,造成网络抖动

主:
在这里插入图片描述
在这里插入图片描述我是使用独立文件,在此处
在这里插入图片描述

测试:

谁先启,谁先拿到VIP,这里面ka1先启动

从服务器配置:
在这里插入图片描述
在这里插入图片描述
如果ka1挂掉,ka2就拿到

抢占延迟模式 preempt_delay 实验

主:
在这里插入图片描述
从:
在这里插入图片描述
如果主服务重启,VIP不会立刻回来,会过10s才从从服务器上切换回来,防止瞬间的网络波动

VIP单播配置

主:
在这里插入图片描述
默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

从:
在这里插入图片描述

测试:

主:
在这里插入图片描述
从:
在这里插入图片描述

邮件通知

 3.4.4 邮件配置 
安装邮件发送工具
[root@KA2 ~]# dnf install mailx -y
 QQ邮箱配置
[root@KA1 ~]# vim /etc/mail.rc
 #######mail set##########
 set from=594233@qq.com
 set smtp=smtp.qq.com
 set smtp-auth-user=594233@qq.com
 set smtp-auth-password=isjatjwm #邮箱的秘钥(这个是我乱写的,不可以,可以去注册自己的验证)
 set smtp-auth=login
 set ssl-verify=ignore
发送测试邮件
[root@KA1 ~]# echo test message |mail -s test 594233@qq.com

脚本模式:

3.4.5 实战案例:实现 Keepalived 状态切换的通知脚本
# IP地址记得根据自身主机设定
#在所有 keepalived节点配置如下
[root@KA1 + KA2 ~]# vim /etc/keepalived/mail.sh
 #!/bin/bash
 mail_dest='594233887@qq.com'
 mail_send()
 {
 mail_subj="$HOSTNAME to be $1 vip 转移"
 mail_mess="`date +%F\ %T`: vrrp 转移,$HOSTNAME 变为 $1"
 echo "$mail_mess" | mail -s "$mail_subj" $mail_dest
 }
 case $1 in
 master)
 mail_send master
 ;;
 backup)
 mail_send backup
 ;;
 fault)
 mail_send fault
 ;;
 *)
 exit 1
 ;;
 esac
 [root@KA1 +KA2 ~]# chmod  +x /etc/keepalived/mail.sh
 [root@KA1 +K2  ~]#vim /etc/keepalived/keepalived.conf
 vrrp_instance VI_1 {
 state MASTER
 interface eth0
 virtual_router_id 20
 priority 100
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 172.25.254.100/24 dev eth0 label eth0:0
 }
 unicast_src_ip 172.25.254.20
 unicast_peer {
 172.25.254.30
 }
 notify_master "/etc/keepalived/mail.sh master"
 notify_backup "/etc/keepalived/mail.sh backup"
 notify_fault "/etc/keepalived/mail.sh fault"
 }
 #模拟master故障
[root@ka1-centos8 ~]#killall keepalive
#测试:在浏览器中观察邮件即可

双组模式实验

ka2:
在这里插入图片描述
在这里插入图片描述

ka1:
在这里插入图片描述
在这里插入图片描述

web服务器:
在这里插入图片描述

keepalived+lvs(单主、双主二选一)

我这里做的是单主模式:lvs-DR(单主)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

keepalived+haproxy(结合实现HAProxy高可用)

LVS高可用和HAProxy 不可同时存在

两边安装haproxy

主从配置相同的部分
在这里插入图片描述
在这里插入图片描述
主:
在这里插入图片描述
在这里插入图片描述
主服务器的VIP成功跑到了备服务器上面了
在这里插入图片描述

理论补充:

 定义 VRRP script 
 
vrrp_script <SCRIPT_NAME> {
 script <STRING>|<QUOTED-STRING>   #此脚本返回值为非0时,会触发下面OPTIONS执行
 OPTIONS 
}
 track_script {
 SCRIPT_NAME_1
 SCRIPT_NAME_2
 }
 vrrp_script <SCRIPT_NAME> {             #定义一个检测脚本,在global_defs 之外配置
     script <STRING>|<QUOTED-STRING>    #shell命令或脚本路径
     interval <INTEGER>                 #间隔时间,单位为秒,默认1秒
     timeout <INTEGER>                  #超时时间
     weight <INTEGER:-254..254>         #默认为0,如果设置此值为负数,
                                        #当上面脚本返回值为非0时
                                        #会将此值与本节点权重相加可以降低本节点权重,     
#即表示fall. 
                                        #如果是正数,当脚本返回值为0,
                                        #会将此值与本节点权重相加可以提高本节点权重
                                        #即表示 rise.通常使用负值
     
     fall <INTEGER>             #执行脚本连续几次都失败,则转换为失败,建议设为2以上
     rise <INTEGER>             #执行脚本连续几次都成功,把服务器从失败标记为成功
     user USERNAME [GROUPNAME]  #执行监测脚本的用户或组
     init_fail                  #设置默认标记为失败状态,监测成功之后再转换为成功状态
}

Keepalived 和 HAProxy 技术介绍

Keepalived 和 HAProxy 是常用的开源负载均衡和高可用解决方案,广泛应用于企业级环境中。

1. Keepalived

技术介绍:
Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol)协议的负载均衡软件,主要用于提高网络服务的高可用性。它通过监控网络接口和虚拟 IP 地址(VIP)来实现故障转移和负载均衡。

工作原理:

  • VRRP 协议: Keepalived 使用 VRRP 协议来实现虚拟路由器的冗余。在一个 Keepalived 集群中,多个节点共同维护一个虚拟 IP 地址。当主节点故障时,备用节点接管虚拟 IP,继续提供服务。
  • 健康检查: Keepalived 支持多种健康检查方式,包括 TCP、UDP、HTTP 等,用于监控后端服务器的状态。一旦检测到某个服务器故障,Keepalived 会将其从服务列表中移除,直到其恢复正常。

工作模式:

  • Master/Slave 模式: 在这种模式下,一个节点作为 Master,其他节点作为 Slave。Master 节点负责处理所有流量,Slave 节点处于待机状态,随时准备接管 Master 的工作。
  • Master/Master 模式: 在这种模式下,所有节点都处于活动状态,共同分担负载。如果某个节点故障,其他节点会接管其工作。

2. HAProxy

技术介绍:
HAProxy 是一个高性能的负载均衡器和代理服务器,支持 TCP 和 HTTP 协议。它可以根据预定义的负载均衡算法将流量分发到后端服务器,从而提高系统的可靠性和性能。

工作原理:

  • 负载均衡算法: HAProxy 支持多种负载均衡算法,包括轮询、最少连接、源地址散列等。这些算法确保流量在后端服务器之间均匀分布。
  • 健康检查: 类似于 Keepalived,HAProxy 也支持健康检查功能,用于监控后端服务器的状态。一旦检测到某个服务器故障,HAProxy 会将其从服务列表中移除,直到其恢复正常。

工作模式:

  • Layer 4 负载均衡: 在这种模式下,HAProxy 在网络层进行负载均衡,主要基于 IP 地址和端口号。适用于 TCP 协议的服务。
  • Layer 7 负载均衡: 在这种模式下,HAProxy 在应用层进行负载均衡,可以基于 URL、HTTP 头等信息进行更精细的流量分发。适用于 HTTP/HTTPS 协议的服务。

Keepalived 和 HAProxy 的结合使用

Keepalived 和 HAProxy 经常结合使用,形成一个高可用、高性能的负载均衡解决方案。在这种架构中,Keepalived 负责监控和故障转移,确保负载均衡器的高可用性;HAProxy 则负责具体的流量分发,提高系统的性能和可靠性。

典型应用场景:

  • Web 应用负载均衡: 将来自用户的 HTTP/HTTPS 请求分发到多个 Web 服务器,提高网站的并发处理能力和可靠性。
  • 数据库负载均衡: 将数据库查询分发到多个数据库服务器,提高数据库的读写性能和可靠性。

总结

Keepalived 和 HAProxy 是两种非常强大的开源工具,分别用于高可用性和负载均衡。它们的结合使用可以形成一个强大、灵活且可靠的负载均衡解决方案,适用于各种复杂的企业级应用场景。

keepalived+lvs

概念

Keepalived 和 LVS 是常用的开源负载均衡解决方案,广泛应用于高并发、高可用的网络服务环境中。以下是关于它们的技术介绍、工作原理和工作模式的详细说明:

技术介绍
  1. Keepalived:

    • 简介: Keepalived 是一个用于监控和管理 Linux 系统中网络服务的软件,最初是为了配合 LVS(Linux Virtual Server)而设计的。
    • 功能: 主要用于监控 LVS 集群中各个服务节点的状态,并提供高可用性(HA)功能,如 VRRP(Virtual Router Redundancy Protocol)协议的支持。
    • 用途: 除了管理 LVS 外,还可以用于其他服务(如 Nginx、HAProxy、MySQL 等)的高可用性解决方案。
  2. LVS:

    • 简介: LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡解决方案,利用内核中的 IPVS(IP Virtual Server)模块实现四层负载均衡。
    • 功能: 提供高性能、高可用性的负载均衡服务,能够将网络请求分发到多个后端服务器。
    • 用途: 广泛应用于大型网站和高并发服务场景,如 Web 服务、Cache 服务、DNS 服务、FTP 服务、MAIL 服务等。
工作原理(思想)
  1. Keepalived:

    • 监控和管理: Keepalived 通过定期发送 VRRP 协议报文来监控服务节点的状态。一旦检测到某个服务节点出现问题,Keepalived 会将其从服务集群中剔除,并将流量重新分配到其他健康的节点。
    • 高可用性: 当主节点(Master)发生故障时,备用节点(Backup)会接管主节点的任务,确保服务不中断。这一过程通常在几秒钟内完成,以保证服务的连续性。
  2. LVS:

    • 负载均衡算法: LVS 支持多种负载均衡算法,如轮询(Round Robin)、最少连接(Least Connections)、IP 哈希(IP Hash)等,可以根据不同的需求选择合适的算法。
    • 四层负载均衡: LVS 主要工作在 TCP/IP 协议的第四层(传输层),通过对 IP 报文的修改和调度,将请求分发到后端服务器。
    • 高可用性和高性能: LVS 通过集群的方式提供服务,能够有效提高系统的可用性和性能。
工作模式
  1. Keepalived:

    • Master/Backup 模式: 在这种模式下,一个节点作为 Master 节点,负责处理所有的 VRRP 报文和其他网络请求。另一个节点作为 Backup 节点,随时准备接管 Master 节点的任务。当 Master 节点发生故障时,Backup 节点会迅速接管,成为新的 Master 节点。
    • 故障检测和恢复: Keepalived 通过定期发送心跳报文来检测服务节点的状态。一旦检测到某个节点出现问题,Keepalived 会自动将故障节点从集群中剔除,并将流量重新分配到其他健康的节点。当故障节点恢复正常后,Keepalived 会将其重新加入到集群中。
  2. LVS:

    • NAT(Network Address Translation)模式: 在这种模式下,LVS 调度器接收到请求后,将请求的目标地址改为后端服务器的地址,并将响应数据包的源地址改为调度器的地址。这样,客户端的所有请求都通过调度器进行转发和响应。
    • DR(Direct Routing)模式: 在这种模式下,LVS 调度器接收到请求后,将请求的目标 MAC 地址改为后端服务器的 MAC 地址,然后直接将请求发送到后端服务器。后端服务器直接将响应数据包发送回客户端,不需要经过调度器。这种模式减少了调度器的负载,提高了系统的性能。
    • TUN(IP Tunneling)模式: 在这种模式下,LVS 调度器接收到请求后,将请求封装成一个新的 IP 数据包,并发送到后端服务器。后端服务器处理完请求后,将响应数据包解封装,并直接发送回客户端。这种模式适用于跨不同网络的负载均衡。

总结来说,Keepalived 和 LVS 共同构成了一个高效、高可用的负载均衡解决方案。Keepalived 负责监控和管理服务节点的状态,确保服务的高可用性;LVS 则负责具体的负载均衡任务,通过各种算法和模式将请求分发到后端服务器,提高系统的性能和可靠性。

keepalived是一种用于实现高可用性的软件,主要用于在集群中检测服务的状态,并根据检测结果进行VIP(虚拟IP)的漂移。当keepalived进程异常时,会触发VIP漂移,将VIP转移到备用节点上,以确保网站的可用性。然而,如果keepalived进程正常,但是nginx服务发生故障,就可能导致VIP不漂移,从而导致网站无法访问。为了解决这个问题,可以自己编写一个脚本来检查nginx服务的状态,如果异常,则可以通过kill掉keepalived进程来实现VIP的漂移,或者重新启动nginx服务。下面以keepalived重新启动nginx为例进行说明: 1. 首先,需要安装keepalived软件。在proxy1和proxy2两个节点上执行以下命令进行安装: ``` yum install keepalived -y ``` 2. 然后,需要在每个keepalived节点上进行配置。以proxy1节点为例,编辑keepalived的配置文件: ``` vim /etc/keepalived/keepalived.conf ``` 在配置文件中添加以下内容: ``` ! Configuration File for keepalived global_defs { router_id test111 # router_id后面的名称可以自定义 } vrrp_instance nginx_test { state MASTER interface ens33 # interface后面的名称为实际网卡名 virtual_router_id 51 priority 100 # 优先级,数值越大,优先级越高,在主备竞选时,优先级高的节点将竞选为主节点 advert_int 1 authentication { # 同一组keepalived认证 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 虚拟IP,可以设置为网站的访问IP 192.168.1.100 } } ``` 保存并退出配置文件。 通过上述步骤,我们就可以实现keepalived的高可用性,当nginx服务发生故障时,通过重新启动nginx服务或者kill掉keepalived进程来实现VIP的漂移,确保网站的可用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值