LVS-NAT模式
DR使用的场景都是属于内网常规使用负载,而NAT模式就是实现NAT功能的必要如下。
- 调度器有公网和内网地址存在,需要实现公网访问进行负载
- 虚拟化场景的IP地址都是属于虚拟化内部使用,而主机上的IP地址就是类似公网的功能,实现虚拟化和内网的负载
也就是调度器2边是无法实现通讯的都可以用过NAT模式解决
NAT相比DR模式简单很多,因为原理就是我们常用的利用防火墙的SNAT和网关配置能实现多台服务器的流量通过一台电脑转发出去,前提是多台电脑的网关需要指向转发流量的这台电脑上而公网就要进行DNAT访问到调度器(公网进通过DNAT,内网发通过SNAT)
看一下流量转发
公网通过DNAT实现访问到服务器
内网想访问到公网就需要SNAT
NAT模式不复杂就是NAT映射,但是有个问题就是调度器和真实服务器是否可以不在一个网段中?
不允许,因为真实服务器需要把流量转发到调度器,就是通过网关的功能,而如果不在一个网段服务器就会把流量转发给自己配置的网关而不是调度器的地址,这样是无法实现与公网建立的,也就是说想实现DR模式那也接受流量不转发流量是不行的
ip_forward
- 涉及多网卡数据的转发不可少的就要开启调度器的路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
总结
- 调度器和真实服务器需要在一个广播域
- 真实服务器需要指向网关为调度器
- 支持端口不同
- 进出流量都是经过调度器,压力很大
实例:
lvs_vip 192.168.32.128 vip处于不同网段
lvs_dip 192.168.26.140 dip与rip处于同一网段
server1 192.168.26.141 nginx服务器
server2 192.168.26.142 nginx服务器
调度器LVS配置
[root@LVS1 ~]# ls /usr/lib/modules/3.10.0-957.el7.x86_64/kernel/net/netfilter/ipvs/ |grep -e ip_vs
ip_vs_dh.ko.xz
ip_vs_ftp.ko.xz
ip_vs.ko.xz
ip_vs_lblc.ko.xz
ip_vs_lblcr.ko.xz
ip_vs_lc.ko.xz
ip_vs_nq.ko.xz
ip_vs_pe_sip.ko.xz
ip_vs_rr.ko.xz
ip_vs_sed.ko.xz
ip_vs_sh.ko.xz
ip_vs_wlc.ko.xz
ip_vs_wrr.ko.xz
#查询内核是否集成了LVS模块
lsmod |grep ip_vs
#是否加载是取决于系统是否调用lvs模块,只要确保内核集成即可
yum install -y ipvsadm
# 安装用户管理工具
ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
systemctl enable ipvsadm
#确保服务的正常启动,不然配置无法永久保存
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p
LVS虚拟服务配置
ipvsadm -A -t 192.168.32.128:80 -s rr
ipvsadm -a -t 192.168.32.128:80 -r 192.168.26.141:80 -m
ipvsadm -a -t 192.168.32.128:80 -r 192.168.26.142:80 -m
ipvsadm --save
#保存配置
真实主机配置
GATEWAY=192.168.26.140
配置网关为lvs_dip,重启网卡
#安装nginx服务进行测试
验证NAT模式进出流量都是经过调度器
修改server2的端口号8080同样也是支持的