1、理解lvs四种工作模式
- dr:直接路由模式
- tun:隧道模式
- nat:路由转发模式
fullnat模式
性能比较:DR>TUN>NAT>FULLNAT
LVS相关术语
DS:Director Server。指的是前端负载均衡器节点
RS:Real Server。后端真实的工作服务器
VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址
DIP:Director Server IP,主要用于和内部主机通讯的IP地址
RIP:Real Server IP,后端服务器的IP地址
CIP:Client IP,访问客户端的IP地址
DR:直接路由模式
请求由 LVS 接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过 LVS。
DR 模式下需要 LVS 和绑定同一个 VIP(RS 通过将 VIP 绑定在 loopback 实现)。
一个请求过来时,LVS 只需要将网络帧的 MAC 地址修改为某一台 RS 的 MAC,该包就会被转发到相应的 RS 处理,注意此时的源 IP 和目标 IP 都没变,LVS 只是做了一下移花接木。
RS 收到 LVS 转发来的包,链路层发现 MAC 是自己的,到上面的网络层,发现 IP 也是自己的,于是这个包被合法地接受,RS 感知不到前面有 LVS 的存在。
而当 RS 返回响应时,只要直接向源 IP(即用户的 IP)返回即可,不再经过 LVS。
DR 模式是性能最好的一种模式。
TUN模式:隧道模式
- 客户端将访问vip报文发送给LVS服务器;
- LVS服务器将请求报文重新封装,发送给后端真实服务器;
- 后端真实服务器将请求报文解封,在确认自身有vip之后进行请求处理;
- 后端真实服务器在处理完数据请求后,直接响应客户端。
注意:
- TUNNEL必须在所有的realserver上绑定VIP
- realserver直接把包发给client
- 隧道模式运维起来会比较难,所以一般不用
- RIP,DIP,VIP全得是公网地址
NAT 模式:路由转发模式
NAT(Network Address Translation)是一种外网和内网地址映射的技术。
多目标的DNAT(iptables)转换;它通过修改请求报文的目标IP地址(同时可能会修改目标端口)挑选出某Real Server的RIP地址实现转发; 在LVS负载均衡调度器上请求先发送给PREROUTING-->INPUT,然后经由监听在INPUT上的LVS程序强制将请求转发给 POSTROUTING
NAT 模式下,网络报的进出都要经过 LVS 的处理。LVS 需要作为 RS 的网关。
当包到达 LVS 时,LVS 做目标地址转换(DNAT),将目标 IP 改为 RS 的 IP。RS 接收到包以后,仿佛是客户端直接发给它的一样。
RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。
这时 RS 的包通过网关(LVS)中转,LVS 会做源地址转换(SNAT),将包的源地址改为 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。客户端无法感知到后端 RS 的存在。
注意:
RS的RIP和Director的DIP必须在同一IP网络
RS和DIP应该使用私网地址,且RD的网关要指向DIP
真实服务器的网关必须设置为LVS的ip地址。
FULLNAT模式:
无论是 DR 还是 NAT 模式,不可避免的都有一个问题:LVS 和 RS 必须在同一个 VLAN 下,否则 LVS 无法作为 RS 的网关。
Full-NAT 相比 NAT 的主要改进是,在 SNAT/DNAT 的基础上,加上另一种转换,转换过程如下:
在包从 LVS 转到 RS 的过程中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。
内网 IP 之间可以通过多个交换机跨 VLAN 通信。
当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。
LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改为客户端的 IP。
Full-NAT 主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨 VLAN 的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将不再有任何限制,大大提高了运维部署的便利性。
fullnat模式和nat模式相似,但是与nat不同的是nat模式只做了两次地址转换,fullnat模式却做了四次
2、LVS nat和dr模型实现
nat模型实现
一台客户端的机器 192,168.10.6/24 GW 无 仅主机
一台lvs
eth1 仅主机 192.168.10.100/16
eth0 NAT 192.168.18.53/24
两台RS
RS1: 192.168.18.54 GW 192.168.18.53 NAT
RS2:192.168.18.55W 192.168.18.53 NAT
网络都调配成功以后 修改lvs-server的内核参数
为了验证lvs 我们给RS1和RS2 装上httpd服务
在lvs-server上安装lvs
yum install ipvsadm
开始进行配置
ipvsadm -A -t 192.168.10.100:80 -s wrr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.18.54:8080 -m
ipvsadm -a -t 192.168.10.100:80 -r 192.168.18.55:8080 -m
ipvsadm -Ln
然后在客户端验证
最后要保存规则避免重启之后丢失 顺便设置开机自启动
[root@lvs-server ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs-server ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.10.100:80 -s wrr
-a -t 192.168.10.100:80 -r 192.168.18.54:8080 -m -w 1
-a -t 192.168.10.100:80 -r 192.168.18.55:8080 -m -w 1
[root@lvs-server ~]# systemctl enable --now ipvsadm.service
DR模型实现:
客户端 网卡仅主机 192.168.10.6/24 GW: 192.168.10.100
一台router
一个网卡:NAT 192.168.18.200/24
一个网卡 仅主机 192.168.10.100/24
启用IP_FORWARD
一台 LVS
网卡模式NAT DIP:192.168.18.51/24 GW 192.168.18.200 并且需要在网卡lo配置VIP 192.168.18.99/32
两台RS
RS1 网卡模式NAT 192.168.18.54/24 GW 192.168.18.200 并且需要在网卡lo配置VIP 192.168.18.99/32
RS2 网卡模式NAT 192.168.18.55/24 GW 192.168.18.200 并且需要在网卡lo配置VIP 192.168.18.99/32
跟刚才NAT模式一样 网络配置好以后 RS1 RS2 安装httpd服务 lvs 安装ipvsadm包
修改RS1 和RS2 服务器的内核参数
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
配置VIP
ifconfig lo:1 192.168.18.99/32
在lvs的主机上配置vip
ifconfig lo:1 192.168.18.99/32
并且实现规则
在客户端验证
3、使用kvm创建centos,windows虚拟机