设为首页 收藏本站
查看: 1133|回复: 0

[经验分享] 图解lvs的nat设置

[复制链接]

尚未签到

发表于 2019-1-4 10:36:50 | 显示全部楼层 |阅读模式
  简介:
  

  一.LB集群的介绍
  二.LB集群之lvs的三种模式
  三. LVS的NAT模式实例,测试nginx
  

  

  一.LB集群的介绍
  

  集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群系统的主要优点:高可扩展性、高可用性、高性能、高性价比。
  

  计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
  集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务
  

  
  

  

  用户-->LVS负载均衡服务器--->apahce服务器--->mysql服务器&memcache服务器&共享存储服务器。并且我们的mysql、共享存储也能够使用LVS再进行负载均衡。
  

  

  

  LB=load balance
  

  常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
  常用商业集群硬件有:F5,Netscaler,Radware,A10等
  

  

  二.LB集群之lvs的三种模式
  

  lvs(Linux Virtual Serverlinux虚拟服务器):提供更高的吞吐率、提供冗余、更灵活的实用性
  

  lvs 有三种模式
     NAT   TUN  DR
  

    1.NAT 模式
  

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

  缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
  

  

  2.TUN(IP隧道)模式
  

原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

  缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。
  

  3.DR模式(直接路由)
  

原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上

优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

  缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
  

  

  官方三种负载均衡技术比较总结表:
  工作模式
  VS/NAT
  VS/TUN
  VS/DR
  Real server(节点服务器)
  Config dr gw
  Tunneling
  Non-arp device/tie vip
  Server Network
  Private
  LAN/WAN
  LAN
  Server number(节点数量)
  Low 10-20
  High 100
  High 100
  Real server gateway
  Load balance
  Own router
  Own router
  优点
  地址和端口转换
  Wan环境加密数据
  性能最高
  缺点
  效率低
  需要隧道支持
  不能跨域LAN
  

  

  Lvs的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来自客户端访问VIP的上的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。Director调度器用的调度方法基本分为两类:
  固定调度算法:rr,wrr,dh,sh
  动态调度算法:wlc,lc,lblc,lblcr
  

  算法
  说明
  rr
  轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差不多的情况
  wrr
  加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
  Wlc
  加权最小连接数调度,假设各台RS的全职依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS
  Dh
  目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的RS
  SH
  源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS
  Lc
  最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.
  Lblc
  基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。
  

  

  LVS调度算法的生产环境选型:
  1、一般的网络服务,如http,mail,mysql等常用的LVS调度算法为:
  a.基本轮询调度rr
  b.加权最小连接调度wlc
  c.加权轮询调度wrc
  2、基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache
  3、源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一。
  实际适用中这些算法的适用范围很多,工作中最好参考内核中的连接调度算法的实现原理,然后根据具体的业务需求合理的选型。
  

  

  

  LVS-- ipvsadm命令详解
  

  

  1,virtual-service-address:是指虚拟服务器的ip地址
  

  2,real-service-address:是指真实服务器的ip地址
  

  3,scheduler:调度方法
  

  

  

  ipvsadm的用法和格式如下:
  

  ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
ipvsadm --stop-daemon
ipvsadm -h

命令选项解释:
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可以。

-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的默认值为300秒。
-M --netmask netmask 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 指定组%B
  

  

  

  

  三. LVS的NAT模式实例
  

  centos 6.5 64位
  

  1.环境:需要三台电脑
  

  客户端
  

  ha:需要二个网卡一个内网一个外网
  

  内网 eth0:192.168.170.129  Nat模式
  外网 eth0:192.168.0.10        桥接模式
  

  

  

  服务端
  

  host1:内网网卡
  

  eth0:192.168.170.130  255.255.255.0 192.168.170.129 Nat模式
  

  

  

  host2:内网网卡
  

  eth0:192.168.170.128 255.255.255.0 192.168.170.129 Nat模式
  

  

  

  

  

  服务端操作
  

  1.服务端安装ipvsadm
  

   yum install -y ipvsadm
  


  

  2.编写一个路由转发的脚本
  

  vim /usr/local/sbin/lvs_nat.sh
  

  写入内容
  #! /bin/bash
  #ha服务器上开启路由转发功能
  echo 1 > /proc/sys/net/ipv4/ip_forward
  #关闭icmp的重定向
  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/eth0/send_redirects
  echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
  

  #ha设置nat防火墙
  iptables -t nat -F
  iptables -t nat -X
  iptables -t nat -A POSTROUTING -s 192.168.170.0/24 -j MASQUERADE  #从内网网段过来的,nat转发规则
  

  #ha设置ipvsadm
  IPVSADM='/sbin/ipvsadm'
  $IPVSADM -C
  $IPVSADM -A -t 192.168.0.10:80 -s rr
  # rr算法 -p表示超链接 ip用外网 -m表示 nat -a增加一个主机
  # -A 增加一个directory  -r增加real主机的内网
  $IPVSADM -a-t 192.168.0.10:80  -r 192.168.170.128:80 -m
  $IPVSADM -a -t 192.168.0.10:80 -r 192.168.170.130:80 -m
  


  

  

  

  3.配置完后执行脚本
  

  sh /usr/local/sbin/lvs_nat.sh
  

  4.查看端口
  

  ipvsadm -ln
  


  

  

  

  

  客户端的操作
  

  1.2台host主机网关改成ha的内网ip
  

  

  


  

  

  

  2.2台rs 上都安装nginx,然后启动
  

  

  

  yum install -y pcre*  openssl* gcc gcc-c++  zlib zlib-devel
  

  下载源码包
  

  wget http://nginx.org/download/nginx-1.6.3.tar.gz
  

  解压压缩包
  

  tar zxvf nginx-1.6.3.tar.gz
  

  进入nginx目录下
  

  cd nginx-1.6.3
  

  编译安装
  

  ./configure --prefix=/usr/local/nginx
  

  make
  

  make install
  

  启动nginx
  

  /usr/local/nginx/sbin/nginx
  

  



  

  

  

  3.2台host服务器用curl 来查看
  

  ha 查看方法
  

  curl 192.168.0.10 查看
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659243-1-1.html 上篇帖子: LVS+NAT负载 下篇帖子: 使用piranha配置lvs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表