欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LVS负载均衡之DR模式

程序员文章站 2024-03-21 12:09:52
...

LVS负载均衡之DR模式

1.DR模式配置拓扑图

LVS负载均衡之DR模式

hostname ipaddress 说明
router 外网:12.0.0.1
内网:192.168.73.1
路由器
lvs 内网:192.168.73.100 lvs调度器
web1 内网:192.168.73.110
VIP:192.168.73.120
web1服务器
web2 内网:192.168.73.111
VIP:192.168.73.120
web2服务器
client 外网:12.0.0.2 测试机

2.服务器的配置

1.在所有的服务器上配置

systemctl stop firewalld    //关闭防火墙
setenforce 0                //关闭selinux,临时生效

2.配置router

vim /etc/sysctl.conf       //开启路由转发功能
net.ipv4.ip_forward=1
sysctl -p                  //加载路由转发配置
iptables -t nat -A PREROUTING -p tcp --dport 80 -i ens36 -j DNAT --to-destination 192.168.73.100
//表示从ens36网卡(12.0.0.1)来访问80端口的包,DNAT到192.168.73.100
iptables -t nat -A POSTROUTING -p tcp --dport 80 -o ens33 -j SNAT --to-source 192.168.73.1
//表示从(12.0.0.12访问12.0.0.1变成192.168.73.1访问192.168.73.100),从而实现LVS能够回到客户端

3.配置lvs调度器

//安装ipvsadm工具
yum -y install ipvsadm
//写一个脚本开启LVS的工作程序
modprobe ip_vs
cat /proc/net/ip_vs
ipvsadm --save > /etc/sysconfig/ipvsadm
service ipvsadm start
//开启ipvsadm工具管理
vim nat.sh
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.73.120:80 -s rr
ipvsadm -a -t 192.168.73.120:80 -r 192.168.73.110:80 -g
//-g表示使用直接路由模式,LVS调度器就会把数据包调给192.168.73.110或192.168.73.111时,就只修改MAC地址,不修改目标IP直接路由过去
ipvsadm -a -t 192.168.73.120:80 -r 192.168.73.111:80 -g
ipvsadm
chmod +x nat.sh
./nat.sh
//执行脚本,开启LVS调度器的功能
ifconfig ens33:0 192.168.73.120 netmask 255.255.255.0
//开启虚拟网卡做浮动IP便于LVS的管理
//由于下面会在 web1、web2服务器上面添加一个子接口 lo:0 192.168.73.120网卡,这样就会到导致 lvs 调度器过去的包可以成果过去,但是不会回来,因为回来时它会直接查找自己的 lo:0的192.168.73.120。所以需要加一个子接口 掩码给到 255.255.255.0。

4.配置web1服务器

yum -y install httpd
//安装Apache服务
echo "this is web1" >> /var/www/html/index.html
//在站点目录上写一个默认网页标识这台服务器
ifconfig lo:0 192.168.73.120 netmask 255.255.255.255
//开启虚拟网卡,以便于LVS的调度和管理
route add default gw 192.168.73.1
//真实服务器把默认路由指向 router 同物理网段的 IP,可以临时加也可以直接写在配置文件里面,这里上面的环境准备已经写在了配置文件
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
//抑制 web 服务器上 IP 冲突问题
systemctl start httpd
//开启Apache服务

5.配置web2服务器

yum -y install httpd
echo "this is web2" >> /var/www/html/index.html
ifconfig lo:0 192.168.73.120 netmask 255.255.255.255
route add default gw 192.168.73.1
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
systemctl start httpd

3.在客户机上测试

[aaa@qq.com ~]# curl 12.0.0.1
this is web1 
[aaa@qq.com ~]# curl 12.0.0.1
this is web2 
[aaa@qq.com ~]# curl 12.0.0.1
this is web1 
[aaa@qq.com ~]# curl 12.0.0.1
this is web2