Keepalived搭建

Keepalived搭建LVS Keepalived 构建拓扑图安装 keepalivedke 起初是为 LVS 设计的 专门用来监控集群系统中各个服务节点的状态 后来又加入了 VRRP 的功能 VRRP 是 VirtualRoute 虚拟路由器冗余协议 的缩写 VRRP 出现的目的就是为了解决静态路由出现的单点故障问题 它能够保证网络的不间断 稳

目录

LVS+Keepalived构建拓扑图

安装keepalived

配置keepalived

全局定义部分-keepalived.conf

HA Cluser

虚拟服务器定义部分

启动Keepalived+lvs集群系统

LVS集群的特点

IP负载均衡及策略

VS/NAT:即(Virtual Server via Network Address Translation)

VS/TUN :即(VirtualServer via IP Tunneling)

VS/DR: 即(VirtualServer via Direct Routing)

负载调度算法

轮叫调度(Round Robin)

加权轮叫调度(Weighted Round Robin)

最少链接调度(Least Connections)

加权最少链接调度(Weighted Least Connections)



LVS+Keepalived构建拓扑图

Keepalived搭建

 

安装keepalived

        keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断、稳定的运行。

        所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster负载均衡功能。  

        Keepalived的官方站点是http://www.keepalived.org,可以在这里下载到各种版本,我们这里下载的是keepalived-1.1.19.tar.gz,安装步骤如下:

        下载安装keepalived,依赖于openssl和openssl-devel,:

yum -y install openssl-devel popt-devel yum install  wget wget  http://www.keepalived.org/software/keepalived-1.2.13.tar.gz  tar zxvfkeepalived-1.2.13.tar.gz cd keepalived-1.2.13 yum install  gcc ./configure--prefix=/usr/local/keepalived  >--with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686

说明:在编译选项中-with-kernel-dir”这是个很重要的参数,但这个参数并不是要把Keepalived编译进内核,而是指定使用内核源码里面的头文件,就是include目录。如果要使用LVS时,才需要用到此参数,否则是不需要的。

 

make && make install cp  /usr/local/keepalived/sbin/keepalived  /usr/sbin/ cp /usr/local/keepalived  /etc/sysconfig/keepalived   /etc/sysconfig/ cp   /usr/local/keepalived  /etc/rc.d/init.d/keepalived   /etc/init.d/ mkdir   /etc/keepalived cd   /etc/keepalived cp  /usr/local/keepalived   /etc/keepalived/keepalived.conf  ./

注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。

 

启动keepalived:

service keepalived start

 —通过查看日志判断keepalived(因为缺少校验)是否启动成功:

tail -f  /var/log/messages

 

 

Oct 15 19:48:07 192 systemd: StartingSYSV: Start and stop Keepalived…

Oct 15 19:48:07 192 Keepalived[10782]:Starting Keepalived v1.2.13 (09/30,2016)

Oct 15 19:48:07 192 Keepalived[10783]:Starting Healthcheck child process, pid=10784

Oct 15 19:48:07 192 Keepalived[10783]:Starting VRRP child process, pid=10786

Oct 15 19:48:07 192 Keepalived_healthcheckers[10784]:Netlink reflector reports IP 10.1.31.155 added

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Netlink reflector reports IP 10.1.31.125added

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Netlink reflector reports IPfe80::20c:29ff:fe7b:4fc5 added

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Registering Kernel netlink reflector

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Registering Kernel netlink command channel

Oct 15 19:48:07 192 Keepalived_vrrp[10786]:Netlink reflector reports IP 10.1.31.155 added

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Netlink reflector reports IP 10.1.31.125 added

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Netlink reflector reports IP fe80::20c:29ff:fe7b:4fc5added

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Registering Kernel netlink reflector

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Registering Kernel netlink command channel

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Registering gratuitous ARP shared channel

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Opening file ‘/etc/keepalived/keepalived.conf’.

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Truncating auth_pass to 8 characters

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Opening file ‘/etc/keepalived/keepalived.conf’.

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Configuration is using : 18439 Bytes

Oct 15 19:48:07 192 systemd: StartedSYSV: Start and stop Keepalived.

Oct 15 19:48:07 192 keepalived: Startingkeepalived: [  确定  ]

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Configuration is using : 64860 Bytes

Oct 15 19:48:07 192Keepalived_vrrp[10786]: Using LinkWatch kernel netlink reflector…

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: IPVS : Virtual service [10.1.31.125]:80illegal timeout.

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: IPVS : Virtual service [10.1.31.125]:80illegal timeout.

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: IPVS : Virtual service [10.1.31.125]:80illegal timeout.

Oct 15 19:48:07 192 Keepalived_healthcheckers[10784]:Using LinkWatch kernel netlink reflector…

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Activating healthchecker for service[10.1.31.161]:8081

Oct 15 19:48:07 192Keepalived_healthcheckers[10784]: Activating healthchecker for service[10.1.31.163]:8082

Oct 15 19:48:07 192Keepalived_vrrp[10786]: VRRP sockpool: [ifindex(2), proto(112), unicast(0),fd(10,11)]

Oct 15 19:48:08 192Keepalived_vrrp[10786]: VRRP_Instance(VI_1) Transition to MASTER STATE

Oct 15 19:48:09 192 Keepalived_vrrp[10786]:VRRP_Instance(VI_1) Entering MASTER STATE

Oct 15 19:48:09 192Keepalived_vrrp[10786]: VRRP_Instance(VI_1) setting protocol VIPs.

Oct 15 19:48:09 192Keepalived_vrrp[10786]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33for 10.1.31.125

Oct 15 19:48:14 192Keepalived_vrrp[10786]: VRRP_Instance(VI_1) Sending gratuitous ARPs on ens33for 10.1.31.125

配置keepalived

在通过Keepalived搭建高可用的LVS集群实例中,主、备Director Server都需要安装Keepalived软件,安装成功后,默认的配置文件路径为/etc/Keepalived/Keepalived.conf

一个完整的keepalived配置文件,有三个部分组成,分别是全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分。

  • 全局定义部分-keepalived.conf

global_defs {    notification_email {          @.com #邮件报警地址    }    notification_email_from  #邮件来源    smtp_server 192.168.200.1    smtp_connect_timeout 30    router_id NodeMaster #运行keepalived服务器的一个标识,发邮件时显示在邮件标题中的信息 }
  • keepalived进程: 监控RIP(realServer)服务器的状态
  • VRRP:解决静态路由出现的单点故障问题,保障网络不间断、稳定的运行

 

  • HA Cluser

    • vrrp实例定义部分
vrrp_instance VI_1 {    state MASTER             #指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器。    interface ens33                                               #指定HA监测网络的接口。    virtual_router_id 51     #虚拟路由标识,这个标识是一个数字,并且同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下,MASTER和BACKUP必须是一致的。     priority 100    #定义优先级,数字越大,优先级越高,在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。    advert_int 1         #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。    authentication {                                              #设定验证类型和密码。        auth_type PASS                                #设置验证类型,主要有PASS和AH两种。        auth_pass 1111     #设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。     }    virtual_ipaddress {              #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个。         10.1.31.125     } }
  • 虚拟服务器定义部分

virtual_server 10.1.31.125 80 {       #设置虚拟服务器,需要指定虚拟ip地址和服务端口,ip与端口之间用空格隔开。    delay_loop 6                                     #设置健康检查时间,单位是秒。    lb_algo rr              #设置负载调度算法,这里设置为rr,即轮询算法。    lb_kind DR                       #设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。 persistence_timeout 50                  #会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。 有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。 需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。    protocol TCP                                    #指定转发协议类型,有tcp和udp两种。 real_server 10.1.31.161 80 {     #配置服务节点1,需要指定real server的真实IP地址和端口,ip与端口之间用空格隔开。 weight 3  #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源。        TCP_CHECK {                   #realserve的状态检测设置部分,单位是秒            connect_timeout 10     #10秒无响应超时            nb_get_retry 3             #重试次数            delay_before_retry 3    #重试间隔        }     }    real_server 10.1.31.163 80 {            #配置服务节点2        weight 1                       TCP_CHECK {            connect_timeout 3               nb_get_retry 3                       delay_before_retry 3        }     } }

配置Keepalived.conf时,需要特别注意配置文件的语法格式,因为Keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能启动起来,因而配置文件一定要正确。

在默认情况下,Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路径下,可以通过“Keepalived  -f”参数指定你所在的配置文件路径即可。

Keepalived.conf配置完毕后,将此文件拷贝到备用Director Server对应的路径下,然后做两个简单的修改即可:

Ø 将“state MASTER”更改为“state BACKUP” Ø 将priority 100更改为一个较小的值,这里改为“priority80”

最后,还要配置集群的Real server节点,以达到与DirectorServer相互广播通信并忽略arp的目的,脚本的内容已经在上面进行介绍,这里不做解释。

 

VIP之keepalived时间配置归纳

1 VIP1秒同步一次MASTER和BACKUP

2 VIP6秒健康检查一次RIP

3 VIP的keepalived会话保持时间且是最大无响应超时时间为60s,即60秒内如果用户没执行任何操作则下次就被分发到其他的RIP节点,否则会话保持分发到固定节点。

4 VIP对RIP状态监测5秒无响应超时,重试3次,重试间隔3秒。

 

启动Keepalived+lvs集群系统

在主、备Director Server上分别启动Keepalived服务,可以执行如操下作:

etc/init.d/keepalived  start

接着在两个Real server上执行如下脚本:

/etc/init.d/lvsrsstart

至此,Keepalived+lvs高可用的LVS集群系统已经运行起来了。

 

注意:启动RealServer IP前先分别在RealServer IP节点/etc/init.d/目录下配置lvsrs文件并启动成功:

vi  /etc/init.d/lvsrs               #编辑一个lvsrs脚本,并放到/etc/init.d/下

进入vi编辑:

#description: start Real Server VIP=10.1.31.125 /etc/rc.d/init.d/functions  case"$1" in start)         echo " Start LVS of Real Server"         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up         /sbin/route add -host $VIP dev lo:0         echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore                        echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce         echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore         echo "2">/proc/sys/net/ipv4/conf/all/arp_announce         ;; stop)         /sbin/ifconfig lo:0 down         echo "close LVS Director server"         echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore         echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce         echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore         echo "0">/proc/sys/net/ipv4/conf/all/arp_announce         ;; *)         echo "Usage: $0 {start|stop}"         exit 1 esac chmod 755 /etc/init.d/lvsrs chmod 755 /etc/rc.d/init.d/functions service lvsrs start

 

LVS集群的特点

高可用性

         LVS是一个基于内核级别的应用软件,因此具有很高的处理性能,用LVS构架的负载均衡集群系统具有优秀的处理能力,每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合理均衡,使应用具有超高负荷的服务能力,可支持上百万个并发连接请求。

        如配置百兆网卡,采用VS/TUN或VS/DR调度技术,整个集群系统的吞吐量可高达1Gbits/s;

        如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。

高可靠性

        LVS负载均衡集群软件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的web站点也都采用了LVS集群软件,所以它的可靠性在实践中得到了很好的证实。

        有很多以LVS做的负载均衡系统,运行很长时间,从未做过重新启动。这些都说明了LVS的高稳定性和高可靠性。

适用环境

        LVS对前端Director Server目前仅支持Linux和FreeBSD系统,但是支持大多数的TCP和UDP协议。

  •        支持TCP协议的应用有:HTTP,HTTPS ,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP等等。
  •       支持UDP协议的应用有:DNS,NTP,ICP,视频、音频流播放协议等。

LVS对Real Server的操作系统没有任何限制,Real Server可运行在任何支持TCP/IP的操作系统上,包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows等

 

IP负载均衡及策略

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:

安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。

访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求,当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种分别是NAT、TUN和DR

 

VS/NAT:即(Virtual Server via Network Address Translation

三层负载均衡。也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。

在服务器端得到数据后,RealServer返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。

 

VS/TUN :即(VirtualServer via IP Tunneling

三层负载均衡。也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和DirectorServer位于同一个网段,也可以是独立的一个网络。

因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高

 

VS/DR: 即(VirtualServer via Direct Routing

二层负载均衡。也就是用直接路由技术实现虚拟服务器。

它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销

这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上,也就是处于同一个子网中。

 

负载调度算法

IPVS实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。

轮叫调度(Round Robin)

“轮叫”调度也叫1:1调度,调度器通过“轮叫”调度算法将外部用户请求按顺序1:1的分配到集群中的每个Real Server上,这种算法平等地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。

加权轮叫调度(Weighted Round Robin)

“加权轮叫”调度算法是根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server设置不同的调度权值,对于性能相对较好的Real Server可以设置较高的权值,而对于处理能力较弱的Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。

同时,调度器还可以自动查询Real Server的负载情况,并动态地调整其权值。

 

IPVS实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。

最少链接调度(Least Connections)

“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

加权最少链接调度(Weighted Least Connections)

“加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。

 

其它四种调度算法分别为:

基于局部性的最少链接(Locality-Based Least Connections)

带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)

目标地址散列(Destination Hashing)和源地址散列(SourceHashing)

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226188.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:38
下一篇 2026年3月17日 上午7:38


相关推荐

  • 僵尸进程详解

    僵尸进程详解僵尸进程简介 僵尸 进程是什么 通常情况下 造成僵尸进程的成因是因为该进程本应该已经执行完毕 但是该进程的父进程却无法完整的将该进程结束掉 而造成该进程一直存在于内存中 那么如何查看一个进程是否为僵尸进程呢 ps 将某个时间点的进程运行状态选取下来 psaux 查看系统所有的进程数据 A 所有的进程均显示出来 a 不与 terminal 有关的所有进程 u 有效用户相关的进程 x 通常

    2026年3月19日
    3
  • 支持网络唤醒计算机,如何网络唤醒计算机

    支持网络唤醒计算机,如何网络唤醒计算机满意答案 kgf 01 14 采纳率 52 等级 12 已帮助 13700 人大多数集成网卡都能实现网络唤醒功能 不过需要事先进入 BIOS 中开启网络唤醒功能 不同主板的设置不一样 以 VIA 主板为例 在 BIOS 中找到 OnBoardLAN 选项 将它设成 Enabled 同时将 POWERMANAGEM 电源管理设置 下的 PowerOnbyLA

    2026年3月18日
    2
  • Claude 4.5 最新的国内使用手册(支持 Claude 4、Claude 4.5)

    Claude 4.5 最新的国内使用手册(支持 Claude 4、Claude 4.5)

    2026年3月15日
    2
  • token身份认证机制(token怎么获取)

    目录1发展史2Cookie3Session3.1cookie和session的区别4Token4.1传统方式——基于服务器的验证4.2基于服务器验证方式暴露的一些问题4.3基于Token的验证原理4.5Tokens的优势参考文献1发展史1、很久很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某…

    2022年4月14日
    296
  • C++ vector的初始化「建议收藏」

    C++ vector的初始化「建议收藏」C++vector的初始化一维数组的初始化1.vector<int>v;2.vector<int>v={1,2,3,4,5};3.vector<int>v(n);vector<int>v(n,m);4.vector<int>v(v0);5.vector<int>…

    2026年1月15日
    3
  • 三道计算时间复杂度的题目

    三道计算时间复杂度的题目出处 算法第四版 EditionSedge 著 问题 1 4 7 三道小题初看觉得很简单 但是仔细一分析 a b 小题里面的内循环操作次数是和外层的 n i 值有关 并不是简单的操作 N 次 很久没有算过时间复杂度了 稍微感到有点棘手 publicstatic intN intsum 0 for intn N n gt 0 n 2 for inti 0 i lt

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号