客户端IP地址:172.16.8.147

路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3

一、将客户端的网关修改为路由服务器IP地址

vim ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.8.147
NETMASK=255.255.254.0
GATEWAY=172.16.8.167

二、路由服务器配置转发

vi /etc/sysctl.conf 

net.ipv4.ip_forward=1

三、使路由转发功能生效

sysctl -p

四、修改RS服务器,LVS服务器的网关为路由服务器

 vi /etc/sysconfig/network-scripts/ifcfg-ens33 

GATEWAY=192.168.1.3

五、在路由服务器上添加一个IP地址

nmcli c modify ens33 +ipv4.addresses 10.0.0.200/8
nmcli c up ens33

六、配置LVS服务器的网关,该网关可以随便配,但必须要有,最好配路由器的地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=192.168.1.3

七、在两台RS服务器上执行以下脚本,两台RS服务器和LVS服务器的IP均为10.0.0.100

bash RS.sh start

脚本内容如下:

#/bin/bash
#Date:2021-5-18
vip=10.0.0.100
mask=255.255.255.255
#The subnet mask is not important here
dev=lo:1
test=192.168.1.100
#rpm q- http &> /dev/null || yum -y install httpd &>/dev/null
#service httpd start &> /dev/null && echo "The httpd Server is Ready!"
#echo "<h1>$test `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 Caneled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

八、配置LVS服务器

bash VS.sh start

脚本内容如下:

#/bin/bash
vip=10.0.0.100
iface=lo:1
mask='255.255.255.255'
port='80'
rs1='192.168.1.5'
rs2='192.168.1.6'
scheduler='rr'
type='-g'
#-g =DR model
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 "Usage $(basename $0) start|stop"
exit 1
esac

九、在两台RS服务器上安装httpd服务,并设置为开机启动

1 yum install httpd -y
2 systemctl start httpd
3 systemctl enable httpd

十、测试访问

[05:31:08 root@client_ip ~]#curl 10.0.0.100
192.168.1.6------RS2
[05:31:09 root@client_ip ~]#curl 10.0.0.100
192.168.1.5 _______RS1

 LVS跨网段DR模型 ——https

一、安装自签名证书(这里就不申请官方证书了,申请一个自签名证书就行)

yum install mod_ssl -y

二、 重启httpd 服务

systemctl restart httpd

三、添加443规则

ipvsadm -A -t 10.0.0.100:443 -s rr
ipvsadm -a -t 10.0.0.100:443 -r 192.168.1.5
ipvsadm -a -t 10.0.0.100:443 -r 192.168.1.6

四、测试访问

[06:13:38 root@client_ip ~]#curl -k https://10.0.0.100/
192.168.1.5 _______RS1
[06:13:38 root@client_ip ~]#curl -k https://10.0.0.100/
192.168.1.6------RS2

五、无论访问该网段的80还是443 ,只要是访问同一个网站,直接参与到一个调度中

目前调度规则,访问80和443端口如下:

while : ; do curl 10.0.0.100 ; curl -k https://10.0.0.100/ ; sleep 0.5; done
192.168.1.6------RS2
192.168.1.5 _______RS1
192.168.1.5 _______RS1
192.168.1.6------RS2
192.168.1.6------RS2

无论是80还是443,通过贴标签的方式,将他们当成是同一台集群,通过iptables 来贴标签

六、在LVS服务器上贴标签

iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10

在mangle表上,PREROUTING链上,-d IP地址,协议是tcp,端口是80和443的,就给你贴标签,标签名10

七、查看防火墙mangle表是否添加成功

iptables -t mangle -nvL

八、清除规则

ipvsadm -C

九、使用防火墙标签加规则-f ,添加FWM规则

ipvsadm -A -f 10 -s rr

这里的10就是上面第六步打标签的最后的标签名

十、添加规则,

ipvsadm -a -f  10 -r 192.168.1.5 -g
ipvsadm -a -f 10 -r 192.168.1.6 -g

dr 模型不需要添加端口,加了也白加

十一、测试访问

while : ; do curl 10.0.0.100 ; curl -k https://10.0.0.100/ ; sleep 0.5; done
192.168.1.5 _______RS1
192.168.1.6------RS2
192.168.1.5 _______RS1
192.168.1.6------RS2

最新文章

  1. docker --命令
  2. mysql创建用户及授权相关命令
  3. 用PHP获取系统时间时,时间比当前时间少8个小时
  4. java实现栈和队列
  5. 关于obj和基本类通过函数参数传进去执行是否改变原来的值
  6. 【vijos1659】河蟹王国 线段树&lt;区间修改+区间最大值&gt;
  7. 64位下好神奇啊(增加了PatchGuard技术保护自己,SSDT是相对地址,参数通过寄存器与rdi来传递)
  8. Ubuntu的默认root密码
  9. Unity FisheyeShader using Spherical Mapping
  10. ASP.NET自定义控件组件开发 第五章 模板控件开发
  11. c#入门系列——番外篇:vs的安装与使用
  12. Django2中文文档--目录及介绍部分
  13. 【网址】ILSpy,C# .net/dot net的反编译工具
  14. Android Handler、Message、MessageQueue和Looper官方说明
  15. 转:Java项目开发规范参考
  16. PGSQL 数据库备份练习
  17. Android Studio快速集成讯飞SDK实现文字朗读功能
  18. Phoenix 4.8
  19. Git Bash关键命令
  20. ringojs 基于jvm 的javascript 平台试用

热门文章

  1. DAOS 分布式异步对象存储|事务模型
  2. LamPiao靶机work_through
  3. Spring Boot 轻量替代框架 Solon 1.3.20 发布
  4. Unity2D项目-平台、解谜、战斗! 0.2 序言:团队在线协作方案、基线控制
  5. JavaScript深入理解-PWA渐进式应用
  6. Day13_74_守护线程
  7. centos7安装kubernetes k8s 1.18
  8. 解决github不能访问的问题
  9. 【ElasticSearch】ES线上脏数据处理
  10. dalvik浅析三:类加载