«

Lvs - NAT模式

指尖二进制 • 1 年前 • 810 次点击 • LB


[TOC]

一:LVS-NAT 模式搭建

1:LVS-NAT 模式工作原理:

客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
步骤1:客户端访问VIP1的网站

图上各IP注解:
CIP 客户端的IP
VIP 是域名解析的IP, 是集群对外的公网IP
DIP 用来和后端服务器进行数据交互的IP, 请求报文转发给后端服务器从此口出去
RIP 真实服务器的IP

步骤2:客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;

步骤3:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

步骤总结及过程地址变化:
1: 客户端请求访问test.com [test.com ===> VIP]
源地址: CIP 目标地址: VIP
2: 请求报文到达负载均衡器
源地址: CIP 目标地址: RIP
3: RealServer收到报文处理,响应
源地址: RIP 目标地址: CIP
4: 负载调度器收到报文,根据自身之前的转发修改记录,还原报文
源地址: VIP 目标地址: CIP

2:LVS-NAT 模式搭建

实验前期准备:
1.准备4台主机。2.关闭防火墙。3.关闭selinux

3:真实环境中的拓扑图

4:集群各节点IP注解

客户端计算机的IP(CIP):可能是一个本地的、与VIP在同一网络的私有ip地址,或者是一个因特网上的公共ip地址。用作向集群发送请求的源ip地址
虚拟IP(VIP):Director用于向客户端提供服务的ip地址
Director的IP(DIP):在Director的VIP上接收访问集群服务的请求,这些请求通过DIP转发出去抵达各个集群节点
真实real server IP(RIP):在LVS术语中,向外部世界提供服务的节点叫做真实服务器,因此在真实服务器上使用的ip地址叫做真实ip地址(RIP)。

精简版,实验拓扑图:

说明:客户端只要求能够访问到VIP即可。

5:各个服务器的ip地址设置

1:客户端地址

[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.10
NETMASK=255.255.255.0
GATEWAY=192.168.19.11

2:director配置网络环境:
指向网关的时候客户端指向19段的ip地址,Realserver指向20段的ip地址。这样就可以相互通信了。
添加一个网卡(需要两张网卡), 配置成以下网络环境:
eth0 192.168.19.11 模式:vmnet8 模拟公网
eth1 192.168.20.254 模式:vmnet4 模拟内网

[root@director ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.11
NETMASK=255.255.255.0
[root@director ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO=static
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.20.254
NETMASK=255.255.255.0

3:realserver1

[root@realserver1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.20.200
NETMASK=255.255.255.0
GATEWAY=192.168.20.254

4:realserver2

[root@realserver1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.20.220
NETMASK=255.255.255.0
GATEWAY=192.168.20.254

6:配置LVS:

director配置成分发器
1:打开路由转发功能。此项必须打开。否则vmnet8和vmnet4无法进行通信。

[root@director ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@director ~]# sysctl -p

2:安装: LVS管理工具: ipvsadmin。并配置规则。

[root@director ~]# yum install -y ipvsadm
[root@director ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
[root@director ~]# ipvsadm -A -t 192.168.19.11:80 -s rr rr代表轮循

-A 添加虚拟服务器
-t 表示TCP的服务 VIP:PORT
-s 指定调度算法 rr表示round-robin 轮循

[root@director ~]# ipvsadm -a -t 192.168.19.11:80 -r 192.168.20.200:80 -m
[root@director ~]# ipvsadm -a -t 192.168.19.11:80 -r 192.168.20.220:80 -m

-a 表示添加real server的地址
-r 指定real server的IP地址
-m 表示masquerade 也就是NAT方式的LVS

3:Ipvsadm命令,用于配置及查看内核IPVS表和算法的工具,类似于iptables

[root@director ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.19.11:80 rr
  -> 192.168.20.200:80            Masq    1      0          0
  -> 192.168.20.220:80            Masq    1      0          2

7:保存配置规则

[root@director ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@director ~]# ipvsadm -S  #两个都是保存都一样
[root@director ~]# cat /etc/sysconfig/ipvsadm
-A -t director:http -s rr
-a -t director:http -r 192.168.20.200:http -m -w 1
-a -t director:http -r 192.168.20.220:http -m -w 1

二:配置两台realserver安装http并做一个测试页面。

(实验期间,各个服务器的页面不同)否则看不出来是不是做成功了。

[root@realserver1 ~]# yum install -y httpd
[root@realserver1 ~]# echo "192.168.20.200" > /var/www/html/index.html
[root@realserver1 ~]# systemctl restart httpd

[root@realserver2 ~]# yum install -y httpd
[root@realserver2 ~]# echo "192.168.20.220" > /var/www/html/index.html
[root@realserver2 ~]# systemctl restart httpd

三:客户端测试。前提网络必须能ping通

[root@client ~]# yum install elinks
[root@client ~]# elinks 192.168.20.200 --dump
   192.168.20.200
[root@client ~]# elinks 192.168.20.220 --dump
   192.168.20.220
[root@client ~]# elinks 192.168.19.11 --dump
   192.168.20.200
[root@client ~]# elinks 192.168.19.11 --dump
   192.168.20.220
[root@client ~]# elinks 192.168.19.11 --dump
   192.168.20.200
[root@client ~]# elinks 192.168.19.11 --dump
   192.168.20.220

四:ipvsadm参数说明

[root@director ~]# ipvsadm -L -n ==> 查看规则,显示内核虚拟服务器表
[root@director ~]# ipvsadm -L -n -c ==> 查看客户端连接分发器和real server 的情况

[root@director ~]# ipvsadm -L -n --stats ==> 查看分发情况
[root@director ~]# ipvsadm -L -n --rate   ==> 查看速率
[root@director ~]# ipvsadm -Z --zero  ==> 虚拟服务表计数器清零(清空当前的连接数量等)
[root@director ~]# ipvsadm -C ==> 清空规则,只是清空内存的规则
[root@director ~]# ipvsadm-restore </etc/sysconfig/ipvsadm ==>恢复规则,恢复到内存

LVS的规则配置文件:/etc/sysconfig/ipvsadm

五:ipvsadm命令选项解释:

参数解释
-A --add-service在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E --edit-service编辑内核虚拟服务器表中的一条虚拟服务器记录
-D --delete-service删除内核虚拟服务器表中的一条虚拟服务器记录
-C --clear清除内核虚拟服务器表中的所有记录
-R --restore恢复虚拟服务器规则
-S --save保存虚拟服务器规则,输出为-R选项可读的格式
-a --add-server在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-server编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list显示内核虚拟服务器表
-Z --zero虚拟服务表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp设置连接超时值
--start-daemon启动同步守护进程。他后面可以是master或backup,用来说明LVS Router 是master或是backup。在这个功能上也可以采用keepalived的VRRP功能
--stop-daemon停止同步守护进程
-h --help显示帮助信息

其他的选项:

参数解释
-t --tcp-service service-address说明虚拟服务器提供的是 tcp 的服务[vip:port] or [real-server-ip:port]
-u --udp-service service-address说明虚拟服务器提供的是 udp 的服务[vip:port] or [real-server-ip:port]
-f --fwmark-service fwmark说明是经过 iptables 标记过的服务类型
-s --scheduler scheduler使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc
-p --persistent [timeout]持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout的默认值为30秒
-M --netmasknetmask persistent granularity mask
-r --real-server server-address真实的服务器[Real-Server:port]
-g --gatewaying指定LVS的工作模式为直接路由模式(也是 LVS 默认的模式)
-i --ipip指定LVS的工作模式为隧道模式
-m --masquerading指定LVS的工作模式为NAT模式
-w --weight weight真实服务器的权值
--mcast-interface interface指定组播的同步接口
-c --connection显示LVS目前的连接 如:ipvsadm -L -c
--timeout显示tcp tcpfin udp的timeout 值 如:ipvsadm -L --timeout
--daemon显示同步守护进程状态
--stats显示统计信息
--rate显示速率信息
--sort对虚拟服务器和真实服务器排序输出
--numeric -n输出IP地址和端口的数字形式

超时时间用ipvsadm --set tcp tcpfin udp设置,比如
ipvsadm --set 120 20 100
表示tcp空闲等待时间为120 秒
客户端关闭链接等待时间为20秒
udp空闲等待为100秒

还没收到回复