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

[经验分享] LVS负载均衡概念及DR模型的配置

[复制链接]

尚未签到

发表于 2019-1-4 13:58:02 | 显示全部楼层 |阅读模式
  一、负载均衡的分层结构

    第一层:负载调度器,这是访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP地址。通常会配置主、备两台调度器实现热备份。
    第二层:服务器池,集群所提供的应用服务由服务器池承担,其中的每个节点具有独立的RIP地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载均衡器的容错机制会将其隔离,等待错误排除后再重新纳入服务器池。
    第三层:共享存储,为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性。

  二、负载均衡的工作模式
    1、NAT模式(网络地址转换):这是一种外网和内网地址映射的技术,在这种工作模式下,数据的进出都要经过LVS负载均衡器。LVS需要作为真实服务器(Real Server)的网关。当数据包到达LVS时,LVS要做目标地址转换(DNAT),将目标IP改为真实服务器(Real Server)的IP。真实服务器接到数据包后进行处理,在响应时,源IP地址是真实服务器自身IP,而目标地址则直接定义为客户端的IP。然后真实服务器把响应数据包发送给LVS进行中转,LVS会做源地址转换(SNAT),把数据包的源IP地址改为VIP。在客户端看来,这个数据包就是LVS直接发送给它的,客户端感知不到真实服务器(Real Server)的存在。


  

    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服务器。

  

  三、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管理工具
  [root@localhost ~]# yum -y install ipvsadm
  步骤二:配置调度器IP
  [root@localhost ~]# cd /etc/sysconfig/network-scripts/
  [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
  [root@localhost network-scripts]# 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
  
  [root@localhost network-scripts]# 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
  [root@localhost network-scripts]# ifup eth0:0
  步骤三:配置sysctl.conf参数
  [root@localhost ~]# 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
  [root@localhost ~]# sysctl -p
  步骤四:配置负载策略
  [root@localhost ~]# service ipvsadm stop                      //清除原有的策略
  [root@localhost ~]# ipvsadm -A -t 192.168.200.102:80 -s rr          //创建虚拟服务器,针对VIP为192.168.200.102,端口为80的集群提供分流服务
  [root@localhost ~]# 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表示权重
  [root@localhost ~]# ipvsadm -a -t 192.168.200.102:80 -r 192.168.200.104:80 -g -w 1      //-g表示DR模式,-m表示NAT模式,-i表示TUN模式
  [root@localhost ~]# service ipvsadm save   //保存策略
  步骤五:配置web服务器IP地址(两个节点步骤一样,只是eth0端口的IP不同,VIP都一样)
  [root@localhost network-scripts]# 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
  [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
  [root@localhost network-scripts]# cat ifcfg-lo:0
  DEVICE=lo:0
  IPADDR=192.168.200.102
  NETMASK=255.255.255.255
  ONBOOT=yes
  [root@localhost network-scripts]# ifup l0:0
  [root@localhost ~]# route add -host 192.168.200.102 dev lo:0   //也可以把此语句添加到rc.local文件
  步骤六:调整sysctl.conf参数
  [root@localhost ~]# 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
  [root@localhost ~]# sysctl -p
  步骤七:测试
  [root@localhost ~]# ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  192.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、欢迎大家加入本站运维交流群:群②: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.iyunv.com/thread-659365-1-1.html 上篇帖子: 负载均衡集群介绍,LVS介绍,LVS的调度算法,LVSNAT模式搭建 下篇帖子: Centos7.3部署LVS负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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