当前位置: 首页 > ds >正文

LVS+keepalived高可用群集

目录

1,了解什么是keepalived高可用

1,VRRP的基本概念

2,VRRP的工作原理

3,VRRP的状态机

4,VRRP的工作原理

5,ARP在keepalived中的作用

二,配置LVS+keepalived实现高可用

1,准备工作

2,配置主调度器01

3,配置从调度器02

4,配置后端服务器03,04

5,测试

1,了解什么是keepalived高可用

Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现 Linux 服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案--由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟P地址,以继续提供服务,所以说在使用keepalived之前,需要先了解什么是VRRP虚拟链路冗余协议。

  • 核心目标:避免单点故障:当主服务器(主节点)因硬件故障、软件崩溃或网络中断等原因无法工作时,备份服务器(备份节点)自动接管服务,确保业务不中断。

                          透明切换:客户端无需修改配置,流量自动切换到备份节点,用户无感知。

  • 关键组件:VRRP虚拟路由器:由一组 Keepalived 节点(主节点、备份节点)组成,对外提供一个虚拟 IP(VIP)和虚拟 MAC 地址。

                          主节点:负责处理客户端流量,定期发送 VRRP 心跳包(广播报文)告知备份节点自身状态。

                          备份节点:监听主节点的心跳包,当主节点故障时,升级为主节点并接管 VIP。

1,VRRP的基本概念

概念解释
VRRP路由器(VRRP Router)运行VRRP的设备,它可能属于一个或多个虚拟路由器。
虚拟路由器(Virtual Routen)由VRRP管理的抽象设备,又称为VRRP备份组,被当作一个共享局域网内主机的缺省网关,它包括了一个虑拟路由器标识符和一组虑拟IP地址。
虚拟IP地址(Virtual IP Address)虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IPAddressowner)如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者。当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等
虚拟MAC地址是虚拟路由器根据虚拟路由器ID生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
主IP地址(Primary IP Address)从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。
VRRP广播报文使用主IP地址作为IP报文的源地址。
Master路由器(Virtual Router Master)是承担转发报文或者应管ARP请求的VRRP路由器,转发报文都是发送到虚拟IP地址的。如果IP地址拥有者是可用的,通常它将成为Master。
Backup路由器(Virtual Router Backup)在抢占模式下,如果Backup的优先级比当前Master的优先级高,将主动将自己升级成Mastero
抢占模式在抢占模式下,如果Backup的优先级比当前Master的优先级高,将主动将自己升级成Mastero

2,VRRP的工作原理

VRRP将局域网的一组路由器构成一个备份组,相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的IP地址,并不需知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。VRRP将该虚拟路由器动态关联到承担传输业务的物理路由器上,当该物理路由器出现故障时,再次选择新路由器来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信。

3,VRRP的状态机

VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。

  • initialize:设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP报文做任何处理。
  • Master:当路由器处于Master状态时,它将会做下列工作:定期发送VRRP报文。以虚拟MAC地址响应对虚拟IP地址的ARP请求。转发目的MAC地址为虚拟MAC地址的IP报文。如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。如果收到比自己优先级大的报文则转为Backup状态。如果收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP地址大,则转为Backup状态。当接收到接口的Shutdown事件时,转为Initialize。
  • Backup:当路由器处于Backup状态时,它将会做下列工作:接收Master发送的VRRP报文,判断Master的状态是否正常。对虚拟IP地址的ARP请求,不做响应。丢弃目的MAC地址为虚拟MAC地址的IP报文。丢弃目的IP地址为虚拟IP地址的IP报文。Backup状态下如果收到比自己优先级小的报文时,丢弃报文,不重置定时器;如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。当Backup接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master。当接收到接口的Shutdown事件时,转为Initialize。

4,VRRP的工作原理

    R1、R2和R3属于同一个VRRP组,组成一个虚拟路由器,这个虚拟路由器有自己的IP地址192.168.10.100。虚拟IP地址可以直接指定,也可以借用该VRRP组所包含的路由器上某接口地址。物理路由器RouterA、RouterB和RouterC的实际IP地址分别是192.168.10.101、192.168.10.102和192.168.10.103。局域网内的主机只需要将缺省路由设为10.110.10.1即可,无需知道具体路由器上的接口地址。

     比较优先级的大小,优先级高者当选为Master。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。

     其它路由器作为备份路由器,随时监听Master的状态。当主路由器正常工作时,它会每隔一段时间(Advertisement_Interval)发送一个VRRP组播报文,以通知组内的备份路由器,主路由器处于正常工作状态。当组内的备份路由器一段时间(Master_Down_Interval)内没有接收到来自主路由器的报文,则将自己转为主路由器。一个VRRP组里有多台备份路由器时,短时间内可能产生多个Master,此时,路由器将会将收到的VRRP报文中的优先级与本地优先级做比较。从而选取优先级高的设备做Master。

5,ARP在keepalived中的作用

Keepalived 基于 VRRP(虚拟路由器冗余协议)实现高可用,通过多个节点(主节点、备份节点)组成一个虚拟路由器,对外提供统一的 VIP。

  • ARP 的核心作用:确保 VIP 对应的 MAC 地址在网络中正确传播,使客户端能通过 ARP 解析到当前活动节点的真实 MAC 地址,从而将流量路由到正确的服务器。

二,配置LVS+keepalived实现高可用

1,准备工作

192.168.10.101LVS+keepalived
192.168.10.102LVS+keepalived
192.168.10.103后端服务器httpd
192.168.10.104后端服务器httpd
192.168.10.105客户端

2,配置主调度器01

dnf -y install keepalived ipvsadm      ##在两台调度器上都安装##复制一份模板出来
[root@LVSK /]# cp /etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf[root@LVSK /]#vim /etc/keepalived/keepalived.conf    ##修改一下参数
global_defs {router_id LVS_01       ##修改rooterip,在同一个组内routerip可以一样#vrrp_strict           ##vrrp严格模式
}vrrp_instance VT_1 {state MASTER                     ##设置为主调度器interface ens160                 ##网卡要改为自己的网卡名virtual_router_id 51              ##虚拟组ip,主调度器可以和从调度器一致priority 100                      ##设置优先级,范围(0-255),优先级大的为主调度器advert_int 1                    ##vrrp通告间隔时间,单位为秒authentication {            ##密码认证auth_type PASSauth_pass 1111}virtual_ipaddress {               ##设置虚拟ip,可以设置多个192.168.10.100}
}virtual_server 192.168.10.100 80 {delay_loop 6                  设置健康检查的延迟探测时间,单位秒             lb_algo rr                    ##算法为轮询算法lb_kind DR                    ##模式为DR(路由)模式#persistence timeout 50       ##设置会话持久化超时时间,本次案例被注释掉了protocol TCPreal_server 192.168.10.104 80 {             ##后端真实服务器104weight 1                                ##设置权重为1       TCP_CHECK {connect_port 80connect_timeout 3retry 3delay_before_retry 3
}}real_server 192.168.10.105 80 {         ##后端真实服务器105weight 1                           ##设置权重为1 TCP_CHECK {                         connect_port 80            ##检查服务器的 80 端口 是否可连接connect_timeout 3          ##连接超时时间为 3 秒。若 3 秒内未建立连接,则认为服务器不可用。retry 3                    ##连接失败后,重试 3 次delay_before_retry 3       ##每次重试前等待 3 秒,避免频繁探测}}
}TCP_CHECK{}      ##康检查机制,用于验证后端服务器(real_server)是否正常工作

3,配置从调度器02

##在从服务器只需修改当前几处,其他配置跟主调度器一致
vrrp_instance VT_1 {state BACKUP             ##模式为备份模式interface ens160virtual_router_id 51priority 90                  ##改从的优先级 advert_int 1 authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100}
}##vim /etc/sysctl.conf          ##添加以下三行,主从都要添加
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0               ##在centos8版本中前两行已经存在了
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p  ##别忘了重载##主从开启keepalived
systemctl start keepalived##在优先级搞得调度器查看虚拟IP是否存在,这里是101
[root@localhost ~]# ip addinet 192.168.10.100/32 scope global ens160valid_lft forever preferred_lft forever

4,配置后端服务器03,04

##在103,104搭建网站,内容不一致
yum  -y install httpdvim  /var/www/html/index.html333333444444systemctl start httpd      ##别忘了开启网站服务##修改内核末尾添加如下行
vim /etc/sysctl.conf  
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2sysctl -p     ##重载内核##在103,104设置虚拟ip
ip addr add 192.168.10.100/32(虚拟的IP地址) dev lo label lo:0[root@localhost ~]# ip add          ##查看虚拟ip是否存在,103 104都要有inet 192.168.10.100/32 scope global lo:0valid_lft forever preferred_lft forever

5,测试

##在105客户机测试
[root@localhost ~]# curl 192.168.10.100
server2 104
[root@localhost ~]# curl 192.168.10.100
server1 103##关闭101调度器,查看虚拟ip是否漂移到102
[root@LVSK /]# ip add           inet 192.168.10.100/32 scope global ens160valid_lft forever preferred_lft forever##再次进行访问
[root@localhost ~]# curl 192.168.10.100
server2 104
[root@localhost ~]# curl 192.168.10.100
server1 103
http://www.xdnf.cn/news/9821.html

相关文章:

  • mac笔记本如何快捷键截图后自动复制到粘贴板
  • 首发!PPIO派欧云上线DeepSeek-R1-0528-Qwen3-8B蒸馏模型
  • 【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​
  • Spring Boot 3.5.0中文文档上线
  • 在 WSL Ubuntu-24.04 上安装 Nacos 2.5.1 并使用 MySQL 数据库
  • 【Linux】网络--传输层--深入理解TCP协议
  • 计算机组成与体系结构:固态硬盘(Solid State Drives)
  • 数据驱动健康未来——大数据如何革新公共卫生监测?
  • [250528] NixOS 25.05 “Warbler“ 正式发布:GNOME 48、Kernel 6.12 及海量软件包更新!
  • vue3+element-plus项目主题色切换;element-plus换肤
  • DAX权威指南5:筛选上下文、表操作函数与层级结构
  • SSE vs WebSocket:两种通讯方案该如何选择?
  • MD650一对多透传场景联动
  • 二叉树迭代遍历——给一个属性便可实现迭代结构完美统一
  • Linux轻量级文件传输——tftp命令
  • 【QQ音乐】sign签名| data参数 | AES-GCM加密 | webpack(上)
  • 腾控产品在油田间抽节能中的应用
  • Python深度学习植被参数反演AI辅助代码生成—模型构建—实战案例
  • vue3 控制url更新但不让页面更新
  • 回溯算法找出来最优价格组合
  • 深度学习-梯度消失和梯度爆炸
  • 光的干涉、衍射与偏振
  • Python入门手册:模块和包的导入与使用
  • Cookie与Session深度解析:Web会话管理的核心技术
  • 健康管理软件未来趋势:三大核心功能深度解析
  • Windows下的Qtxlsx下载和编译打包成库
  • 消息队列从入门到实战:用外卖订单理解高并发系统的核心设计
  • YOLOv8 区域计数系统:基于计算机视觉的智能物体计数方案
  • vue3+element plus 自定义组件,单列的方块 图形加文字列表
  • 写作即是生活