前言

之前实现了DR模型,但是只能在同一个网段,相当于需要多个外网IP地址,这样在生产环境中会增加集群成本且ipv4地址资源现在很紧张。

DR VIP和RIP、DIP不在同一网段拓扑

LVS-dr模型不在同一个网段.jpg
该拓扑只是用于测试拓扑

生产环境拓扑应该如下:
生产环境dr.jpg

一、环境准备

根据测试拓扑图,一共需要五台虚拟机(路由器,DS,RS-1/2,客户端);
用到的地址和接口:

  • 客户端:192.168.123.20/24 ---- 桥接
  • 路由器:192.168.123.123/24 ---- 桥接;192.168.30.29/24 ---- vmnet2;192.168.20.1/24 ---- vmnet2:0(该地址为内网地址,需要加在vmnet2接口的上)
  • Director Server:192.168.20.10/24 ---- vmnet2;192.168.30.100/32 ---- vmnet2:0(为VIP地址)
  • Real Server:
    192.168.20.20/24 ---- vmnet2(RS1)
    192.168.20.30/24 ---- vmnet2(RS2)
    192.168.30.100/32 ---- lo:0(VIP RS1/2都要配置)

1.路由器配置

  • OS:CentOS 7
  • 网卡:两块网卡,一块桥接,一块用vmnet2
  • 桥接网卡地址:192.168.123.123/24 (假设是外网)
  • vmnet2:192.168.30.29/24 (外网)

重要:打开核心转发

~]# echo 1 > /proc/sys/net/ipv4/ip_forward

或者写入配置文件/etc/sysctl.conf

net.ipv4.ip_forward = 1

192.168.30.29地址接口添加内网地址:192.168.20.1/24

~]# ip addr add 192.168.20.1/24 ens33:0

如下图:

2.客户端配置

  • OS:CentOS 6
  • 网卡:一块网卡(桥接)
  • 桥接网卡地址:192.168.123.20/24 (假设是外网)


网关指向路由器的网关

3.Director Server配置

  • OS:CentOS 7
  • 网卡:一块网卡(vmnet2)
  • vmnet2:192.168.20.10/24 网关要指向路由器的192.168.20.1,忽略我设置的DNS地址

如下图:

配置VIP

~]# ip addr add 192.168.30.100/32 dev ens33:0

也可以新增加配置文件/etc/sysconfig/network-scripts/ifcfg-ens33:0,当然需要根据实际网卡增加:

TYPE=Ethernet       #网络类型
DEVICE=ens33:0      #关联设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO=none      #引导协议;要使用静态地址,使用static或者none;dhcp表示使用DHCP服务器获取地址;使用了DHCP协议,那么下面的地址配置将没有了意义
IPADDR=192.168.30.100   #IP地址
NETMASK=255.255.255.255 #子网掩码
ONBOOT=yes              #开机是否自动激活此网络接口
USERCTL=no              #是否允许普通用户控制此接口

通过增加配置文件方式,需要重启网络环境

Director Server配置完成后的地址:

4.RS配置

RS1

  • OS:CentOS 7
  • 网卡:一块网卡(vmnet2)
  • vmnet2:192.168.20.20/24 网关要指向路由器的192.168.20.1,忽略我设置的DNS地址

RS2

  • OS:CentOS 7
  • 网卡:一块网卡(vmnet2)
  • vmnet2:192.168.20.30/24 网关要指向路由器的192.168.20.1,忽略我设置的DNS地址

分别在RS1/RS2配置上RIP:192.168.20.20/24 192.168.20.30/24
配置VIP
配置脚本如下:

#!/bin/bash
#
VIP=192.168.30.100
DEV=lo:0

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/l0/arp_announce
        ip addr add ${VIP}/32 dev $DEV
    ;;
    stop)
        ip addr del ${VIP}/32 dev $DEV 
        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/l0/arp_announce
    ;;
esac

配置VIP:

~]# ./vip.sh start

二、添加集群服务

Director Server

~]# yum install ipvsadm -y  #安装ipvsadm

开始添加集群:

~]# ipvsadm -A -t 192.168.30.100:80 -s wrr  #加权的轮询算法
~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.20 -g -w 1    #dr模型,权重为1其实可省。
~]# ipvsadm -a -t 192.168.30.100:80 -r 192.168.20.30 -g -w 3    #dr模型,权重为3

集群添加完成,此时需要打开测试httpd服务,此处不再累述

三、客户端测试

Client

for i in {1..25};do
    curl http://192.168.30.100
done

可看到如下结果:

RS1
RS2
RS2
RS2
RS1
RS2
RS2
RS2
...

这里的RS1和RS2是在httpd服务的首页index.html中定义的:

RS1

如果不能通,查看五台主机是否关闭selinux和防火墙、httpd服务是否正常、ip地址配置是否正确等原因

END
Last modification:October 9th, 2019 at 02:27 pm
If you think my article is useful to you, please feel free to appreciate