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.rhkb.cn/news/327459.html

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

相关文章

Hadoop 3.4.0+HBase2.5.8+ZooKeeper3.8.4+Hive+Sqoop 分布式高可用集群部署安装 大数据系列二

创建服务器,参考 虚拟机创建服务器 节点名字节点IP系统版本master11192.168.50.11centos 8.5slave12192.168.50.12centos 8.5slave13192.168.50.13centos 8.5 1 下载组件 Hadoop:官网地址 Hbase:官网地址 ZooKeeper:官网下载 Hive:官网下载 Sqoop:官网下载 为方便同学…

基于IDEA快速创建一个SpringMVC项目并且配置Tomcat

1,打开IDEA,新建Maven项目【使用web模板创建】 使用社区版的同学创建普通的maven项目,并配置项目的webapp,详情可参考 快速创建一个SpringMVC项目(IDEA) 2,在main目录下创建Java和resource目录…

如何向Linux内核提交开源补丁?

2021年,我曾经在openEuler社区上看到一项改进Linux内核工具的需求,因此参与过Linux内核社区的开源贡献。开源贡献者参与Linux内核贡献的基本方式是提交补丁(patch),流程都可以在内核社区文档中找到,但是&am…

网络安全快速入门(九)MySQL进阶操作

上一章我们了解了对表及库的基本增删查改操作,本章我们针对增删查改内容进行与一些拓展, 9.1字段修饰及数据类型 我们之前在创建表时用到的格式为: create table 表名 ( 字段名1 字段数据类型(数据类型长度), 字段名2 …

83.网络游戏逆向分析与漏洞攻防-移动系统分析-游戏瞬移漏洞的测试与分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

基于Vue3+ElementPlus项目,复制文字到剪贴板功能实践指南,揭秘使用js-tool-big-box工具库的核心优势

在前端开发项目中,很多时候有那么一个场景,就是要求将一段文案复制下来,这段文案可能是一串很长的id,可能是一条命令语句,可能是一小段文案,复制到剪贴板上。这样有利于用户复制到其他地方去,使…

mybatisPlus一个事务中切换数据源概述

概述 在多数据源的配置下,业务中经常遇到在一个被本地事务包裹的save/edi方法中需要查询另一个数据源的数据; 直接查询会提示table不存在,这是因为一个事务和一个mysql连接是绑定的,mysql的连接背后包含了数据库信息,…

GPT搜索鸽了!改升级GPT-4

最近OpenAI太反常,消息一会一变,直让人摸不着头脑。 奥特曼最新宣布:5月13日开发布会,不是GPT-5,也不是盛传的GPT搜索引擎,改成对ChatGP和GPT-4的升级~ 消息一出,大伙儿都蒙了。 之…

不懂数字后端Box List、Polygon的意思?

什么是BOX? 景芯SoC做design planning的第一步就是确定floorplan的box,也就是设计的区域。这个区域可以划分为三个边界,如下图所示: Die Box 最外面一圈,我们称为 Die Box,也就是用来放置 IO 单元&#x…

记nrm管理仓库以及发布npm包

前言 记一次在公司创建私有库以及发布npm包,留下个脚印 一、nrm是什么? nrm是 npm 镜像源管理工具,用于快速地在不同的 npm 源之间切换。 二、使用步骤 1.全局安装nrm 代码如下(示例): npm install -…

下载源代码并交叉编译riscv FreeBSD系统和内核

RISCV系统曾经让人神秘到无法接触,交叉编译更是只有耳闻,现在随着RISCV的普及,它们神秘的面纱已经被慢慢揭开。 交叉编译作为RISCV系统中的一个重要环节,也随着RISCV的普及而变得更加容易理解和操作。交叉编译允许开发者在一个平…

java发送请求-二次开发-get请求json

这里有2个判断 如果param为空则对url发送请求 再继续判断有值时,接口参数时json还是namevalue格式 因为json是带{,所以可以先写为param包含{}, 反之就是请求格式是url?param 请求json要带参数,所以需要使用setEntity方法, 最…

如何写好设计文档

一、明确目的 在编写设计文档之前,首先要明确为什么需要写这份文档。设计文档是软件开发过程中的重要沟通工具,它有助于确保团队成员对项目有共同的理解,促进协作,便于变更管理,并提供历史记录。 二、编写方法 为目…

2024.1.1 IntelliJ IDEA 使用记录

2024.1.1 IntelliJ IDEA 使用记录 下载设置文件编码maven 配置 插件可以中文语言包安装lombok 插件Smart Tomcat ( 根据需要安装)Smart Tomcat 配置 热部署(非必须的)解决Intellij IDEA运行报Command line is too long的问题 项目导入java 设置maven 配置…

Rust的协程机制:原理与简单示例

在现代编程中,协程(Coroutine)已经成为实现高效并发的重要工具。Rust,作为一种内存安全的系统编程语言,也采用了协程作为其并发模型的一部分。本文将深入探讨Rust协程机制的实现原理,并通过一个简单的示例来…

番外篇 | 利用PyQt5+YOLOv5来搭建目标检测系统(附可视化界面+功能介绍+源代码)

前言:Hello大家好,我是小哥谈。PyQt5是一个Python绑定的Qt库,是用于创建图形用户界面(GUI)和其他应用程序组件的工具包。PyQt5提供了许多GUI元素,如按钮、文本框、标签等,也提供了许多Qt的功能,如网络、数据库、XML等。通过PyQt5可以在Python中使用Qt的丰富功能和强大的工…

全面解析OpenAI的新作——GPT-4o

5月14日凌晨1点、太平洋时间的上午 10 点,OpenAI的GPT-4o的横空出世,再次巩固了其作为行业颠覆者的地位。GPT-4o的发布不仅仅是一个产品的揭晓,它更像是向世界宣告AI技术已迈入了一个全新的纪元,连OpenAI的领航者萨姆奥特曼也不禁…

vaspkit 画 Charge-Density Difference

(echo 314;echo $(cat 1))|vaspkit 文件1提前写好使用的CHGCAR路径 SPIN_DW.vasp ../ML2scf/SPIN_DW.vasp ../ML1scf/SPIN_DW.vasp POSite and negative 默认为blue,and 青色 (RGB 30 245 245) 正值:blue 。负值:青色 RGB 30 245 245。 提示&…

为什么cca门限和tx 功率有关系

Cca是用来决定信道是否繁忙,好像只和收有关。 但是为什么和tx有关。 设想一下这个网路布局。 如果某个STA在决定是否发送的时候,是否不能只看收到的干扰多大,还应该“冒险”一下,如果自己的功率足够,那么就可以扛住干…

大语言模型LLM原理篇

大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样&a…