keepalived安装部署与简单测试

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运行日志

 

 

当您部署 Keepalived 的时候,您需要在多个服务器上安装它,并将其配置为相互通信,以便它们可以选择主服务器和备份服务器。Docker 使这项工作变得更容易,因为它使您能够创建可移植的容器,并将其部署在多个主机上。 下面是一个简单的步骤指南,介绍如何使用 Docker 部署 Keepalived: 1. 在每个服务器上安装 Docker。可以在官方网站上找到安装说明。 2. 从 Docker Hub 下载 Keepalived 镜像。执行以下命令: docker pull osixia/keepalived 3. 创建一个网络,以便容器可以相互通信。例如,使用以下命令创建一个名为“keepalived_network”的网络: docker network create --driver bridge keepalived_network 4. 启动第一个 Keepalived 容器。以下示例命令启动一个名为“keepalived1”的容器: docker run -d --name keepalived1 --net keepalived_network \ -e KEEPALIVED_INTERFACE=eth0 \ -e KEEPALIVED_VIRTUAL_IPS=192.168.0.10 \ -e KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['192.168.0.11', '192.168.0.12']" \ osixia/keepalived 在这个命令中,我们使用了环境变量来设置 Keepalived 的配置。请注意,我们指定了一个虚拟 IP 地址(192.168.0.10),并指定了其他两个服务器的 IP 地址作为 Unicast Peers(192.168.0.11 和 192.168.0.12)。 5. 启动其他 Keepalived 容器。请参考第 4 步的示例命令,修改其中的容器名称、虚拟 IP 和 Unicast Peers。 6. 在每个容器中测试 Keepalived。执行以下命令: docker exec keepalived1 ip addr show eth0 这将显示容器中 eth0 接口的 IP 地址。应该显示虚拟 IP 地址(192.168.0.10)。 然后尝试从其他服务器 ping 虚拟 IP 地址,确保它们都可以访问虚拟 IP 地址。 以上是一个简单的 Docker 部署 Keepalived 的步骤,但是这只是 Keepalived 的基本配置。具体配置取决于您的环境和需求。如果您需要更多帮助,请告诉我您具体的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值