您的位置:首页 > 其它

关于架设LVS之-DR模式配置(三)

2018-03-20 15:01 246 查看
DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:(1) 在前端网关做静态绑定(2) 在各RS使用arptables(3) 在各RS修改内核参数,来限制arp响应和通告的级别 限制响应级别:arp_ignore  (修改为1)0:默认值,表示可使用本地任意接口上配置的任意地址进行响应1: 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应 限制通告级别:arp_announce(修改为2)0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告1:尽量避免将接口信息向非直接连接网络进行通告2:必须避免将接口信息向非本网络进行通告

设计要点:(1) VS和各RS都配置有VIP(2) 确保前端路由器将目标IP为VIP的请求报文发往VS 在前端网关做静态绑定VIP和VS的MAC地址 在RS上使用arptables工具    arptables -A IN -d $VIP -j DROP    arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP 在RS上修改内核参数以限制arp通告及应答级别 (强烈使用)    /proc/sys/net/ipv4/conf/all/arp_ignore    /proc/sys/net/ipv4/conf/all/arp_announce(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,     以确保响应报文不会经由VS(4)RS和VS要在同一个物理网络(5)请求报文要经由VS,但响应报文不经由VS,而由RS直接发往Client(6)不支持端口映射(端口不能修败)(7)RS可使用大多数OS系统



A路由器: ETH0:   222.222.222.1   (CLIENT网关模拟远端用户网络)               ETH1:  172.18.33.1/29  (RS的内部网络)              ETH1:1  123.123.123.1/30(VIP的网关模拟公网,对外发布的地址)中间层是有交换机的B:客户端PC  ETH0:222.222.222.2 (CLIENT)C:LVS服务器 ETH0:123.123.123.2 (VIP) 172.18.33.2 (DIP)D: RS1服务器 ETH0:172.18.33.3 (RIP) lo1:123.123.123.2 (VIP)E:RS2服务器 ETH0:172.18.33.4 (RIP) lo1:123.123.123.2 (VIP)

1.需要在路由器上开启转发模式,以达到PC端到RS通信  echo net.ipv4_forward=1 >>/etc/sysctl.conf  sysctl -p  立即生效  sysctl -a | grep forward



2.配置网卡地址且互联互通  1)按需求配置服务器接口地址  2)客户端PC与RS和VS服务器指向路由器各自接口上的网关  3)RS的网关千万不要指向到VS服务器










  3.在两台RS服务器上分别搭建http服务
 1)RS1和RS2分别安装httpd
  yum -y install httpd

 2)RS1和RS2分别写入测试页面
  echo RS1 > /var/www/html/index.html
  echo RS2 > /var/www/html/index.html

 3)RS1和RS2分别开启服务与自启动
  systemctl enable httpd
  systemctl start httpd
    临时关闭防火墙,根据个人情况,实验环境无所谓
  systemctl stop firewalld
 
 4)分别在两台RS1和RS2上在lo接口上配置vip地址
  ifconfig lo:1 123.123.123.2 netmask 255.255.255.252 123.123.123.2 up
 
 5)分别在RS1和RS2上关闭发送和接收arp消息
    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
 
 4)在客户端PC上分别访问测试是否正常



4.配置LVS服务器
 1)安装ipvsadm软件包
  yum -y install ipvsadm
  
 2)配置VIP地址,此地址必须要配置在VS服务器和RS服务器上且地址必须保证一致
  ifconfig ens33:1 123.123.123.2 netmask 255.255.255.252  123.123.123.2 up

 3)配置wrr的工作模式
   -F 清除所有策略
   -A 添加VS服务器  -t / -u  TCP或UDP协议    -s 使用的调度类型
   -a -t  添加对rs绑定用的  -t / -u  TCP或UDP协议  -g 代表DR模式  -w 权重比例
   调度类型还有很多种大家可以根据个人情况测试,在架设LVS之-基础知识(一)有讲
   iptables -F    清空防火墙
   ipvsadm -A -t 123.123.123.2:80 -s wrr
   ipvsadm -a -t 123.123.123.2:80 -r 172.18.33.3 -g -w 1
   ipvsadm -a -t 123.123.123.2:80 -r 172.18.33.4 -g -w 34)测试当前使用的是wrr权重模式 ,且172.18.33.4与172.18.33.3是3:1的关系,172.18.33.4访问的几率较大


在客户端PC上去访问123.123.123.2测试是否正常


最后附上两个用于便捷配置VS与DR服务器的脚本LVS服务器配置脚本:#!/bin/bash
#Author:DaoKE
vip='123.123.123.2'
iface='ens33:1'
mask='255.255.255.252'
port='80'
rs1='172.18.33.3'
rs2='172.18.33.4'
scheduler='wrr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask #broadcast $vip up
    iptables -F
 
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

RS服务器配置脚本
#!/bin/bash
#Author:DaoKe
vip=123.123.123.2
mask='255.255.255.252'
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 "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: