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

news2024/11/19 3:14:07

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.coloradmin.cn/o/1675591.html

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

相关文章

[BJDCTF 2020]easy_md5、[HNCTF 2022 Week1]Interesting_include、[GDOUCTF 2023]泄露的伪装

目录 [BJDCTF 2020]easy_md5 ffifdyop [SWPUCTF 2021 新生赛]crypto8 [HNCTF 2022 Week1]Interesting_include php://filter协议 [GDOUCTF 2023]泄露的伪装 [BJDCTF 2020]easy_md5 尝试输入一个1,发现输入的内容会通过get传递但是没有其他回显 观察一下响应…

【经验总结】超算互联网服务器 transformers 加载本地模型

1. 背景 使用 超算互联网 的云服务,不能连接外网,只能把模型下载到本地,再上传上去到云服务。 2. 模型下载 在 模型中 https://huggingface.co/models 找到所需的模型后 点击下载 config.json pytorch_model.bin vocab.txt 3. 上传模型文…

【数据可视化01】matplotlib实例3之数据统计

目录 一、引言二、实例介绍1.百分位数为横条形图2.箱线图定制化3.带有自定义填充颜色的箱线图4.箱线图5.箱线图和小提琴图6.二维数据集的置信椭圆 一、引言 matplotlib库 可以用来创建各种静态、动态、交互式的图形,并广泛应用于数据分析和数据可视化领域。 二、实…

C#中json数据序列化和反序列化的最简单方法(C#对象和字符串的相互转换)

文章目录 将C#对象转换为json字符串Newtonsoft模块的安装用Newtonsoft将对象转换为json字符串 将json字符串转换为C#对象 将C#对象转换为json字符串 本介绍将基于C#中的第三方库Newtonsoft进行,因此将分为Newtonsoft模块的安装和使用两部分。该模块的优势在于只需要…

STL----push,insert,empalce

push_back和emplace_back的区别 #include <iostream> #include <vector>using namespace std; class testDemo { public:testDemo(int n) :num(n) {cout << "构造函数" << endl;}testDemo(const testDemo& other) :num(other.num) {cou…

C# 下载安装,使用OfficeOpenXml

下载安装OfficeOpenXml模块 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Text.RegularEx…

智能EDM邮件群发工具哪个好?

企业之间的竞争日益激烈&#xff0c;如何高效、精准地触达目标客户&#xff0c;成为每个市场战略家必须面对的挑战。在此背景下&#xff0c;云衔科技凭借其前沿的AI技术和深厚的行业洞察&#xff0c;匠心推出了全方位一站式智能EDM邮件营销服务平台&#xff0c;重新定义了邮件营…

Docker 使用 Fedora 镜像

Fedora 在 Docker 中的使用也非常简单&#xff0c;直接使用命令 docker run -it fedora:latest bash 就可以 pull 到本地的容器中并且运行。 C:\Users\yhu>docker run -it fedora:latest bash Unable to find image fedora:latest locally latest: Pulling from library/fed…

曲线救国:window 安装 docker

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

【HR】阿里三板斧--20240514

参考https://blog.csdn.net/haydenwang8287/article/details/113541512 头部三板斧 战略能不能落地、文化能不能得到传承、人才能不能得到保障。 头部三板斧适用的核心场景有三个&#xff1a;一是战略不靠谱&#xff1b;二是组织效率低、不聚心&#xff1b;三是人才跟不上。对…

JavaScript精粹(一)

JavaScript&#xff08;简称为JS&#xff09;是一种广泛应用于网页开发的脚本语言&#xff0c;具有以下几个主要作用&#xff1a; 网页交互&#xff1a;JavaScript 可以用于创建动态的网页效果&#xff0c;例如响应用户的操作&#xff0c;实现页面内容的动态更新&#xff0c;以…

LearnOpenGL(十七)之混合

一、丢弃片段 有些图片并不需要半透明&#xff0c;只需要根据纹理颜色值&#xff0c;显示一部分&#xff08;alpha值为1.0&#xff09;&#xff0c;或者不显示一部分&#xff08;alpha值为0.0&#xff09;&#xff0c;没有中间情况。我们需要丢弃(Discard)显示纹理中透明部分的…

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

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

vscode 通过ssh 远程执行ipynb +可以切换conda env

主要是保证几个点 远程服务器python 环境没问题 conda这些也都有的ssh的账户 是有conda权限的没有免密就输入密码 免密教程就是最基本的那种 公钥copy过去就行了vscode 那几个插件都要装好 开始操作 首先 vscode 点击左侧工具栏中的扩展&#xff0c;搜索“ssh”&#xff0c;…

JVM面试题:85道JVM虚拟机面试题及答案

面试题 1 .简述Java堆的结构&#xff1f;什么是堆中的永久代(Perm Gen space)? JVM整体结构及内存模型 试题回答参考思路&#xff1a; 1、堆结构 JVM的堆是运行时数据区&#xff0c;所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自…

Java入门之数据类型和变量

1.字面常量 字面常量就是在程序运行中&#xff0c;固定不变的量&#xff0c;例如如下的代码 public class Demo{public static void main(String[] args){System.Out.println("hello world!");System.Out.println(100);System.Out.println(3.14);System.Out.println…

Git 的原理与使用(中)

Git 的原理与使用&#xff08;上&#xff09;中介绍了Git初识&#xff0c;Git的安装与初始化以及工作区、暂存区、版本库相关的概念与操作&#xff0c;本文接着上篇的内容&#xff0c;继续深入介绍Git在的分支管理与远程操作方面的应用。 目录 五、分支管理 1.理解分支 2.创…

多臂老虎机

多臂老虎机 有n根拉杆的的老虎机&#xff0c;每根拉杆获得奖励(值为1)的概率各不相同。 期望奖励更新 Q k 1 k ∑ i 1 k r i 1 k ( r k ∑ i 1 k − 1 r i ) 1 k ( r k k Q k − 1 − Q k − 1 ) Q k − 1 1 k [ r k − Q k − 1 ] Q_k\frac 1k \sum^{k}_{i1}r_i\\…

STL----resize

resize的作用 设置容器元素个数和初始值。 resize和reserve resize即改变容器元素个数&#xff0c;也改变容器容量。 reserve只改变容器容量&#xff0c;不改变容器元素个数。 reserve有什么用 reserve---存储&#xff0c;容量&#xff0c;保留。 1&#xff0c;设置容器容…

【vivado】 IBERT GT收发器误码率测试

一、前言 IBERT(Integrated Bit Error Ratio Tester),集成误码率测试仪。作为用户来说可以使用这个工具对自己设计的板子中的高速串行收发器进行简单测试&#xff0c;从而判断设计的接口是否有问题。因为这个工具是直接集成到FPGA上&#xff0c;这样一来直接使用这个工具来测试…