LVS-DR与Keepalived高可用群集「建议收藏」

LVS-DR与Keepalived高可用群集

大家好,又见面了,我是你们的朋友全栈君。

Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。

为什么要用LVS+Keepalived?

lvs是一个在四层上实现后端realserver的负载均衡的集群,lvs遗留下两个问题,一个是lvs的单点故障;第二个是lvs不能检测后端realserver的健康状态检查。
解决lvs的单点故障就用到了高可用集群:

  • ①可以是heartbeat+ldirectord这种重量级的;
  • ②可以是keepalived+lvs这种轻量级的解决方案。(本博客主要写keepalived+lvs轻量级的解决方案)

解决lvs不能检测后端realserver的健康状态也后很多种方法:

  • ①可以在lvs上写脚本ping后端realserver的ip地址,ping几次发现ip地址ping不通则在ipvs规则里面删除,当后端服务器可以ping了,则把后端realserver添加到ipvs规则里面。
  • ②可以在lvs上写脚本请求后端realserver的测试几次网页文件,查看状态码是否为200,不是则在ipvs规则里面清楚,当测试网页返回的状态吗是200之后,则把后端realserver添加到ipvs规则里面
  • ③以上两种方法都是依赖于脚本,keepalived的出现解决了不依赖于脚本,也可以对后端realserver的健康状态检查,keepalived的配置文件里面可以自行生成ipvs的规则,并且自行检测后端realserver的状态,当后端realserver不能提供服务了,keepalived会自行将其在ipvs规则里面删除,当后端realserver可以提供服务了,又自行的在ipvs规则里面添加。

拓扑图:

LVS-DR与Keepalived高可用群集

实验环境及IP规划:

名称 操作系统 IP地址
Master CentOS7 192.168.100.201(VIP:192.168.100.10)
Backup CentOS7 192.168.100.202(VIP:192.168.100.10)
Apache1 CentOS7 192.168.100.221(VIP:192.168.100.10)
Apache2 CentOS7 192.168.100.222(VIP:192.168.100.10)
Realserver Win7 192.168.100.50(网关:192.168.100.10)

实验部署:

1. Master(CentOS7-1):

首先配置DR调度服务器(LVS+DR)

#yum install keepalived ipvsadm –y      //安装keepalived和ipvsadm服务
#vi /etc/sysctl.conf
net.ipv4.ip_forward=1       //开启路由转发功能
net.ipv4.conf.all.send_redirects = 0        //关闭重定向功能
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#sysctl –p      //使服务生效
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-ens33 ifcfg-ens33:0       //创建虚拟网卡
#vim ifcfg-ens33:0
DEVICE=ens33:0          //网卡名称
ONBOOT=yes              //网卡可用
IPADDR=192.168.100.10   //IP地址
NETMASK=255.255.255.0   //子网掩码
#service network restart
#ifup ens33:0               //开启网卡
#vim /etc/init.d/dr.sh      //配置DR模式脚本文件
#!/bin/bash
GW=192.168.100.1            //网关地址
VIP=192.168.100.10          //虚拟网卡地址
RIP1=192.168.100.201            //节点服务器1IP地址
RIP2=192.168.100.202            //节点服务器2IP地址
case "$1" in
        start)
        /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm   
        systemctl start ipvsadm                                 //启用LVS工具
        /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up                        //开启虚拟网卡
        /sbin/route add -host $VIP dev ens33:0      //配置路由段
        /sbin/ipvsadm -A -t $VIP:80 -s rr
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
        echo "ipvsadm starting --------------------[ok]"    //启动完提示信息
        ;;
        stop)
        /sbin/ipvsadm –C                //清空LVS
        systemctl stop ipvsadm
        ifconfig ens33:0 down           //关闭端口
        route del $VIP
        echo "ipvsamd stoped----------------------[ok]"
         ;;
        status)
        if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "ipvsadm stoped---------------"
        exit 1
                else
                echo "ipvsamd Runing ---------[ok]"
        fi
        ;;
        *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        esac
        exit 0
#chmod +x dr.sh         //给予执行权限
#service dr.sh start            //开启DR模式

部署keepalived:(在LVS-DR部署完成后配置)

#vim /etc/keepalived/keepalived.conf
global_defs {
  ...
  smtp_server 127.0.0.1           //指向本地
  router_id LVS_01              //指定名称,备份服务器不同名称
  ...             
}

vrrp_instance VI_1 {
  state MASTER              //备份服务器是BACKUP
  interface ens33               //对应端口号
  virtual_router_id 10          //组号
  ...
  auth_pass abc123         #验证密码
  priority 100              #优先级backup小于master
  ...
  virtual_ipaddress {
        192.168.100.10
    }
  ...
virtual_server 192.168.100.10 80 {          //虚拟服务器地址(VIP)、端口
...
  real_server 192.168.100.221 80 {
        weight 1
        TCP_CHECK {                     //健康检查方式
            connect_port 80             //
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }   
    real_server 192.168.100.222 80 {
        weight 1
        TCP_CHECK {
            connect_port 80              #添加端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }    
}

2. Backup(CentOS7-2)

Backup整体配置与Master相同,但在keepalived配置时需要注意:
router_id与Master的不同
state为BACKUP
priority优先级Backup小于Master

3. 配置节点服务器1(CentOS7-3)

#systemctl start httpd.service      //开启httpd服务
#systemctl stop firewalld.service       //关闭防火墙
#setenforce 0   
#echo “this is accp web” > /var/www/html/index.html     //添加首页内容
#cd /etc/sysconfig/network-scripts
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes
#vim /etc/init.d/web.sh     //编写网络配置脚本web.sh
#!/bin/bash
VIP=192.168.100.10
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/route add -host $VIP dev lo:0
                echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
                echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
                echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
                sysctl -p >/dev/null 2>&1
                echo "RealServer Start OK "
                ;;
        stop)
                ifconfig lo:0 down
                route del $VIP /dev/null 2>&1
                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
                echo "RealServer Stopd"
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0
#chmod +x web.sh
#service web.sh start
#ifup lo:0       //启动后Xshell远程连接会断开
#ifconfig               //到虚拟机中检查虚拟网卡是否启动
#firefox http://127.0.0.1/ &        //在虚拟机中自测
#service web.sh stop
#service web.sh start           //重启网络配置脚本

4. 配置节点服务器2(CentOS7-4)

整体配置过程同节点服务器1

二.相关测试

1.测试LVS-DR负载均衡是否配置成功

LVS-DR与Keepalived高可用群集
LVS-DR与Keepalived高可用群集

2.配置完keepalived以后,down掉MASTER的ens33:0,再去用Win7测试,查看是否能够ping通,若通则证明keepalived双机热备成功。

LVS-DR与Keepalived高可用群集

转载于:https://blog.51cto.com/13625810/2132290

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 冒泡排序

    Java 冒泡排序Java冒泡排序冒泡排序是最为出名的排序算法之一,总共有八大排序!直接插入排序希尔排序简单选择排序堆排序冒泡排序快速排序归并排序基数排序冒泡排序还是比较简单的,两次循环吗,外层冒泡轮数,里层依次比较。上代码packageArrays;importjava.util.Arrays;/***冒泡排序*1.比较数组中,两个相邻的元素,如果第一个数比第二个大,我们就让它们交换位置*2.每一次比较,都会产生一个最大的,或者最小的数字*3.下

    2022年7月7日
    19
  • Linux 解压zip命令「建议收藏」

    Linux 解压zip命令「建议收藏」linux自带的unzip命令可以解压windows下的zip格式的压缩文件。unzip命令  语法:unzip[选项]压缩文件名.zip  各选项的含义分别为:  -x文件列表解压缩文件,但不包括指定的file文件。  -v查看压缩文件目录,但不解压。  -t测试文件有无损坏,但不解压。  -d目录把压缩文件解到指定目录下。  -z只显示压缩文件

    2022年5月23日
    44
  • 卸载pycharm重新安装_乌班图怎么下载pychsrm

    卸载pycharm重新安装_乌班图怎么下载pychsrmpycahrm安装首先要去pycharm的官方网站下载Linux版本的pycharm安装包。如果想要下载以前版本的pycharm可以登录下方的网站去下载。https://www.jetbrains.com/pycharm/download/other.html安装包下载完毕后应该是一个后缀为:.tar.gz的压缩文件。此处我将下载的安装包放到了Downloads目录下(放在哪里随意)…

    2022年8月29日
    5
  • Anaconda+PyQt5+PyCharm开发并生成.exe可执行文件[通俗易懂]

    Anaconda+PyQt5+PyCharm开发并生成.exe可执行文件[通俗易懂]一、安装Anaconda软件二、安装PyCharm软件三、安装PyQt5Anaconda软件自带PyQt,但是安装不完整,开发时可能会遇到问题。因此,最好自己重新完整安装一遍。1.打开AnacondaPrompt终端界面2.安装pyqt5输入以下命令安装:pipinstallpyqt5如果以上命令安装不成功的话使用镜像安装,执行命令:pipinsta…

    2022年8月28日
    2
  • leetcode78子集_A是B的子集

    leetcode78子集_A是B的子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] 提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums 中的所有元素 互

    2022年8月8日
    2
  • USB转串口/USB转485两线制转换器简单介绍——爱威轮[通俗易懂]

    USB转串口/USB转485两线制转换器简单介绍——爱威轮[通俗易懂]USB-8501工业级USB总线两线制RS485转换器提供了USB到RS485串行口的协议转换。通过利用USB接口具有的即插即用和热拔插的方便性,使USB接口可非常容易地和其他RS485设备通信,并能提供高达12Mbps的传输速率。USB转485工业级两线制转换器广泛用于工控、安防、金融、智能交通、超市管理等领域。它是笔记本电脑现场编程调试的好帮手。 …

    2022年5月25日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号