keepalived双机热备超详细入门介绍

keepalived

一、keepalived入门介绍

1.keepalived简介

2.keepalived服务的三个重要功能

2.1.管理LVS负载均衡软件

2.2.实现对LVS集群节点健康检查功能

2.3.作为系统网络服务的高可用功能

3.keepalived高可用故障切换转移原理

4.keepalived安装及主配置文件介绍

二、使用keepalived实现双机热备

1.案例描述

2.Master服务器配置

3.Backup服务器配置

4.验证测试

5.Keepalived “裂脑”问题

5.1.什么是裂脑?

5.2.导致裂脑发生的原因

5.3.解决裂脑的常见方案

5.4.生产场景下检测裂脑故障的思路:

三、LVS+keepalived实现高可用负载均衡集群实战

1.案例描述

2.案例实施

一、keepalived入门介绍

1.keepalived简介

Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康状态检查功能---判断LVS负载调度器、节点服务器的可用性、及时隔离并替换为新的服务器,当故障主机恢复后重新将其加入集群。可以实现高可用的VRRP/HSRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx、Haproxy、MySQL等)的高可用解决方案软件。

2.keepalived服务的三个重要功能

2.1.管理LVS负载均衡软件

早期的LVS软件需要通过命令行或脚本实现管理,并且没有针对LVS节点的健康检查功能。为了解决LVS的这些使用不便的问题,keepalived就诞生了,可以说keepalived软件起初是专门解决LVS的缺陷而诞生的。因此,keepalived和LVS的通常情况下是同时出现在集群系统中的。

2.2.实现对LVS集群节点健康检查功能

Keepalived可以通过在自身的keepalived.conf配置文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,keepalived服务会自动将失效的节点服务器从当前的工作列队中移除,并将请求转交到正常节点服务器中,从而保证用户的访问不受影响。当故障节点服务器被修复后,再自动加入工作列队,继续为用户提供服务。

2.3.作为系统网络服务的高可用功能

Keepalived可以实现任意两台主机之间,例如Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡、反向代理服务器。

Keepalived高可用功能实现的简单原理为,两台主机同时安装配置keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,而Backup主机为备份主机,暂时不为用户提供服务,但是处于监听状态;当Master主机出现故障时,Backup通过keepalived高可用机制也发现了Master服务器无法正常工作,因此自动接管Master主机的所有工作,此时必然有一段时间处于用户无法正常访问服务,由于此机制响应速度较快,因此在进行故障切换时,用户几乎无法感知服务器有异常。当Master主机故障修复后,又会通过“抢占”机制获取对用户的服务权,继续为用户提供服务,而此时的Backup依旧为备服务器。也就是说,如果Master主机正常运行,那么Backup主机将一直处于待命状态。

3.keepalived高可用故障切换转移原理

Keepalived高可用服务对Master、Backup之间的故障切换转移是通过VRRP来实现的,在keepalived服务正常工作时,主Master节点会不断地向备服务器发送(以组播方式)心跳消息,用于告诉Backup主机我当前的状态是正常的,当Master主机出现故障时,就无法给Backup主机发送心跳消息,此时Backup主机也迟迟未接收到Master的心跳消息,因此Backup判断Master主机无法正常为用户提供服务,因此Backup主机接管了Master主机的所有服务。也就是说Backup主机从之前的待命状态变成了工作状态。当Master主机经过修复恢复正常后,通过对比双方的优先级,此时的Master主机将会从Backup主机中夺回服务权,而Bakcup主机此时继续待命。

Keepalived采用虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)热备份协议,以软件的方式实现Linux服务器的多机热备功能,VRRP是针对路由器的一种备份解决方案---由多台路由器组成一个热备份组,通过共用虚拟IP地址(简称VIP)对外提供服务,每个热备组内同一时刻只能有一台路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址为客户继续提供服务。热备组内的每台路由器都有可能成为主路由器,虚拟路由器的IP地址可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址,漂移地址的实现不需要配置网卡子接口,而是通过keepalived配置文件实现。

VRRP协议实现拓扑图如下图所示:

4.keepalived安装及主配置文件介绍

Keepalived安装方式一般通过编译安装、rpm包/yum安装两种方式实现,这两种方式安装都非常简单,因为keepalived安装时所需要依赖的包极少,可以忽略不计。在特殊环境下,可能有附加的包需要安装,具体根据实际情况实施安装,在此通过yum方式安装keepalived软件,不管哪种安装方式,使用时的配置都是一样的。

# yum install -y keepalived ipvsadm

# systemctl enable keepalived

# rpm -qa keepalived

keepalived-1.2.13-8.el7.x86_64

keepalived配置文件

在keepalived高可用功能模块中,keepalived配置文件主要包含三部分:

全局配置区域:主要用来定义keepalived故障通知机制和Route ID标识

VRRP实例定义区域:此区域主要定义具体服务的实例配置,包括keepalived主备状态、接口、优先级、认证方式和IP信息等。

LVS负载的服务器池区域:定义VIP地址、健康状态检查时间、LVS负载均衡调度算法、负载均衡模式、节点服务器IP、权重、重连时间等信息。

全局配置区域:

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived //等同于#,表示这是一个关于keepalived的配置文件

global_defs { //全局配置区域起始

   notification_email { //定义一个邮件通知项目

     acassen@firewall.loc //此三行定义收件人,一般为管理员邮箱地址

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc //定义发件人地址,可以专门为此服务器申请一个邮箱地址用于发送keepalived信息邮件

   smtp_server 192.168.200.1 //定义邮件服务器IP地址

   smtp_connect_timeout 30 //定义连接邮件服务器的超时时间

   router_id LVS_DEVEL //定义当前服务器主机名,具有唯一性

}

注意:在以上的邮件配置方面,生产环境中可以不用配置,此类报警通告可通过更加专业的监控工具来时间,如zabbix、nagios等。而花括号{}表示一个项目的开始和截止,因此一个项目开始若有花括号{,那么结尾也应该有个花括号}。

VRRP实例定义区域:

vrrp_instance VI_1 { //定义第一个vrrp实例,实例名称为VI_1,主和备可以不一样,在主中的多个实例中,此名称不应该一样

    state MASTER //声明当前服务器角色为Master主服务器,BACKUP为备

    interface ens32 //当前用于和集群中其他主机通信的网卡编号,而不是随意的一个编号

    virtual_router_id 51 //虚拟路由器的ID号,一般为数字,主备应该一致

    priority 100 //优先级,主服务器的要比备服务器优先级更高

    advert_int 1 //心跳检查时间。用于主与备之间通信检查,该值为一秒,默认即可。该值越大,说明客户端感受到的故障时间越长

    authentication { //主和备服务器通信的权限验证项目,确定主和备属于同一热备组

        auth_type PASS //类型有PASS(密码验证)和AH(IPSEC验证),官方建议PASS

        auth_pass 1111 //PASS的值,一般为数字,不超过8位

    }

    virtual_ipaddress { //指定VIP地址,可以有多个,此地址应该为客户端所访问的地址

        192.168.200.16

        192.168.200.17

        192.168.200.18

61.139.2.69/30 dev ens32 label ens32:0

//以上一行的配置为,指定客户访问的公网地址,使用的物理网卡为ens32,别名为ens32:0

    }

}

LVS负载的服务器池区域:

virtual_server 192.168.200.100 443 { //定义虚拟服务器,VIP地址、端口

    delay_loop 6 //健康检查时间间隔,单位为秒

    lb_algo rr //lvs调度算法rr/wrr/lc/wlc...

    lb_kind NAT //负载均衡转发模式NAT/TUN/DR

    persistence_timeout 50 //用户请求服务器会话超时时间,秒数。实验环境中一般禁用此项,目的是刷新一次浏览器页面,即可访问不同节点服务器,该值存在时,在值规定的时间内,客户端不断访问VIP地址将会由同一台服务器处理。

    protocol TCP //使用的协议

    real_server 192.168.201.100 443 { //第一个节点服务器ip、端口

        weight 1 //权重,若节点服务器配置一致,此值都为1,不一致时,配置较高处理能力较强的服务器此值可以适当调高,调度器会给次值高的转发更多的请求。

inhibit_on_failure //当健康检查发现该节点故障后将其权重设置为0,而不是从服务列队剔除,0表示停用该节点

TCP_CHECK { //当前的健康状态检查模式,可以选择的有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

             connect_timeout 3 //连接超时时间

             nb_get_retry 3 //重连次数

             delay_before_retry 3 //重连间隔时间

             connect_port 80   //健康检查的端口的端口

          }

}

}

到目前为止,常用的keepalived配置文件参数介绍完毕,如需了解更加详细的配置文件说明,可以在linux终端下输入# “man keepalived.conf”以查看官方的文档解说。

二、使用keepalived实现双机热备

1.案例描述

基于VRRP的热备方式,keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器,最常用的就是双机热备,在这种方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(web、ftp、mail等)

本小结主要是和通过一个简单的实验案例来实现keepalived双机热备。Master、Backup服务器的IP地址分别为192.168.1.10、192.168.1.20,而VIP地址设置为192.168.1.100,如下图所示:

案例环境:

主机

操作系统

IP地址

主要软件

Keepalived_Master

CentOS 7.5_64

192.168.1.10/24

keepalived-1.2.13-8.el7.x86_64

Keepalived_Backup

CentOS 7.5_64

192.168.1.20/24

keepalived-1.2.13-8.el7.x86_64

 Client_test

CentOS 7.5_64

192.168.1.30/24

elinks-0.12-0.36.pre6.el7.x86_64

2.Master服务器配置

# yum install -y keepalived

# rpm -qa keepalived

keepalived-1.2.13-8.el7.x86_64

# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

# vim /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     123456@qq.com

   }

   notification_email_from 654321@qq.com

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id chengdu

}

vrrp_instance VI_1 {

    state MASTER

    interface ens32

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.100/24 dev ens32 label ens32:0

    }

}

# systemctl start keepalived

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "keepalived高可用集群Web Server_1" > /var/www/html/index.html

3.Backup服务器配置

# yum install -y keepalived

# rpm -qa keepalived

keepalived-1.2.13-8.el7.x86_64

# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

# rm -rf /etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     123456@qq.com

   }

   notification_email_from 654321@qq.com

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id shanghai

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens32

    virtual_router_id 51

    priority 80

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.100/24 dev ens32 label ens32:0

    }

}

# systemctl start keepalived

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "keepalived高可用集群Web Server_2" > /var/www/html/index.html

4.验证测试

当以上keepalived配置完成后,默认情况下Master服务器通过ifconfig命令能够查看到ens32:0网卡的VIP地址192.168.1.100,而Backup服务器却查看不到,当将Master服务器的优先级设置比Backup服务器低时,Master服务器将无法查看到VIP地址,而Backup服务器却可以。

总结:通过ifconfig命令查看VIP地址时,只有当前为客户提供服务的服务器才能查看到VIP地址,而处于待命的服务器上无法查看到VIP地址。

客户端访问验证:

# yum install -y elinks //客户机安装文本浏览器

# elinks 192.168.1.100 //客户机访问VIP地址,由于此时Master服务器为192.168.1.10,因此获取到的页面为192.168.1.10的网页页面

Master服务器执行:

# systemctl stop keepalived //在Master服务器中关闭keepalived程序,此时Master服务器无法正常提供服务,因此Backup服务器应该会接替并为用户提供服务

客户端执行:

# elinks 192.168.1.100 //客户机访问VIP地址,由于此时为客户提供服务的为Backup服务器,因此获取到的页面应该为Backup服务器的页面。

当客户机连接时,可以通过以下命令在调度器上查看客户机访问服务器的路径流程

# ipvsadm -L -n -c

IPVS connection entries

pro expire state       source             virtual            destination

TCP 01:49  FIN_WAIT    192.168.1.222:49375 192.168.1.100:80   192.168.1.30:80

TCP 00:55  FIN_WAIT    192.168.1.222:49374 192.168.1.100:80   192.168.1.30:80

# ipvsadm --list --timeout

Timeout (tcp tcpfin udp): 1 1 1 //超时时间

# ipvsadm --set 1 1 1 //修改超时时间,分别对应 tcp tcpfin udp

5.Keepalived “裂脑”问题

5.1.什么是裂脑?

由于某些原因,导致两台高可用服务器对在指定时间内无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器都还活着并在正常运行,这样就会导致同一个IP或服务在两端同时存在而发生冲突,最严重的是两台主机占用同一个VIP地址,当用户写入数据时可能会分别写入到两端,这可能会导致服务器两端的数据不一致或造成数据丢失,这种情况就被称为裂脑。

5.2.导致裂脑发生的原因

(1)高可用服务器之间心跳线链路故障,导致无法正常通信。

(2)高可用服务器上开启了防火墙阻挡了心跳消息传输。

(3)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。

(4)其他服务配置不当等原因,如router_id不一致、心跳方式不同、心跳广播冲突、软件BUG等。

5.3.解决裂脑的常见方案

1)同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了另一个还是好的,依然能传送心跳消息。

2)当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、fence)。相当于备节点接收不到心跳消息,发送关机命令通过单独的线路关闭主节点的电源。

3)做好对裂脑的监控报警(如邮件及手机短信等或值班),在问题发生时人为第一时间介入仲裁,降低损失。例如,百度的监控报警短信就有上行和下行的区别。报警信息报到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器,让服务器根据指令自动处理相应故障,这样解决故障的时间更短。

5.4.生产场景下检测裂脑故障的思路:

(1)简单判断的思想:只要备节点出现VIP就报警,这个报警有两种情况,一是主机宕机了备机接管了;二是主机没宕,裂脑了。不管属于哪个情况都进行报警,然后由人工查看判断及解决。

(2)比较严谨的判断:备节点出现对应VIP,并且主节点及对应服务(如果能远程连接主节点查看是否有VIP就更好了)还活着,就说明发生裂脑了。

三、LVS+keepalived实现高可用负载均衡集群实战

1.案例描述

Keepalived的设计目标是构建高可用的LVS负载均衡集群,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备。使用keepalived构建LVS集群更加简便易用,主要优势体现在对LVS负载调度器实现热备切换、提高可用性、对服务器池中的节点服务器进行健康状态检查、自动移除失效节点、加入有效节点等功能。

在基于LVS+keepalived实现的LVS集群结构中,至少包括两台热备的负载调度器,至少两台节点服务器。本内容将以DR模式的LVS集群为基础,增加一台负载调度器,使用keepalived来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站集群系统。

案例架构图如下:

案例环境:

主机

操作系统

IP地址

VIP地址

主要软件

Master Server

CentOS 7.5_64

61.139.2.2/29

61.139.2.1/29

ipvsadm-1.27-7.el7.x86_64

keepalived-1.2.13-8.el7.x86_64

Backup Server

CentOS 7.5_64

61.139.2.3/29

61.139.2.1/29

Web Server_1

CentOS 7.5_64

61.139.2.4/29

61.139.2.1/32

httpd-2.4.6-45.el7.centos.x86_64

Web Server_2

CentOS 7.5_64

61.139.2.5/29

61.139.2.1/32

Client_test

CentOS 7.5_64

61.139.2.6/29

elinks-0.12-0.36.pre6.el7.x86_64

对于以上拓扑结构以及网络设计的说明:服务器池中的节点服务器原设计第一网卡与调度器通信,第二网卡与内网的存储服务通信,由于此时实验环境使用存储服务的话无法体现更有效果的负载均衡集群效果,且NFS共享存储设置较为简单,因此在此处并未安装如图所示配置服务器池的第二网卡及后端存储服务。

2.案例实施

Master Server操作

调整/proc响应参数

对于DR集群来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux内核的重定向参数响应。

# vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens32.send_redirects = 0 //此接口地址为lvs服务器正在使用的物理接口

# sysctl -p

安装并配置keepalived

# yum install -y keepalived ipvsadm

# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

# rm -rf /etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     123456@chengdu.vip

   }

   notification_email_from 654321@chengdu.vip

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id chengdu

}

vrrp_instance VI_1 {

    state MASTER

    interface ens32

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 5525

    }

    virtual_ipaddress {

        61.139.2.1/29 dev ens32 label ens32:0

    }

}

virtual_server 61.139.2.1 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

#    persistence_timeout 50

    protocol TCP

    real_server 61.139.2.4 80 { //第一个节点服务器

        weight 1

        inhibit_on_failure

        TCP_CHECK {

                connect_timeout 3

                   nb_get_retry 3

                 delay_before_retry 3

                  connect_port 80

          }

        }

    real_server 61.139.2.5 80 { //第二个节点服务器

        weight 1

        inhibit_on_failure

        TCP_CHECK {

                connect_timeout 3

                   nb_get_retry 3

                 delay_before_retry 3

                  connect_port 80

          }

        }

}

# systemctl restart keepalived //重启服务

# ipvsadm –ln //通过ipvsadm管理工具查看通过配置文件配置的虚拟服务器和节点服务器是否有效

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  61.139.2.1:80 wrr

  -> 61.139.2.4:80                Route   0      0          0         

  -> 61.139.2.5:80                Route   0      0          0

此时由于节点服务器还未配置httpd服务,开放80端口,因此两台节点服务器中的权重都被设置了为0,后续过程中当把节点服务器http服务配置完成并监听80端口后,再次查看此权重应该为keepalived.conf配置文件做所设置的1

在此时如果将keepalived.conf配置文件中节点服务器的“inhibit_on_failure”选项删除后,再次通过“ipvsadm -ln”命令将无法查看到节点服务器信息,因为节点服务器被移除了服务列队。即便是这样,在后续配置中将所有节点服务器都配置完成后,再次观察Master服务器的节点服务器状态,可以发现是能够查看到的。

Backup Server操作

调整/proc响应参数

对于DR集群来说,由于LVS负载调度器和各节点需要共用VIP地址,应该关闭Linux内核的重定向参数响应。

# vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens32.send_redirects = 0 //此接口地址为lvs服务器正在使用的物理接口

# sysctl -p

安装并配置keepalived

# yum install -y keepalived ipvsadm

# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

# rm -rf /etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     123456@chengdu.vip

   }

   notification_email_from 654321@chengdu.vip

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id shanghai

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens32

    virtual_router_id 51

    priority 90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 5525

    }

    virtual_ipaddress {

        61.139.2.1/29 dev ens32 label ens32:0

    }

}

virtual_server 61.139.2.1 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

#    persistence_timeout 50

    protocol TCP

    real_server 61.139.2.4 80 { //第一个节点服务器

        weight 1

        inhibit_on_failure

        TCP_CHECK {

                connect_timeout 3

                   nb_get_retry 3

                 delay_before_retry 3

                  connect_port 80

          }

        }

    real_server 61.139.2.5 80 { //第二个节点服务器

        weight 1

        inhibit_on_failure

        TCP_CHECK {

                connect_timeout 3

                   nb_get_retry 3

                 delay_before_retry 3

                  connect_port 80

          }

        }

}

# systemctl restart keepalived //重启服务

# ipvsadm –ln //通过ipvsadm管理工具查看通过配置文件配置的虚拟服务器和节点服务器是否有效

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  61.139.2.1:80 wrr

  -> 61.139.2.4:80                Route   1      0          0         

  -> 61.139.2.5:80                Route   0      0          0

两台Web Server配置

使用DR模式时,节点服务器也需要配置VIP地址,并调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突,除此之外,WEB服务器的配置与NAT类似。

节点服务器配置VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发),因此使用虚接口lo:0来承受VIP地址,并为本机添加一条路由记录,将访问VIP地的数据限制在本地,避免通信紊乱。

Web Server_1配置:

设置VIP地址:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo ifcfg-lo:0

# vim ifcfg-lo:0 //只修改以下三部分内容即可

DEVICE=lo:0

IPADDR=61.139.2.1

NETMASK=255.255.255.255

# ifup lo:0

# ifconfig lo:0

添加路由

# /sbin/route add -host 61.139.2.1 dev lo:0

# vim /etc/profile

/sbin/route add -host 61.139.2.1 dev lo:0

调整/proc相应参数

# 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 = 2

# sysctl -p

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS+keepalived高可用负载均衡集群之Web Server_1" > /var/www/html/index.html

Web Server_2配置:

设置VIP地址:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo ifcfg-lo:0

# vim ifcfg-lo:0 //只修改以下三部分内容即可

DEVICE=lo:0

IPADDR=61.139.2.1

NETMASK=255.255.255.255

# ifup lo:0

# ifconfig lo:0

添加路由

# /sbin/route add -host 61.139.2.1 dev lo:0

# vim /etc/profile

/sbin/route add -host 61.139.2.1 dev lo:0

调整/proc相应参数

# 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 = 2

# sysctl -p

安装配置提供给客户端的应用服务程序

# yum install -y httpd

# systemctl enable httpd

# systemctl start httpd

# mkdir -p /var/www/html/

# echo "LVS+keepalived高可用负载均衡集群之Web Server_2" > /var/www/html/index.html

3、验证测试

keepalived负载调度器高可用功能验证:

在配置完成后,两台调度器都开启了keepalived,而且61.139.2.2的优先级更高,因此它应该为Master。通过# tail -50 /var/log/messages 查看系统日志,或ifconfig命令查看VIP地址,能够验证。

此时客户端通过浏览器访问VIP地址61.139.2.1也能够通过LVS负载均衡集群访问到节点服务器的网页内容且能够实现多个节点服务器之间跳转。

# systemctl stop keepalived //在第一台调度器中执行此命令,停用keepalived,此时keepalived服务应由第二台服务器接管,通过在第二台服务器61.139.2.3中执行以下命令可以验证:

#  tail -20 /var/log/messages //在最后几行应该会显示以下字样,表示当前服务器已经角色为Master

VRRP_Instance(VI_1) Transition to MASTER STATE

VRRP_Instance(VI_1) Entering MASTER STATE

此时客户机再次访问VIP地址61.139.2.1,依然能够像之前那样访问到多台节点服务器的网页内容,也就是说,一台调度器出现了故障,并未影响客户正常访问。

接着继续将第二台服务器的keepalived服务也停止,此时集群中的两台服务器都无法实现为客户提供服务,因此客户端无法获取到任何节点服务器数据,也就是说客户端访问VIP地址时,无法获取到正常的网页内容。

# systemctl stop keepalived

两台调度器keepalived服务都关闭后,客户机访问情况如下:

# systemctl start keepalived //第一台调度器再次开启keepalived服务

# tail -20 /var/log/messages //查看日志,发现当前服务器成为了Master

VRRP_Instance(VI_1) Transition to MASTER STATE

VRRP_Instance(VI_1) Entering MASTER STATE

客户机再次访问:

此时LVS+keepalived高可用负载均衡集群验证到此结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图搜索算法-最短路径算法-贝尔曼-福特算法

相关文章: 数据结构–图的概念 图搜索算法 - 深度优先搜索法(DFS) 图搜索算法 - 广度优先搜索法(BFS) 图搜索算法 - 拓扑排序 图搜索算法-最短路径算法-戴克斯特拉算法 贝尔曼-福特算法(Bellman-Ford&#…

OpenAI春季发布会, GPT-4o引爆科技圈 |千字文全面解读

今天,OpenAI再一次引爆了科技圈。这次的核心亮点无疑是他们的全新模型:GPT-4o,以及基于此模型构建的全新ChatGPT版本。 GPT-4o是什么? OpenAI 最新推出的 GPT-4o,“o”代表“Omni”,这一拉丁词根在英语中常…

CentOS报错: Fontconfig head is null, check your fonts or fonts configuration

错误 解决方案 这个报错的原因时java读取本地字体时发现字体损坏或者缺失,只需要补充一下字体就可以了,解决方法安装FontConfig组件即可: sudo yum install fontconfig

弥合孤岛:克服构建 DevOps 文化的挑战

持续变革正在发生软件开发行业。DevOps 因其对自动化、协作和持续改进的关注而成为优化软件交付并弥合开发和运营团队之间鸿沟的重要方法。然而,过渡到真正的 DevOps 文化并非没有挑战。本文探讨了您在追求 DevOps 时可能面临的障碍并提供了解决方案。 01 了解 Dev…

JINGWHALE 数字认证体系 · 进阶知识库

JINGWHALE 数字认证体系 是 JINGWHALE 数字科学艺术创新中心 的数字认证服务。 ◢◤ 宗旨 致力于数字化知行合一的知识赋能! ◥ 数字化人才培养 培养数字化思维,传播数字化知识,赋能各行业数字化。 ◥ 职业人才发展 无缝衔接学校高等…

Databend 开源周报第 144 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 了解 Databend …

有一个21年的前端vue项目,死活安不上依赖

在公司开发的时候遇到的一个很玄幻的问题,这个项目是21年开发的,现在我是24年中途二开增加新功能 这个项目经过多人之手,现在已经出现了问题------项目依赖安不上,我能启动完全是因为在23年的时候写这个项目的时候将依赖费九牛二虎之力下载好后打成了压缩包发给另外一个安不上依…

分析 vs2019 c++ 中的 decltype 与 declval

(1) decltype 可以让推断其参数的类型。按住 ctrl 点击 decltype ,会发现无法查阅 其定义 : (2) 但 STL 库里咱们可以查阅函数 declval 的 定义,很短,摘抄如下: templat…

PostgreSQL源码安装

文章目录 一、先决条件检查二、源码安装1、获取源代码2、编译安装1.运行 configure2.运行make 3、PostgreSQL的配置4、安装contrib目录下的工具 三、初始化数据库1、创建数据库管理员2、创建数据库实例3、启动和停止数据库4、设置数据库密码 四、PostgreSQL的简单配置1、pg_hba…

Java项目实现报文数据校验注解方式(必输项、值大小)

普通项目 导入校验依赖 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.1.0.Final</version></dependency><dependency><groupId>javax.validation</…

系统定期执行命令的方法

系统定期执行命令的方法 一、进入超级用户下 执行命令&#xff1a;sudo su 二、添加要执行的命令 例子&#xff1a;每天0点执行一次myapp.sh命令 先后输入&#xff1a;crontab -e、 1、 回车 设置每天0点执行一次myapp.sh操作&#xff0c;需要写绝对路径 含义&#xff1…

RK3576 Camera:资源介绍

RK3576是RK今年上市的中高端旗舰芯片&#xff0c;定位弱于RK3588。这篇文章主要分享一下RK3576这颗主控芯片的camera资源。 &#xff08;1&#xff09;RK3576 camera资源 ①RK3576 camera硬件框图 RK3576的camera硬件框图如图所示&#xff0c;拥有一路4lane的DCPHY&#xff…

Spring Cloud Consul 4.1.1

该项目通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法&#xff0c;为 Spring Boot 应用程序提供 Consul 集成。通过一些简单的注释&#xff0c;您可以快速启用和配置应用程序内的常见模式&#xff0c;并使用基于 Consul 的组件构建大型分布式系统。提供的模式…

银河麒麟v10 重装系统恢复原home分区

现象&#xff1a;系统还原后在锁屏状态下输入密码后闪退回锁屏 ctrl alt f1切到命令行模式&#xff0c;查看/home目录下的用户文件夹里无文件 1、blkid找到data分区的uuid和设备编号&#xff0c;记录下来&#xff1b; 2、sudo mount /dev/sda5 3、sudo vi /etc/fstab&#xf…

JAVA中类和对象(承接上次的补充)

目录&#xff1a; 一.static修饰成员方法 二.static成员变量初始化 三.代码块 一.static修饰成员方法: 1.一般类中的数据成员都设置为 private &#xff0c;而成员方法设置为 public &#xff0c; 问&#xff1a;那设置之后&#xff0c;Student类中&#xff0c;被Student修饰…

数据结构——01-抽奖数人-链表-实验题目与解答

数据结构抽奖数人链表实验题目与解答 一、**实验题目** 抽奖游戏&#xff1a; n个人围成一圈&#xff0c;由第一个人开始&#xff0c;依次报数&#xff0c;数到第m人&#xff0c;便抽出来作为中奖人&#xff0c;然后从他的下一个人数起&#xff0c;数到第m人&#xff0c;再抽…

VALSE 2024合合信息 | 文档解析与向量化技术加速多模态大模型训练与应用

第十四届视觉与学习青年学者研讨会&#xff08;VALSE 2024&#xff09;近期在重庆悦来国际会议中心圆满举行&#xff0c;由中国人工智能学会&#xff08;CAAI&#xff09;、中国图象图形学会&#xff08;CSIG&#xff09;、中国民族贸易促进会主办&#xff0c;重庆邮电大学承办…

goconvey测试框架的使用

尽管Golang已经内置了功能强大的testing包&#xff0c;其易用性令人称赞。然而&#xff0c;当我们希望更直观地处理和判断测试结果时&#xff0c;结合使用goconvey能为我们提供极大的便利。goconvey不仅为我们提供了丰富的断言函数&#xff0c;这些函数还极大地方便了我们在进行…

Web测试是在测什么?容易被忽视的小细节总结!

随着Internet和Intranet/Extranet的快速增长&#xff0c;Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上&#xff0c;电子商务迅速增长&#xff0c;早已超过了国界。范围广泛的、复杂…

C# XPTable in .net6(XPTable控件使用说明八)

经过作者schoetbi、armin-pfaeffle的努力&#xff0c;XPTable已经可以在 winform .net6 .net8的环境下使用&#xff0c;版本升级到了2.0&#xff0c;这样就可以在winform下同时使用XPTABLE和EFcore, 这样就可以解决大部分的场景了。