CentOS 7 下keepalived(+安装)实现nginx高可用

目录

keepalived概述

VRRP协议与工作原理

VRRP选举机制

安装步骤

1.在node1和node4上通过yum安装keepalived

2. node1上配置/etc/keepalived/keepalived.conf文件如下

3.将配置文件远程拷贝到node4上一份

4.去node4上修改keepalived.conf文件

5.node1上启动keepalived

6.node1上检查

7.node4上启动keepalived

8.node4上检查,没有启动eth0:8的网卡

9.将node1对应网卡down掉并测试

10.将node1对应网卡up起来并测试

11查看keepalived进程

备注:

1.RS服务配置

2.无法自动生成虚拟网卡以及无法实现IP漂移问题的解决方法

原因:

解决方案:

keepalived概述

keepalived是集群管理中保证集群高可用的服务软件。Keepalived的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

高可用 High Available

1、需要心跳机制探测后端RS是否提供服务。

a) 探测down,需要从lvs中删除该RS

b) 探测发送从down到up,需要从lvs中再次添加RS。

2、Lvs DR,需要主备(HA)

Keepalived 原理:

VRRP协议(虚拟路由冗余协议) - Virtual Router Redundancy Protocol

IP漂移

keepalived工作在IP/TCP协议栈的IP层(3),TCP层(4),及应用层(5),工作原理基于VRRP协议。

  网络层(layer 3):Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除。

  传输层(layer 4):Keepalived以TCP端口的状态来决定服务器工作正常与否,如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

  应用层(layer 5):只要针对应用上的一些探测方式,如URL的get请求,或者对nginx脚本检测等;可以根据用户自定义添加脚本针对特定的服务进行状态检测,当检测结果与用户设定不一致,则把这台服务器从服务器群中剔除。​

VRRP协议与工作原理

VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议是一种容错的主备模式的协议,当网络设备发生故障时,可以不影响主机之间通信情况下进行设备切换,并且相对用户时切换过程时透明的。

一个VRRP路由器有唯一的标识:VRID,范围为0—255。该路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]

同一台路由器可以加入多个备份组,在不同备份组中有不同的优先级,使得该路由器可以在一个备份组中作为主用路由器,在其他的备份组中作为备用路由器。

提供了两种安全认证措施:明文认证和IP头认证。

​​​​​​​VRRP选举机制

  • 虚拟IP拥有者:如果某台路由器的IP地址与虚拟路由器的VIP地址一致,那么这台就会被选为主路由器。
  • 优先级较高者,如果没有虚拟IP拥有者,优先级数值大的路由器会被选举出,优先级范围0~255。
  • IP地址较大者,如果优先级一样高,IP地址数值大的路由器会被选举出。
    •         192.168.58.11   192.168.58.24 MASTER

​​​​​​​安装步骤

1.在node1和node4上通过yum安装keepalived

[root@node1 ~]# yum install keepalived –y

[root@node4 ~]# yum install keepalived ipvsadm –y

2. node1上配置/etc/keepalived/keepalived.conf文件如下

如果某项不记得如何配置,可以新开一个终端,通过man keepalived.conf命令进行查看配置说明

global_defs {            

   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个

    sysadmin@fire.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc #指定发件人

   smtp_server localhost #指定smtp服务器地址

   smtp_connect_timeout 30 #指定smtp连接超时时间

   router_id LVS_DEVEL #运行keepalived机器的一个标识

}

vrrp_instance VI_1 {

#指定实例的初始状态,两台路由器都启动后,马上会发生竞选。

#priority高的会竞选为Master,

#这里的state并不表示这台就一直是Master

    state MASTER

    #VI_1实例绑定的网卡(一台服务器会有多个网卡分别用于连接不同的网络)

interface eth0

#VRID标记(0-255)

    virtual_router_id 79

    #优先级,该值高的会优先竞选为Master,低的为BACKUP

    priority 100

    #检查间隔,默认1s

    advert_int 1

    #认证设置(暂时不用管)

    authentication {

        #认证方式,支持PASS和AH

        auth_type PASS

        #认证的密码

        auth_pass 1111

    }

    #指定漂移地址(VIP),也就是切换到MASTER时,这些IP会被添加

    #切换到BACKUP时,这些IP会被删除(传给ip addr命令)

    #每台服务器上可以不绑定任何虚拟地址,而都把它们放virtual_ipaddress

    #里,keepalived会自动使用ip addr进行绑定(不需要依赖ifcfg-eth0)

    #ip addr可以看到

    virtual_ipaddress {

        192.168.20.100/24  dev eth0 label eth0:8

    }

}

#虚拟主机配置

#设置一个虚拟主机,ip时192.168.200.100,端口时80;注:443为https端口

#实现ipvsadm -A -t 192.168.9.100:80 -s rr的相关配置

virtual_server 192.168.20.100 80 {

    #服务轮询的间隔时间

    delay_loop 6

    #LVS调度算法,可以设置rr|wrr|lc|wlc|lblc|sh|dh

    lb_algo rr  #轮询

    #LVS集群模式,可以是NAT|DR|TUN

    lb_kind DR  #记得改为DR模型

    nat_mask 255.255.255.0

#会话保持时间,测试环境改为0(不保持)方便我们进行真是主机的切换演示,生

#产环境时注意修改相当于http协议的request header中Connection: keep-alive

    persistence_timeout 0

    protocol TCP

    #每台real server都需要下述的配置项

    real_server 192.168.20.102 80 {

        weight 1

        HTTP_GET {

            url {

              path /

              status_code 200

            }

    #链接超时时间

            connect_timeout 3

            nb_get_retry 3 #重连次数

            delay_before_retry 3  #健康检查的端口

        }

}

#dG删除到文件结尾在复制real_server,进行修改

    real_server 192.168.20.103 80 {

        weight 1

        HTTP_GET {

            url {

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

3.将配置文件远程拷贝到node4上一份

 [root@node1 ~]# scp /etc/keepalived/keepalived.conf root@192.168.20.104:/etc/keepalived

4.去node4上修改keepalived.conf文件

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

priority 50

……

5.node1上启动keepalived

[root@node1 keepalived]# service keepalived start

6.node1上检查

[root@node1 keepalived]# ifconfig

……

eth0:8    Link encap:Ethernet  HWaddr 00:0C:29:36:EB:66  

          inet addr:192.168.20.100  Bcast:0.0.0.0  Mask:255.255.255.255

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

[root@node1 keepalived]# ipvsadm -ln

浏览器访问测试:http://192.168.20.100,并不断刷新,网页显示结果在102和103之间切换。

健康检查:将node2的httpd服务关掉,查看结果,然后在启动它,再次查看结果。

7.node4上启动keepalived

[root@node4 keepalived]# service keepalived start

8.node4上检查,没有启动eth0:8的网卡

[root@node4 keepalived]# ifconfig

……

[root@node1 keepalived]# ipvsadm -ln

9.将node1对应网卡down掉并测试

[root@node1 keepalived]# ifconfig eth0 down

[root@node1 keepalived]# ifconfig

node4上查看,

[root@node4 keepalived]# ifconfig

10.将node1对应网卡up起来并测试

[root@node1 keepalived]# ifconfig eth0 up

[root@node1 keepalived]# ifconfig

node4上查看,

[root@node4 keepalived]# ifconfig

11查看keepalived进程

[root@node1 ~]# ps -ef |grep keepalived

 父进程1663接收并转发请求,子进程1664和1665是分别长链接,用于监听RS的状态。

备注:

1.RS服务配置

与以下连接中的RS配置(4,5,6步骤)相同

CentOS7.9下DR模式的实现__1sAGirl的博客-CSDN博客

2.无法自动生成虚拟网卡以及无法实现IP漂移问题的解决方法

原因:

出现这个问题的原因在于在keepalived.conf配置文件中virtual_router_id参数设置了默认id——51,然后同一内网内还有其它keepalived集群也设置了51这个默认路由id,因此keepalived报“目前xxx这个虚拟IP不能绑定到51这个路由id上”的错误。

解决方案:

  将keepalived.conf文件中的virtual_router_id参数设置成其它即可,如:79、89、101。只要取值范围在取值0-255就行。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErYao7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值