keepalived服务部署通过检测端口,解决nginx服务的单点故障问题。

    配置如下
    修改KEEPALIVED配置文件即可
    cd /etc/keepalived/
    第一台配置文件
    vi keepalived.conf
    ! Configuration File for keepalived
    global_defs {
    notification_email {
    }
    router_id haproxy1
    }
    vrrp_instance VI_1 { #定义一个vrrp组,组名唯一
    state MASTER #定义改主机为keepalived的master主机
    interface eth0 #监控eth0号端口
    virtual_router_id 58 #虚拟路由id号为58,id号唯一,这个id决定了多播的MAC地址
    priority 100 #设置本节点的优先级,master的优先级 要比backup的优先级别高,数值要大
    advert_int 1 #检查间隔,默认为1秒
    nopreempt #优先级高的服务器设置,不抢占资源
    authentication {
    auth_type PASS #认证方式,密码认证
    auth_pass 1111 #认证的密码,这个密码必须和backup上的一致
    }
    virtual_ipaddress { #设置虚拟的ip, 这个ip是以后对外提供服务的ip。
    192.168.4.79/24
    }
    }
    virtual_server 192.168.4.79 80 {
    delay_loop 2
    persistence_timeout 60
    protocol TCP
    real_server 192.168.4.193 80 { #真实ip和端口,监测nginx服务状态
    weight 3
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    real_server 192.168.4.249 80 {#真实ip和端口
    weight 3
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    }

    第二台配置文件
    vi keepalived.conf
    ! Configuration File for keepalived
    global_defs {
    notification_email {
    }
    router_id haproxy2
    }
    vrrp_instance VI_1 { #定义一个vrrp组,组名唯一
    state backup #定义改主机为keepalived的master主机
    interface eth1 #监控eth1号端口 针对本服务情况修改
    virtual_router_id 58 #虚拟路由id号为58,id号唯一,这个id决定了多播的MAC地址
    priority 90 #设置本节点的优先级,master的优先级 要比backup的优先级别高,数值要大
    advert_int 1 #检查间隔,默认为1秒
    #nopreempt
    authentication {
    auth_type PASS #认证方式,密码认证
    auth_pass 1111 #认证的密码,这个密码必须和backup上的一致
    }
    virtual_ipaddress { #设置虚拟的ip, 这个ip是以后对外提供服务的ip。
    192.168.4.79/24
    }
    }
    virtual_server 192.168.4.79 80 { #虚拟主机设置,ip同上。
    delay_loop 2 #服务器轮询的时间间隔
    # lb_algo rr #lvs的调度算法
    # lb_kind DR #lvs的集群模式
    nat_mask 255.255.255.0
    persistence_timeout 50 #会话超时50s
    protocol TCP #健康检查是用tcp还是udp
    real_server 192.168.4.249 80 {
    weight 3
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    real_server 192.168.4.193 80 {
    weight 3
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    connect_port 80
    }
    }
    }

    两台服务器的配置文件修改完毕后重启服务
    service keepalived restart
    重启服务后通过ip a命令查看虚拟ip是否存在。
    以上操作完成后进行高可用测试,首先停掉其中有vip的服务器的Nginx服务,查看是否vip会漂移至另外一台,当vip漂移后,将原先停止的nginx服务启动,然后再次测试。