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高可用负载均衡集群验证到此结束。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用Rust获取本机CPU、内存在Web网页中显示?

目录 一、需求描述 二、具体操作步骤 三、知识点 1、systemstat 2、Actix 一、需求描述 需求: 1、需要使用Rust进行后端开发获取本机CPU和内存信息; 2、使用WEB框架发布API; 3、然后使用HTML/CSS/JavaScript进行前端开发&#xff0…

MySQL表的增删查改【基础部分】

数据表的操作 新增 普通插入 insert into 表名 values(值,值...)注意: 此处的值要和表中的列相匹配 使用’‘单引号或者”“双引号来表示字符串 mysql> insert into student values(123,zhangsan); Query OK, 1 row affected (0.02 sec)指定列插入 insert …

2024年3月 电子学会 青少年等级考试机器人理论真题五级

202403 青少年等级考试机器人理论真题五级 第 1 题 下图程序运行后,串口监视器显示的结果是?( ) A:0 B:1 C:3 D:4 第 2 题 下列选项中,关于74HC595移位寄存器芯片的…

微信小程序开发【Coffee Shopping】(1)

1.环境准备 微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 前端常用网站集合:http://www.wwp666.cn/ 微信小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/quicksta…

数据结构之二叉树详解[1]

在前面我们介绍了堆和二叉树的基本概念后,本篇文章将带领大家深入学习链式二叉树。 1.预备知识 2.二叉树结点的创建 3.二叉树的遍历 3.1前序遍历 3.2中序遍历 3.3 后序遍历 4.统计二叉树的结点个数 5.二叉树叶子结点的个数 6.二叉树第k层的结点个数 7.总结 …

鸿蒙ArkUI开发:常用布局【相对布局】

相对布局(RelativeContainer) 相对布局可以让子元素指定兄弟元素或父容器作为锚点,基于锚点做位置布局必须为RelativeContainer及其子元素设置ID,用于指定锚点信息。未设置ID的子元素不会显示RelativeContainer ID为“__containe…

增程SUV价格即将崩盘?买车一定要再等等!

文 | AUTO芯球 作者 | 雷歌​ 真是“离谱”啊,车圈真是逗比欢乐多, 我这两天看一个博主连续40多小时开车直播,充电口、油箱盖全部封死,全程视频直播没断过, 就为了测试这两天刚上市的星际元ET续航有多远。 另一个…

NSSCTF Web方向的例题和相关知识点(二)

[SWPUCTF 2021 新生赛]Do_you_know_http 解题: 点击打开环境,是 提示说请使用wLLm浏览器访问 我们可以更改浏览器信息,在burp重放器中发包后发现是302重定向,但是提示说success成功,说明 我们修改是成功的&#xff…

HTML特殊字符

特殊字符 有特殊含义的字符成为字符实体 对于有特殊含义的字符,需要通过转移字符来表示 <span> <br><a href"http://www.atguigu.com">我 爱 前端</a> <br>&amp;amp; 效果

Element-UI 快速入门指南

文章目录 一、安装 Element-UI1.1 使用 npm 安装1.2 使用 yarn 安装 二、引入 Element-UI三、使用 Element-UI 组件3.1 按钮组件3.2 输入框组件3.3 表单组件3.4 表格组件3.5 弹框组件 四、自定义主题4.1 安装主题工具4.2 初始化变量文件4.3 编译主题 五、总结 &#x1f389;欢迎…

刷题之最长连续序列

哈希表 class Solution { public:int longestConsecutive(vector<int>& nums) {//set记录并且去重nums中的数unordered_set<int>set;for(int i0;i<nums.size();i){set.insert(nums[i]);}int result0;//遍历所有数for(auto iset.begin();i!set.end();i){//如…

服务的war包已经丢在tomcat中但是还是没法访问,如何排查?

问题出现的现象是我已经将 XWiki 的 WAR 包放置在 Tomcat 的 webapps目录下但仍然无法访问&#xff0c;反思之后可以从下面以下几个方面来诊断和解决问题&#xff1a; 1. 确认 Tomcat 正在运行 首先&#xff0c;确保 Tomcat 服务正在正常运行。可以使用以下命令检查 Tomcat 的…

鉴源论坛·观通丨轨交软件测试技术详述

作者 | 刘艳青 上海控安安全测评部测试经理 版块 | 鉴源论坛 观通 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 集成测试技术要求 1.1 总体要求 对软件集成测试进行静态测试应先于动态测试&#xff1b; 集成过程是动态进行的&#xff0c;在测…

CVHub | CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO = CLIP + DINOv2 + SAM

本文来源公众号“CVHub”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO CLIP DINOv2 SAM 标题&#xff1a;《AM-RADIO: Agglomerative Vision Foundation Model Reduce Al…

vscode 之 output 输出中文乱码,终端输出中文正常

# 1. 背景 因为没钱买正版的软件&#xff0c;所以转战 vscode 编译器。 在编译 python 文件时&#xff0c;发现直接右键 runner code&#xff0c;输出中文乱码。 但是在 teiminal 终端 执行py test.py 时&#xff0c;输出正常&#xff0c;中文正常。 output 输出中文样式(中文…

Go微服务: Prometheus性能监控与Grafana平台的搭建

Prometheus 概述 promethues 是一套开源的监控&报警&时间序列数据库的组合基本原理是通过http协议周期性抓取被监控组件的状态适合Docker、Kubernetes环境的监控系统 Promethues 整体架构 一、抓取数据的两种方式 1 &#xff09;Short-lived jobs 短暂的任务 不会提…

RedisTemplate操作Redis详解之连接Redis及自定义序列化

连接到Redis 使用Redis和Spring时的首要任务之一是通过IoC容器连接到Redis。为此&#xff0c;需要java连接器&#xff08;或绑定&#xff09;。无论选择哪种库&#xff0c;你都只需要使用一组Spring Data Redis API&#xff08;在所有连接器中行为一致&#xff09;&#xff1a;…

面对.halo勒索病毒,如何有效防范与应对?

导言&#xff1a; 随着网络技术的不断发展&#xff0c;网络安全问题也日益凸显。其中&#xff0c;勒索病毒作为一种极具破坏性的网络攻击手段&#xff0c;近年来在全球范围内频发。其中&#xff0c;.halo勒索病毒作为勒索病毒家族中的一员&#xff0c;其危害性和传播性不容忽视…

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息&#xff1a; 原文链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/4…

二叉树专题(有关二叉树的相关学习)

二叉树 1.数概念及结构 1.1树的结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结…