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的内核参数

  • 马哥架构班第五周作业_linux
  • 为了验证lvs 我们给RS1和RS2 装上httpd服务

  • 马哥架构班第五周作业_linux_02
  • 在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

  • 马哥架构班第五周作业_linux_03
  • 然后在客户端验证

  • 马哥架构班第五周作业_linux_04
  • 马哥架构班第五周作业_linux_05
  • 马哥架构班第五周作业_linux_06
  • 马哥架构班第五周作业_linux_07
  • 马哥架构班第五周作业_linux_08
  • 最后要保存规则避免重启之后丢失 顺便设置开机自启动

  • [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

  • 马哥架构班第五周作业_linux_09

    配置VIP

  • ifconfig lo:1 192.168.18.99/32

  • 马哥架构班第五周作业_linux_10
  • 在lvs的主机上配置vip

  • ifconfig lo:1 192.168.18.99/32

  • 并且实现规则

  • 马哥架构班第五周作业_linux_11
  • 在客户端验证 

  • 马哥架构班第五周作业_linux_12
  • 3、使用kvm创建centos,windows虚拟机