bjghzly 发表于 2019-1-4 13:58:02

LVS负载均衡概念及DR模型的配置

  一、负载均衡的分层结构

  第一层:负载调度器,这是访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP地址。通常会配置主、备两台调度器实现热备份。
  第二层:服务器池,集群所提供的应用服务由服务器池承担,其中的每个节点具有独立的RIP地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载均衡器的容错机制会将其隔离,等待错误排除后再重新纳入服务器池。
  第三层:共享存储,为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性。
http://s1.运维网.com/images/20180228/1519783960141022.png
  二、负载均衡的工作模式
  1、NAT模式(网络地址转换):这是一种外网和内网地址映射的技术,在这种工作模式下,数据的进出都要经过LVS负载均衡器。LVS需要作为真实服务器(Real Server)的网关。当数据包到达LVS时,LVS要做目标地址转换(DNAT),将目标IP改为真实服务器(Real Server)的IP。真实服务器接到数据包后进行处理,在响应时,源IP地址是真实服务器自身IP,而目标地址则直接定义为客户端的IP。然后真实服务器把响应数据包发送给LVS进行中转,LVS会做源地址转换(SNAT),把数据包的源IP地址改为VIP。在客户端看来,这个数据包就是LVS直接发送给它的,客户端感知不到真实服务器(Real Server)的存在。

http://s1.运维网.com/images/20180228/1519784748831799.png
  

  2、Tunnel模式(IP隧道模式):隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。
  
  3、DR模式(直接路由模式):这种模式下客户端发来的请求也是由LVS接收,但是真实服务器在返回响应数据包时直接返回给客户端,不经过LVS。当用户发送请求时,源IP是client_IP,目标地址是LVS_VIP,当LVS将数据包转发给真实服务器处理后,返回时的源IP是Real_IP,目标IP是client_IP,因为客户端没有请求Real_IP,这样直接返回的数据包是不被客户端接收的,所以还是需要使用VIP来响应请求。DR模式下,LVS服务器需要配置一个VIP和DIP,真实服务器需要配置RIP和VIP(和调度服务器的VIP一致),但是真实服务器的VIP是隐藏的(因为会造成地址冲突),不会应答广播,只在响应客户端的时候作为源地址使用。当请求到达LVS服务器时,LVS会将目标的MAC地址改为某台真实服务器的MAC地址,该请求数据包就会被转发到相应的真实服务器来处理,此时的源IP和目标IP都没变。当真实服务器发送响应数据包时,只需要直接返回到客户端即可(因为此时源地址是VIP,目标地址是client_IP),不需要再经过LVS服务器。
http://s1.运维网.com/images/20180228/1519786613522729.png
  

  三、LVS的负载调度算法(举四个比较常用的算法)
  1、轮询:将收到的请求访问按照顺序轮流分配给集群中的各节点,均等地对待每一台服务器,而不管服务器实际的连接数和负载。

  2、加权轮询:根据实际服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。
  3、最少连接:根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能差不多,采用这种方式可以更好地负载均衡。
  4、加权最少连接:在服务器节点性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
  注意:在配置LVS负载均衡时,rr表示轮询算法、wrr表示加权轮询、lc表示最少连接、wlc表示加权最少连接。
  四、DR模式的配置
  实验环境:CentOS6.8虚拟机三台,其中一台调度器和两台web服务器
  调度器IP:192.168.200.101(eth0)/VIP:192.168.200.102(eth0:0)
  web1IP:192.168.200.103(eth0)/VIP:192.168.200.102(lo:0)
  web2IP:192.168.200.104(eth0)/VIP:192.168.200.102(lo:0)
  

  步骤一:LVS调度器安装ipvsadm管理工具
  # yum -y install ipvsadm
  步骤二:配置调度器IP
  # cd /etc/sysconfig/network-scripts/
  # cp ifcfg-eth0 ifcfg-eth0:0
  # vim ifcfg-eth0
  DEVICE=eth0
  TYPE=Ethernet
  ONBOOT=yes
  NM_CONTROLLED=no
  BOOTPROTO=static
  IPADDR=192.168.200.101
  NETMASK=255.255.255.0
  GATEWAY=192.168.200.1
  DNS1=202.106.0.20
  
  # vim ifcfg-eth0:0
  DEVICE=eth0:0
  TYPE=Ethernet
  ONBOOT=yes
  NM_CONTROLLED=no
  BOOTPROTO=static
  IPADDR=192.168.200.102
  NETMASK=255.255.255.0
  GATEWAY=192.168.200.1
  DNS1=202.106.0.20
  # ifup eth0:0
  步骤三:配置sysctl.conf参数
  # vim /etc/sysctl.conf
  net.ipv4.conf.all.send_redirects = 0
  net.ipv4.conf.default.send_redirects = 0
  net.ipv4.conf.eth0.send_redirects = 0
  # sysctl -p
  步骤四:配置负载策略
  # service ipvsadm stop                      //清除原有的策略
  # ipvsadm -A -t 192.168.200.102:80 -s rr          //创建虚拟服务器,针对VIP为192.168.200.102,端口为80的集群提供分流服务
  # ipvsadm -a -t 192.168.200.102:80 -r 192.168.200.103:80 -g -w 1      //添加web服务器,-a表示添加真实服务器,-t指定VIP及端口,-r指定web服务器IP及端口,-w表示权重
  # ipvsadm -a -t 192.168.200.102:80 -r 192.168.200.104:80 -g -w 1      //-g表示DR模式,-m表示NAT模式,-i表示TUN模式
  # service ipvsadm save   //保存策略
  步骤五:配置web服务器IP地址(两个节点步骤一样,只是eth0端口的IP不同,VIP都一样)
  # vim ifcfg-eth0
  DEVICE=eth0
  TYPE=Ethernet
  ONBOOT=yes
  NM_CONTROLLED=no
  BOOTPROTO=static
  IPADDR=192.168.200.103
  NETMASK=255.255.255.0
  GATEWAY=192.168.200.1
  DNS1=202.106.0.20
  # cp ifcfg-lo ifcfg-lo:0
  # cat ifcfg-lo:0
  DEVICE=lo:0
  IPADDR=192.168.200.102
  NETMASK=255.255.255.255
  ONBOOT=yes
  # ifup l0:0
  # route add -host 192.168.200.102 dev lo:0   //也可以把此语句添加到rc.local文件
  步骤六:调整sysctl.conf参数
  # vim /etc/sysctl.conf
  net.ipv4.conf.all.arp_ignore = 1
  net.ipv4.conf.all.arp_announce = 2
  net.ipv4.conf.default.arp_ignore = 1
  net.ipv4.conf.default.arp_announce = 2
  net.ipv4.conf.lo.arp_ignore = 1
  net.ipv4.conf.lo.arp_announce = 2
  # sysctl -p
  步骤七:测试
  # ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP192.168.200.102:80 rr
  -> 192.168.200.103:80         Route   1      0          0
  -> 192.168.200.104:80         Route   1      0          0
  也可以在两台web服务器上部署httpd服务,编写两个不同的页面,然后在浏览器上对VIP进行访问,刷新浏览器会发现轮询的效果。



页: [1]
查看完整版本: LVS负载均衡概念及DR模型的配置