KeepAlived双主配置

China☆狼群 提交于 2020-02-06 00:42:17

环境规划

在这里插入图片描述

配置说明

  1. Client的网关指向 192.168.1.4
  2. RS,keepalived 网关指向 192.168.43.17
  3. RS上安装 httpd服务,RS1,RS2的vip为 192.168.43.100,RS3,RS4的vip为 192.168.43.200
  4. keepalived服务器上安装 keepalived服务,配置两个vip,192.168.43.100,192.168.43.200
  5. 路由器上开启路由转发的功能

keepalived 配置

安装keepalived软件包

yum install keepalived -y

配置文件
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id keepalived-01   // keepalived-02
   vrrp_mcast_group4 224.100.100.100
}
vrrp_instance VI_1 {
    state MASTER         //  BACKUP
    interface ens33
    virtual_router_id 66
    priority 100           //  小于 100 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.43.100/24 dev ens33 label ens33:1
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault  "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
    state BACKUP    // MASTER
    interface ens33
    virtual_router_id 88
    priority 80    // 大于 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 654321
    }
    virtual_ipaddress {
        192.168.43.200/24 dev ens33 label ens33:2
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault  "/etc/keepalived/notify.sh fault"
}
virtual_server 192.168.43.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    sorry_server 127.0.0.1 80

    real_server 192.168.43.6 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.43.16 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

virtual_server 192.168.43.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    sorry_server 127.0.0.1 80

    real_server 192.168.43.26 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.43.36 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

安装 ipvsadm 用于查看规则
安装 httpd 建立 SorryServer服务

RS的配置

vim lvs_dr_rs.sh

#!/bin/bash
vip=192.168.43.100  // RS1,RS2配置为 100,RS3、RS配置为200
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &> /dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html
case $1 in
start)
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
        ifconfig $dev $vip netmask $mask #broadcast $vip up
        #route add -host $vip dev $dev
echo "The RS Server is Ready"
;;
stop)
        ifconfig $dev down
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
        echo "Usage: $(basename $0) start|stop"
        exit 1
;;
esac

Client 测试

while : ;do curl 192.168.43.100;sleep 1;done
while : ;do curl 192.168.43.200;sleep 1;done

解决了什么问题

  1. rs 挂掉了,keepalived 会把对应的那条记录在 lvs 规则中清除
  2. 一台 keepalived 服务器挂掉了,vip 会漂移到 从节点上
  3. 后端的所有 rs 挂掉了,会提供 Sorry Server
  4. 每个 keepalived 服务器管理不同的业务, 一旦有一台keepalived服务器挂掉了,会承担所有业务。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!