首页 > 其他分享 >LVS+KeepAlived高可用负载均衡集群

LVS+KeepAlived高可用负载均衡集群

时间:2024-06-20 16:00:54浏览次数:25  
标签:forever 负载 LVS KeepAlived keepalived 00 lft ff root

1、高可用群集

(1)单台服务器

(2)keepalived

一个合格的群集应该具备的特点:

  • 负载均衡:用于提高群集的性能(LVS Nqinx HAProxy SLB F5)
  • 健康检查(探针):针对于调度器和节点服务器(KeepalivedHeartbeat)
  • 故障转移:通过VIP漂移实现主备切换

健康检查(探针)常用的工作方式:

发送心跳消息:vrrp报文、ping/pong
TCP端口检查:向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检査正常,否则认为健康检査异常
HTTP URL检查:向目标主机的URL路径(比如http://IP:PORT/URL路径)发起 HTTP GET 请求方法,如果响应消息的状态码为 2xx 或 3xx 则认为健康检查正常;如果响应消息的状态码为 4xx 或 5xx 则认为健康检查异常。

(3)Keepalived实现原理

2、部署keepalived

Keepalived体系主要模块及其作用:

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

(1)准备工具

两台虚拟机:

20.0.0.10(主调度器)

20.0.0.20(备调度器)

(2)系统初始化

(3)更新在线源仓库并安装keepalived

本地源keepalived版本较低,可通过在线升级在线源进行升级

20.0.0.10

[root@zx1 ~]# cd /mnt/Packages/
[root@zx1 Packages]# ls | grep keepalived
keepalived-1.3.5-19.el7.x86_64.rpm
[root@zx1 Packages]# cd /etc/yum.repos.d/
[root@zx1 yum.repos.d]# ls
local.repo  repo.bak
[root@zx1 yum.repos.d]# mv repo.bak/* ./
[root@zx1 yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo          repo.bak
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    local.repo
[root@zx1 yum.repos.d]# mv local.repo repo.bak
[root@zx1 yum.repos.d]# yum -y install epel-release
[root@zx1 yum.repos.d]# yum install -y keepalived

20.0.0.20

[root@zx2 ~]# cd /mnt/Packages/
[root@zx2 Packages]# ls | grep keepalived
keepalived-1.3.5-19.el7.x86_64.rpm
[root@zx2 Packages]# cd /etc/yum.repos.d/
[root@zx2 yum.repos.d]# ls
local.repo  repo.bar
[root@zx2 yum.repos.d]# mv repo.bar/* ./
[root@zx2 yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo          repo.bar
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    local.repo
[root@zx1 yum.repos.d]# mv local.repo repo.bak
[root@zx2 yum.repos.d]# yum -y install epel-release
[root@zx2 yum.repos.d]# yum install -y keepalived

(4)配置主调度器(20.0.0.10)

[root@zx1 yum.repos.d]# cd /etc/keepalived/
[root@zx1 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@zx1 keepalived]# ls
keepalived.conf  keepalived.conf.bak
[root@zx1 keepalived]# vim keepalived.conf
[root@zx1 keepalived]#

  1 ! Configuration File for keepalived
  2
  3 global_defs {
  4    notification_email {
  5      [email protected]
  6      [email protected]
  7      [email protected]
  8    }
  9    notification_email_from [email protected]
 10    smtp_server 127.0.0.1   ##修改
 11    smtp_connect_timeout 30
 12    router_id LVS_01     ##修改路由器id号
 13    #vrrp_skip_check_adv_addr
 14    #vrrp_strict
 15    #vrrp_garp_interval 0
 16    #vrrp_gna_interval 0  ##四行全部注释
 17 }
 18
 19 vrrp_instance VI_1 {
 20     state MASTER
 21     interface ens33  ##修改为网卡名称
 22     virtual_router_id 51
 23     priority 100
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress {
 30      20.0.0.100  ##设置vip号
 31     }
 32 }   ##后面的内容暂时不要,按esc进入命令模式,按1000dd全删了(#dd:表示删除包括光标所在行的#行内容)
~

(5)配置备调度器(20.0.0.20)

[root@zx2 yum.repos.d]# cd /etc/keepalived/
[root@zx2 keepalived]# ls
keepalived.conf
[root@zx2 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@zx2 keepalived]# vim keepalived.conf
[root@zx2 keepalived]#
  1 ! Configuration File for keepalived
  2
  3 global_defs {
  4    notification_email {
  5      [email protected]
  6      [email protected]
  7      [email protected]
  8    }
  9    notification_email_from [email protected]
 10    smtp_server 127.0.0.1    ##修改
 11    smtp_connect_timeout 30
 12    router_id LVS_02   ##修改路由器id
 13    #vrrp_skip_check_adv_addr
 14    #vrrp_strict
 15    #vrrp_garp_interval 0
 16    #vrrp_gna_interval 0 ##四行注释
 17 }
 18
 19 vrrp_instance VI_1 {
 20     state BACKUP  ##修改成备调度器
 21     interface ens33 ##修改为网卡
 22     virtual_router_id 51
 23     priority 90  ##修改优先级
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress {
 30         20.0.0.100 ##设置vip
 31     }
 32 } ##下面内容删除
~

(6)启动主备keepalived

 systemctl start keepalived

(7)验证

主调度器

[root@zx1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:53:65:31 brd ff:ff:ff:ff:ff:ff
    inet 20.0.0.10/24 brd 20.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 20.0.0.100/32 scope global ens33                                ##成功
       valid_lft forever preferred_lft forever
    inet6 fe80::947:89f3:4c57:3a9e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:8f:c7:54 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:8f:c7:54 brd ff:ff:ff:ff:ff:ff
[root@zx1 keepalived]#

备调度器

[root@zx2 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:db:f6:a6 brd ff:ff:ff:ff:ff:ff
    inet 20.0.0.20/24 brd 20.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::528e:8bf:1ac4:282e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:ad:f5:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:ad:f5:42 brd ff:ff:ff:ff:ff:ff
[root@zx2 keepalived]#

模拟主服务器故障,主服务器vip消失

[root@zx1 keepalived]# systemctl stop keepalived.service
[root@zx1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:53:65:31 brd ff:ff:ff:ff:ff:ff
    inet 20.0.0.10/24 brd 20.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::947:89f3:4c57:3a9e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:8f:c7:54 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:8f:c7:54 brd ff:ff:ff:ff:ff:ff
[root@zx1 keepalived]#

备服务器vip出现

[root@zx2 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:db:f6:a6 brd ff:ff:ff:ff:ff:ff
    inet 20.0.0.20/24 brd 20.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 20.0.0.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::528e:8bf:1ac4:282e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:ad:f5:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:ad:f5:42 brd ff:ff:ff:ff:ff:ff
[root@zx2 keepalived]#

3、常问题目

1.Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?
答案:
Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

keepalived的抢占与非抢占模式:
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP
非抢占式俩节点state必须为bakcup,且必须配置nopreempt。
注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

4、非抢占模式配置

基于上面的两台虚拟机配置

(1)修改主备服务器配置

主(20.0.0.10)

[root@zx1 keepalived]# vim keepalived.conf
[root@zx1 keepalived]# systemctl stop keepalived.service
[root@zx1 keepalived]#

备(20.0.0.20)

[root@zx2 keepalived]# vim keepalived.conf
[root@zx2 keepalived]# systemctl stop keepalived.service
[root@zx2 keepalived]#

(2)验证

非抢占模式下,不看优先级顺序,以启动顺序为依据,先开启哪台,vip就在哪台

关闭两台的keepalived服务

先开启20.0.0.10,再开启20.0.0.20,vip会出现在20.0.0.10上

关闭20.0.0.10上的keepalived服务后,vip就转移到20.0.0.20上

就算重启20.0.0.10的keepalived服务,vip还是在20.0.0.20上

想要vip回到20.0.0.10上,只能在20.0.0.20上重启keepalived

5、LVS+KeepAlived高可用负载均衡集群的部署

6、Nginx+KeepAlived高可用负载均衡集群的部署

7、Keepealived脑裂现象

(1)产生脑裂的原因

Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占master的工作,但其实这时候的master是正常工作的,此时就会出现脑裂的现象。

(2)解决方法

关闭主服务器或备服务器其中一个的Keepealived服务

(3)如何预防

1.如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输

2.如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信

3.在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中断则自行关闭主服务器上的keepalived服务

4.利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务

标签:forever,负载,LVS,KeepAlived,keepalived,00,lft,ff,root
From: https://blog.csdn.net/zx52306/article/details/139830275

相关文章

  • 2024华为OD机试真题-API集群负载统计-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述某个产品的RESTfulAPI集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTfulAPI是......
  • CDN,负载均衡器,反向代理的异同
    内容分发网络(CDN)功能和作用:内容缓存和分发:CDN在全球多个节点上缓存静态内容(如图像、CSS、JavaScript文件),将内容分发到离用户最近的节点,以减少延迟并加快加载速度。负载分担:通过将请求分发到多个缓存节点,CDN可以减少源服务器的负载,从而提高整体系统的性能和可用性。......
  • LVS+Keepalived群集
    目录一、群集1.一个合格的群集应该具备的特点2.健康检查(探针)常用的工作方式二、Keepalived工具1.概念2.工作原理3.安装与启动4.Keepalived体系主要模块及其作用三、配置主备服务器1.配置主备服务器2.验证3.总结4keepalived的抢占与非抢占模式四、配置LVS+Keepal......
  • CPU利用率和负载
    CPU利用率显示的是程序在运行期间实时占用的CPU百分比;cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入wait。CPU负载是指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒......
  • MySQL + Keepalived自动切换
    目录一.环境准备二.部署软件三. master主机配置keepalived四.slave主机配置keepalived五.两台机器配置数据库检查脚本六.客户端模拟访问一.环境准备准备三个新环境的虚拟机,关闭防火墙和SElinux安全策略,并设置时间同步和配置好YUM源。虚拟IP用:192.168.226.20......
  • LVS_Director + KeepAlived + 邮件报警
    目录一.环境准备二. 对master和backup操作三.配置master主机四.配置backup主机六.验证虚拟IP七.配置后端两个web服务器对web1和web2主机都进行如下操作: 单独修改web1主机单独修改web2主机验证八.设置邮件报警 一.环境准备KeepAlived在该项目中的功能......
  • 信息打点-协议应用_内网资产_CDN_WAF_负载均衡_防火墙
    服务信息获取-协议应用&内网资产常见端口默认对应的服务:特殊服务端口:端口扫描工具:旁注查询旁注查询,又称为旁站查询或同服务器网站查询,是一种信息安全和网络侦查技术,主要用于发现与目标网站托管在同一服务器上的其他网站。这种查询的目的通常与网络安全测试、情报收集......
  • Nginx+KeepAlived高可用负载均衡集群的部署
    目录一.KeepAlived补充知识1.一个合格的群集应该具备的特点2.健康检查(探针)常用的工作方式3.相关面试问题问题1问题2二.Keepealived脑裂现象1.现象2.原因硬件原因运用配置原因3.解决4.预防方法1方法2方法3方法4三.实验部署1.两台nginx做初始化操作并安装ngin......
  • LVS负载均衡集群企业级应用实战-LVS-DR(四)
    目录LVS-DR 一.环境准备二.对虚拟主机操作三.对真实服务器操作 四.打开网页测试LVS-DR 一.环境准备三台虚拟机,都要在同一网段内,统一关闭防火墙和selinux,时间同步,配置好YUM源。系统用centos和roucky都行。主机名主机IP模拟服务器系统用途localhostVIP:1......
  • 华为OD API集群负载统计
    题目描述:某个产品的RESTfulAPI集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTfulAPI的由多个层级构成,层级之间使用/连接,如/A/B/C/D这个地址......