前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lvs的DR模式部署

lvs的DR模式部署

原创
作者头像
陈不成i
修改2021-08-02 17:44:22
4750
修改2021-08-02 17:44:22
举报

一.环境准备

4台机器需要在一个内网环境中,或在一个交换机下。

LVS+keepalived主机 真实:10.10.10.10 虚拟:10.10.10.135

LVS+keepalived备机 真实:10.10.10.11 虚拟:10.10.10.135

后端web服务器A 真实:10.10.10.60 虚拟:10.10.10.135

后端web服务器B 真实:10.10.10.61 虚拟:10.10.10.135

二.安装

后端web(A和B操作)

需要A和B均操作如下,在创建测试页面部分需要变动

1.安装httpd服务器 yum install -y httpd systemctl start httpd systemctl enable httpd

2.创建测试页面并测试,A和B机器页面要不一样 echo "welcome A" > /var/www/html/index.html curl http://127.0.0.1

3.编写转发脚本 vim forward.sh

#!/bin/bash
#网卡和vip
NET_KA=enp0s8
SNS_VIP=10.10.10.135
case "$1" in
start)
       ifconfig ${NET_KA}:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       #/sbin/route add -host $SNS_VIP dev ${NET_KA}:0
       echo "1" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/${NET_KA}/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 ${NET_KA}:0 down
       #route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

4.执行脚本 bash forward.sh start

5.测试,可以看到出现虚拟ip ifconfig

负载均衡(配置主)

1.安装依赖 yum install -y openssl openssl-devel keepalived ipvsadm

2.路由转发 echo "1" >/proc/sys/net/ipv4/ip_forward

3.配置 vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id LVS_1  # 设置lvs的id,网络内唯一
}
vrrp_instance VI_1 {
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为
    interface enp0s8 #绑定网卡
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
     nopreempt #挂掉再启动后,不进行抢占
    advert_int 1  #主从之间心跳间隔,默认1s
    authentication {  #设备验证信息,主从要一样
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.135  #定义虚拟IP(VIP)
    }
}
#定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为轮询
    lb_kind DR # 设置LVS实现负载的机制
    #persistence_timeout 5 #添加后就持久化
    protocol TCP
    real_server 10.10.10.60 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK { #对后端节点进行检测
        connect_timeout 3 #超时时间
        nb_get_retry 3 #重试次数
        delay_before_retry 3 #多长时间重试
        connect_port 80
        }
    }
    real_server 10.10.10.61 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

4.启动keepalived systemctl start keepalived systemctl enable keepalived

5.测试,查看是否有10.10.10.135这个虚拟ip ip addr

测试网页,看是否轮询了,需要在别的机器上检测,不能在节点服务器上检测。 curl http://10.10.10.135 curl http://10.10.10.135

负载均衡(配置从)

1.安装依赖 yum install -y openssl openssl-devel keepalived ipvsadm

2.路由转发 echo "1" >/proc/sys/net/ipv4/ip_forward

3.配置 vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id LVS_2  # 设置lvs的id,网络内唯一
}
vrrp_instance VI_1 {
    state BACKUP   #指定Keepalived的角色,MASTER为主,BACKUP为
    interface enp0s8 #绑定网卡
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 80  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
    nopreempt #挂掉再启动后,不进行抢占
    advert_int 1  #主从之间心跳间隔,默认1s
    authentication {  #设备验证信息,主从要一样
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.135  #定义虚拟IP(VIP)
    }
}
#定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo rr # 设置负载调度的算法为轮询
    lb_kind DR # 设置LVS实现负载的机制
    #persistence_timeout 5 #添加后就持久化
    protocol TCP
    real_server 10.10.10.60 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK { #对后端节点进行检测
        connect_timeout 3 #超时时间
        nb_get_retry 3 #重试次数
        delay_before_retry 3 #多长时间重试
        connect_port 80
        }
    }
    real_server 10.10.10.61 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

4.启动keepalived systemctl start keepalived systemctl enable keepalived

5.测试,查看是否有10.10.10.135这个虚拟ip ip addr

测试网页,看是否轮询了,需要在别的机器上检测,不能在节点服务器上检测。 curl http://10.10.10.135 curl http://10.10.10.135

三.使用验证

负载均衡挂掉一个节点,访问正常

1.在负载均衡主上关机 init 0

2.在浏览器测试 curl http://10.10.10.135

web服务挂掉一个节点,访问正常

1.在web服务A上关机 init 0

2.在浏览器测试 curl http://10.10.10.135

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.环境准备
  • 二.安装
    • 后端web(A和B操作)
      • 负载均衡(配置主)
        • 负载均衡(配置从)
        • 三.使用验证
          • 负载均衡挂掉一个节点,访问正常
            • web服务挂掉一个节点,访问正常
            相关产品与服务
            命令行工具
            腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档