wendu 发表于 2019-1-5 10:03:30

centos 7.3 LVS的NAT模式负载均衡实操

  一、LB集群原理
  1、实现手段
     硬件:F5负载均衡器
     软件:LVS(4层,网络层),Nginx(7层,应用层)
  2、负载均衡架构图
https://s3.运维网.com/wyfs02/M00/9E/75/wKiom1mRW4GBgtZTAAGBuYdoTxk719.png-wh_500x0-wm_3-wmp_4-s_1314383054.png
  说明:
  LVS集群使用三层架构
  第一层:负载均衡层(Load Balancer)
  位于整个集群系统的最前端,由一台或多台负载调度器(Director Server,以下简称dir)组成。
  dir的作用类似一个路由器,它含有为完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给服务器群组层的应用服务器(Real Server)
  ps:客户认为服务是来自一个虚拟IP地址上
  
  第二层:服务器群组层(Server Arrary)
  由一组实际运行应用服务的机器组成。Real Server(以下简称rs)可以是Web服务器、Mail服务器、FTP服务器、DNS服务器等
  
  第三层:共享存储层(Shared Storage)
  是为所有rs提供共享存储空间和内容一致性的存储区域,一般由磁盘阵列设备组成。
  一般可以通过NFS网络文件系统共享数据(在繁忙的业务系统中,性能并不太好),此时可以用集群文件系统,如 Red Hat 的 GFS 文件系统,Oracle 提供的 OCFS2 文件系统等
  
  3、LVS分3种模式
  (a)NAT(网络地址映射):通过网络地址转换的方法来实现调度
     优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址
     缺点:用户请求和响应报文都必须经过dr地址重写,当用户请求越来越多时,调度器的处理能力将成为瓶颈。
  
  (b)DR(直接路由模式):通过改写请求报文的MAC地址,将请求发送到 rs,而 rs 将响应直接返回给客户 ——》 性能最好
  
  (c)TUN(IP隧道模式):dr采用IP隧道技术将用户请求转发到某个rs,而这个rs将直接响应用户请求,不再经过dr ——》dr只处理用户的报文请求,从而使集群系统吞吐量大大提高
  ps:还有第 4 种模式 FULLNAT(淘宝ospf+lvs)
  

  二、主机环境
  服务器主机:
  系统版本:centos7.3
  master:192.168.0.134
  slave:192.168.0.140
  分发器
  内网IP:192.168.0.139
  外网ip:192.168.56.128
  1、分发器 director 配置
    —— 网络配置前期工作
  (a)配置网络环境,增加网卡ens37(需要添加HWADDR不同的网卡,两个网卡模式分别要属于不同的链接模式分别为桥接和NAT)
https://s1.运维网.com/wyfs02/M00/9E/75/wKiom1mRW9DhGquqAACTrtywhwE068.png-wh_500x0-wm_3-wmp_4-s_3921211291.png
  (b)生成ens37配置文件,配置VIP 地址为 192.168.56.128
    cp /etc/sysconfig/network-scripts/ifcfg-ens33/etc/sysconfig/network-scripts/ifcfg-ens37
    (i)DEVICE=ens37
      (ii)IPADDR=192.168.56.128(vip)
     (iii)GATEWAY=192.168.0.1
  (c)重启网络服务:service network restart
    内网ip:192.168.0.139
    外网ip:192.168.56.128
  物理机可以ping通VIP
http://blog.运维网.com/e/u261/themes/default/images/spacer.gifhttps://s3.运维网.com/wyfs02/M02/9E/75/wKiom1mRW6iBSNVBAADVXyACAJM713.png-wh_500x0-wm_3-wmp_4-s_2092946411.png
  —— 开启路由转发功能,安装配置LVS-NAT
  1、安装lvs核心软件包 yum install -y ipvsadm
  2、写脚本管理(开启路由转发、添加虚拟服务、添加虚拟服务后端的real server)
  vim /usr/local/sbin/lvs_nat.sh
  #!/bin/bash
  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
  echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
  echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
  echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
  iptables -t nat -F
  iptables -t nat -X
  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
  IPVSADM='/sbin/ipvsadm'
  $IPVSADM -C
  $IPVSADM -A -t 192.168.56.128:80 -s rr
  $IPVSADM -a -t 192.168.56.128:80 -r 192.168.0.134:80 -m -w 1
  $IPVSADM -a -t 192.168.56.128:80 -r 192.168.0.140:80 -m -w 1
  参数说明:
  -A:增加一个虚拟服务   
  -a:增加real server
  -r:指定real server 的 IP地址
  -t:表示TCP服务      
  -s:指定调度算法   rr:轮询算法(对调度算法感兴趣的大家可以查查~)
  -m(masquerade):也就是NAT方式的LVS
  3、执行脚本 sh !$
  4、查看规则 ipvsadm -ln
  #ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP192.168.56.128:80 rr
  -> 192.168.0.134:80             Masq    1      0          0         
  -> 192.168.0.140:80             Masq    1      0          0   
  二、真实服务器real server配置
  master: 192.168.0.134
  slave: 192.168.0.140
  master和slave都要修改网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
  然后重启网络:systemctl restart network
  1、网关GATEWAY都要指向分发器 dir 的内网 IP(192.168.56.128)
http://blog.运维网.com/e/u261/themes/default/images/spacer.gifhttps://s2.运维网.com/wyfs02/M02/9E/64/wKioL1mRXCHw8Qe8AABLY1Uu6ko183.png-wh_500x0-wm_3-wmp_4-s_3797920340.png
  三、测试
  1、修改nginx的默认页面(好区分)
  master:echo "this is master server" > /usr/share/nginx/html/index.html
  slave:echo "this is slave server"> /usr/share/nginx/html/index.html
  # curl 192.168.56.128
  this is master server
  # curl 192.168.56.128
  this is slave server
  # curl 192.168.56.128
  this is master server
  # curl 192.168.56.128
  this is slave server
  # curl 192.168.56.128
  this is master server
  # curl 192.168.56.128
  this is slave server
  2、real server(master,slave)开启 nginx 服务:/etc/init.d/nginx start
  (httpd也可以:yum install httpd)
  其实就是开启80端口的web服务(记得查下 netstat查看是否监听80端口)
  注意:分发器 dir 并没有监听 80 端口
       因为 dir 是一个路由器,只负责转发 80 端口上的数据给后端,自己并不处理请求
  拓展:
  ipvsadm -ln --stats==>查看分发情况
  ipvsadm -ln --rate==>   查看速率
  ipvsadm -C==> 清空规则
  
  ps:如果curl无法成功,检查下防火墙是否关了(iptables -F;setenforce 0)
  




页: [1]
查看完整版本: centos 7.3 LVS的NAT模式负载均衡实操