首页 > 其他分享 >LVS+Keepalived群集

LVS+Keepalived群集

时间:2023-09-17 19:12:02浏览次数:28  
标签:LVS 群集 Keepalived 192.168 -- VRRP 服务器 节点

1.Keepalived是什么?

Keepalived是Linux下一个轻量级别的高可用解决方案。可以实现服务的高可用或热备,用来防止单点故障的问题,Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉。而Keepalived的核心是VRRP协议,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议) 主要实现了在路由器或三层交换机处的冗余,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。

1.1VRRP协议与工作原理

虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP) VRRP是一种路由容错协议,也可以叫做备份路由协议。VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP对外提供服务,而在虚拟路由器内部有多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由设备被设置成为:主路由器(Master角色),一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为“BACKUP的角色”,当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,这种选举角色切换非常之快,因而保证了服务的持续可用性。

1.2Keepalvied的工作原理

Keepalived是通过VRRP协议实现高可用性的,Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离。

Keepalived工作在TCP/IP 参考模型的 三层、四层、五层,也就是分别为:网络层,传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

在网络层: Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包,如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。

在传输层: Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。

在应用层:可可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除。

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

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

 1.4一个合格的集群应该具备以下几个特性:

1)负载均衡   LVS   Nginx   HAProxy    F5
2)健康检查   for 调度器/节点服务器   Keepalived    Heartbeat
3)故障转移   主备切换

1.5健康检查(探针)

1)发送心跳消息   ping/pong
2)TCP端口检查    向一个主机的 IP:PORT 发起 TCP连接
3)HTTP URL检查   向一个主机的 http://IP:PORT/URL路径 发送 HTTP GET 请求方法,主机响应返回 2XX 3XX 状态码则认为健康检查正常,如响应返回 4XX 5XX 状态码则认为健康检查异常。

1.6脑裂

脑裂现象:主服务器和备服务器同时拥有 VIP
脑裂原因:因为主服务器和备服务器之间的通信链路中断,导致备服务器无法正常收到主服务器发送的VRRP心跳报文
脑裂的解决:关闭主服务器或者备服务器其中一个的keepalived服务
脑裂的预防:1)主服务器与备服务器之间添加双通信链路
                     2)在主服务器上定义运行脚本判断与备服务器通信链路是否中断,如果中断则自行关闭keepalived服务
                     3)利用第三方监控软件检测是否发生脑裂故障,如果发生则通过监控软件关闭主或者备服务器上的keepalived服务

2.LVS+Keepalived 高可用群集

 主DR 服务器:192.168.80.10
备DR 服务器:192.168.80.11
Web 服务器1:192.168.80.12
Web 服务器2:192.168.80.13
vip:192.168.80.188
客户端:192.168.80.200

---------------------LVS 部署-------------------------
1.配置负载调度器(主、备相同)
systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {                        #定义全局参数
--10行--修改,邮件服务指向本地
    smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
    router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
    #vrrp_strict
}

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.80.188
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.80.188 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.80.12 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.80.13 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}


systemctl start keepalived
ip addr                        #查看虚拟网卡vip
(2)启动 ipvsadm 服务
--192.168.80.10---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.80.11---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0


sysctl -p
2.配置节点服务器
systemctl stop firewalld
setenforce 0


yum -y install httpd
systemctl start httpd

--192.168.80.100---
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.80.101---
echo 'this is benet web!' > /var/www/html/index.html


vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.80.188
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.80.188 dev lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p
3.测试验证
在客户端访问 http://192.168.80.188/
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

 3.Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

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

4.Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

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

 

标签:LVS,群集,Keepalived,192.168,--,VRRP,服务器,节点
From: https://www.cnblogs.com/lwqpl/p/17709473.html

相关文章

  • LVS负载均衡群集,NAT模式和DR模式
    一、集群1.1集群的含义群集  集群   cluster特点:由多台主机构成,都干同样的一件事,对外展现为一个整体1.2群集的类型:1)负载均衡群集LB提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力典型代表:软件类:LVS Nginx HAProxy等    硬件类:F5 绿......
  • keepalived 报错/usr/sbin/keepalived: error while loading shared libraries: /lib6
    yuminstallkeepalived的时候提示需要一下包Installing: keepalived                                        x86_64                               1.3.5-19.el7               ......
  • LVS+Keepalived群集
    LVS+Keepalived群集Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器......
  • 【Kubernets】K8s群集安装部署详细教程-(3)安装过程中的错误解决
    k8s常用命令集合k8s常用命令集合:#查看当前集群的所有的节点kubectlgetnode#显示Node的详细信息(一般用不着)kubectldescribenodenode1#查看所有的podkubectlgetpod--all-namespaces#查看pod的详细信息kubectlgetpods-owide--all-namespaces#查看所有创......
  • LVS负载均衡群集——其二
    LVS-DR通信四元素:源IP,源端口,目的IP,目的端口主机A(客户端)——>VIP主机B(调度器)主机A(客户端)<——VIP主机C(节点服务器)通信五元素:源IP,源端口,目的IP,目的端口,协议回环网卡lo配置的地址,其它端看不到数据包流向分析:(1)客户端发送请求到DirectorServer(负载均衡器),请求的数据报......
  • 有关lvs高可用架构
    我们可以用多台LVS来做高可用。这里又会有两种选择:一是主备模式/主主模式,可以利用Keepalived的VRRP功能,但是大规模生产环境中,用集群模式更好,因为其同时提高了伸缩性和可用性,而前者只解决了可用性(当然,也更简单),LVS是基于IP层的负载均衡,它通过修改数据包的目标IP或MAC地址来实现负......
  • keepalived安装(CentOS7 + keepalived 2.2.7)
    Linux系统-部署-运维系列导航 keepalived介绍keepalived相关原理,可以参考网络教程负载均衡之备胎转正,以下为简单介绍。 keepalived是使用C语言编写的路由热备软件,该项目软件起初是专门为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以......
  • keepalived实现MySQL MGR高可用(keepalived 2.2.7 + mysql 5.7.35)
    Linux系统-部署-运维系列导航 一、架构介绍MySQLMGR实现了MySQL服务的高可用、高扩展、高可靠,但在客户端只能同时连接一台服务实例,在master切换后,客户端无法感知并自动切换,所以需要搭配keepalived实现MySQLMGR集群在客户端的高可用。 二、架构搭建架构设计MySQLMGR一......
  • keepalived指定多个网卡设置vip
    添加vip地址(eth0和eth1)vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_id60priority100advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{10.89.235.41/22......
  • LVS负载均衡之NAT模式构建
    ※实验环境(1)系统:centos7.9(2)虚拟机:4台centos7.9,1台作为nfs共享服务器( NFS共享服务搭建步骤)为了保证源目标的一致性,采用源nat转换,将客户端发送的请求在负载调度器上经过转换后再发送到真实服务器。一、负载调度器配置(1)根据拓扑图配置IP地址(略)(2)安装ipvsadmyuminstallipvsadm-y......