LVS系列之三:部署LVS的DR模式


title: LVS系列之三:部署LVS的DR模式
categories: Linux
tags:
- LVS
timezone: Asia/Shanghai
date: 2019-02-04

简介

Virtual Server via IP Tunneling(VS/TUN)

采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报 文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

环境

[root@centos181001 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 

准备3台服务器
Director节点: (ens34 11.11.11.61 vip ens34:0 11.11.11.60)
Real server1: (ens34 11.11.11.62 vip lo:0 11.11.11.60)
Real server2: (ens34 11.11.11.63 vip lo:0 11.11.11.60)

第零步:关闭系统默认防火墙并设置本地YUM(by all)

# 关闭防火墙
setenforce 0
sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
which systemctl && systemctl stop firewalld
which systemctl && systemctl disable firewalld
which systemctl && systemctl stop iptables || service iptables stop
which systemctl && systemctl disable iptables || chkconfig iptables off

# 配置本地yum
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cat <<EOF >/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
EOF

yum clean all       #清理本地缓存
yum clean plugins   #清理插件缓存
yum makecache       #构建缓存

第一步:Director server节点设置

在LVS方案中,虚拟ip地址与普通网络接口大大不同,这点需要特别注意。虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。为什么要这样呢?因为有若干机器要使用同一个ip地址,用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。

1. 安装ipvsadm
yum install -y ipvsadm
2.配置脚本并执行
cat <<EOF >/usr/local/sbin/lvs_dr.sh
#!/bin/bash
# 启用ip转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 定义VIP
vip=11.11.11.60
# 定义两台真实服务器IP地址
rs1=11.11.11.62
rs2=11.11.11.63
# 将VIP绑定到ens34
ip address add \$vip/32 dev ens34
# 添加主机路由
ip route add 11.11.11.60 dev ens34
# 清空ipvs转发列表
/usr/sbin/ipvsadm -C
# 添加一个虚拟服务
/usr/sbin/ipvsadm -A -t \$vip:80 -s wrr 
# 以直接路由的方式把请求转发到LVS后面的真实服务器,权重分别是3和1
/usr/sbin/ipvsadm -a -t \$vip:80 -r \$rs1:80 -g -w 3
/usr/sbin/ipvsadm -a -t \$vip:80 -r \$rs2:80 -g -w 1
EOF
cat /usr/local/sbin/lvs_dr.sh
chmod +x /usr/local/sbin/lvs_dr.sh
/usr/local/sbin/lvs_dr.sh

第二步:配置两个Real server节点

注意:在 DR 模式下,2台 rs 节点的 gateway 不需要设置成 dir 节点的 IP 。
1.Real server节点1:
yum install -y httpd
systemctl start httpd
echo "1111111111" > /var/www/html/index.html
2.Real server节点2:
yum install -y httpd
systemctl start httpd
echo "2222222222" > /var/www/html/index.html
3.两个Real server节点配置脚本并执行
# 如果你的RS的外部网络接口是eth0,那么
# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
# 其实真正要执行的是:
# echo "1">/proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo "2">/proc/sys/net/ipv4/conf/eth0/arp_announce
# 所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是0,那有可能是会出问题滴。
cat <<EOF >/usr/local/sbin/lvs_dr_rs.sh
#!/bin/bash
vip=11.11.11.60
# 关闭arp响应
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
ip route add \$vip dev lo
ip address add \$vip/32 dev lo
EOF
chmod +x /usr/local/sbin/lvs_dr_rs.sh
/usr/local/sbin/lvs_dr_rs.sh

第三步:测试(在第四个节点上)

因为在上边我们设置了节点1的权重是3,节点2的权重是1,所以这里结果每4次访问里有3次请求到节点1,一次访问请求到节点2

[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
2222222222
[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
1111111111
[root@rehl6801 ~]# curl http://11.11.11.60
2222222222

http://zh.linuxvirtualserver.org/node/2585

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值