keepalived安装部署与简单测试

本文深入解析Keepalived的工作原理,包括其在TCP/IP三层的运作机制,以及如何通过VRRP协议实现高可用性。同时,提供了详细的配置文件案例,指导读者如何配置Keepalived以实现前端高可用,特别关注LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived等常见组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keepalived:是一个类似于 layer3, 4 & 7 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 7层交换。 Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web 服务器。

 

keepalived程序是vrrp协议在linux主机上以守护进程的方式实现的,能够根据配置文件生成IPVS规则,并对各real server的健康做监测,以及Loadbalance主机和backup主机之间failover的实现。

 

keepalived在TCP/IP七层中的三层各层原理分别如下:
Layer3(IP层): Keepalived 使用 Layer3 的方式工作式时, Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既我们平时用的 Ping 程序) , 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。 Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。
Layer4(TCP层): 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中删除。
Layer7(应用层):Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。 Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除;

   比如访问一个页面,如果没有这个页面,就会将该节点剔除

 

keepalived的作用:

  1、管理VIP(虚拟IP): VIP会在LVS(虚拟主机)之间漂移

  2、监控LVS分发器:运行在主分发的 Keepalived 会以组播的形式向网络中宣告自己,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收不到组播,备用节点会认为主 LVS 挂了,开始接手主分发器工作,把VIP 配给自己

  3、管理RS : keepalived会每隔一个时间段去做一次类似于访问的操作

 

一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived

 

keepalived的配置文件keepalived.conf每段说明:

Global configuration : 全局配置

         global_defs{

         …

}

VRRP Configuration : 配置VRRP实例

         vrrp_instance name{

}

LVS Configuration : IPVS的相关配置

         virtual_server ip port {

         real_server ip port {

  …

}

}

 

 

安装方式省略,可采用源码编译,也可采用官方yum源安装

 

主要配置文件:

keepalived配置文件keepalived.conf详解:

  #全局定义部分

global_defs {

   notification_email {

     dba.gao@gmail.com              #设置报警邮件地址,收件人邮箱,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的sendmail服务。

     ixdba@163.com

   }

   notification_email_from Keepalived@localhost           #发件人邮箱。

   smtp_server 192.168.200.1      #设置smtp server地址。

   smtp_connect_timeout 30         #设置连接smtp服务器超时时间。

   router_id  LVS_MASTER    #运行Keepalived服务器的一个标识。建议写主机名

}

#vrrp实例定义部分

vrrp_instance VI_1 {

state MASTER        #指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器。

    interface eth0         #指定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地址,每行一个。

        192.168.12.135

    }

}

#虚拟服务器定义部分

virtual_server 192.168.12.135 80 {      #设置虚拟服务器,需要指定虚拟ip地址和服务端口,ip与端口之间用空格隔开

    delay_loop 6                                #设置健康检查时间,单位是秒。

    lb_algo rr                           #设置负载调度算法,这里设置为rr,即轮询算法。

    lb_kind DR                       #设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。

persistence_timeout 50           #会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。0为不可用

protocol TCP                               #指定转发协议类型,有tcp和udp两种。

real_server 192.168.12.246 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 192.168.12.237 80 {     #配置服务节点2

        weight 1                

        TCP_CHECK {

            connect_timeout 3    

            nb_get_retry 3           

            delay_before_retry 3

        }

    }

}

 

http://blog.51cto.com/lanlian/1303195    keepalived详细配置案例

 

keepalived配置文件案例: keepalived一般搭建都是主从各一个

global_defs {

   notification_email {

     shaopeng1942@163.com  #邮箱写自己的即可

   }

   notification_email_from shaopeng1942@163.com

   smtp_server localhost

   smtp_connect_timeout 30

   router_id master     #keepalived 服务器名称,主写master,备写backup,或用服务器名字命名

}

 

vrrp_instance VI_1 {

    state MASTER        #若是备用keepalived,则填BACKUP

    interface enp0s8

    virtual_router_id 51

    priority 100       # 主备keepalived最好不一样,一般备的该值比主的低

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       192.168.56.200     #虚IP,即VIP

    }

}

主备keepalived配置文件的主要区别在:

state   一个是MASTER,一个是BACKUP

priority  主keepalived的值比从keepalived的值大

 

 

 

编译安装keepalived的步骤:

keepalived最少3台服务器:

  一台主keepalived服务器、一台备keepalived服务器、至少一台提供httpd、nginx或tomcat服务的服务器

 

tar zxvf  keepalived源码包

cd  keepalived-版本号  

./configure  --prefix=/usr/local/keepalived

make && make install

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

mkdir /etc/keepalived

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

touch /etc/init.d/keepalived    keepalived启动脚本,解压的源码包里有

chmod +x /etc/init.d/keepalived

cp /usr/local/etc/keepalived/keepalived.conf  /etc/keepalived/

vi /etc/keepalived/keepalived.conf  #配置文件,解压的源码包里有

chkconfig --add keepalived

chkconfig keepalived on

service keepalived start

more /var/log/messages |grep -E "\\[" |grep keepalived   #查看keepalived运行日志

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值