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

[经验分享] linux下负载均衡(LVS安装与配置)【转】

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-9-5 11:13:30 | 显示全部楼层 |阅读模式
  一、LVS的三种包转发方式
      LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)
     不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始:
1、NAT(网络地址映射):
     NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包
     有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。
2、IP Tunneling(IP隧道):
     director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接
    IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点
    real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信
    并且所有服务器必须支持IP隧道协议。
3、Direct Routing(直接路由):
     与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比
    没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
二、LVS的八种调度算法:
     * rr   轮叫(Round Robin)
      调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
    * wrr   加权轮叫(Weighted Round Robin)
      调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
    * lc   最少链接(Least Connections)
      调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
    * wlc   加权最少链接(Weighted Least Connections)
      在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
    * lblc   基于局部性的最少链接(Locality-Based Least Connections)
      "基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
    * lblcr   带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
      " 带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
    * dh   目标地址散列(Destination Hashing)
      "目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
    * sh   源地址散列(Source Hashing)
      "源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  注:如果想了解关于以上几点的技术细节,LVS的主页查询。LVS的主页是:
  http://www.LinuxVirtualServer.org/
  http://www.linux-vs.org/
  三、安装ipvsadm服务
     1、 官网去下载安装包:http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz   
        ipvsadm 安装:
          # tar zxvf ipvsadm-1.24.tar.gz -C /usr/src/
          # cd /usr/src/ipvsadm-1.24
          # make all
          # make install
          # ipvsadm --version
      2、yum安装(简单且方便)
           #yum -y install ipvsadm
四、配置ipvsadm服务
      备注:以下步骤分别按照LVS的三种包转发方式进行配置
     实验环境如下:
     lvsserver            192.168.1.49(eht0)     vip: 192.168.1.40 8.8.8.8(nat模式下)
     serverA             192.168.1.46(eth0)
     serverB             192.168.1.47(eth0)
      
1、vs/nat模式下各服务器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
ifconfig eht1 8.8.8.8 netmask 255.255.255.0
(注:由于nat模式需要两块真实网卡,所以又额外加了一块网卡  ,此网卡的IP地址同时也是VIP的地址)
vi ipvsadm.sh (创建脚本文件)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo 1 > /porc/sys/net/ipv4/ip_forward   (开启路由功能)
ipvsadm -C      (清除之前的转换表)
ipvsadm -At 8.8.8.8:80 -s rr   (指定带有调度算法转换的服务器)
ipvsadm -at 8.8.8.8:80 -r 192.168.1.46:80 -m  (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 8.8.8.8:80 -r 192.168.1.47:80 -m
#chmod u+x ipvsadm.sh  (增加可执行权限)
------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此网关是lvsserver的eth0的IP地址)
service httpd start    (开启测试用的web服务)
echo '192.168.1.46' > /var/www/html/index.html     (制作测试用的html网页)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverB配置如下:
ifconfig eth0 192.168.1.47 netmask 255.255.255.0
route add default gw 192.168.1.49
(注:此网关是lvsserver的eth0的IP地址)
service httpd start    (开启测试用的web服务器
echo '192.168.1.47' > /var/www/html/index.html     (制作测试用的html网页)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------
2、vs/tun模式下各服务器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
(注:tun 模式下只需要一块物理网卡,可将eth1网卡禁用)
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up
(注:tunlo接口配置的地址为vip地址)     
route add -host 192.168.1.40 dev tunlo   
vi ipvsadm.sh (创建脚本文件)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------         
#!/bin/bash
ipvsadm -C      (清除之前的转换表)
ipvsadm -At 192.168.1.40:80 -s rr   (指定带有调度算法转换的服务器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -i  (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -i
#chmod u+x ipvsadm.sh  (增加可执行权限)   
#./ipvsadm.sh
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------                  
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig tunl0 192.168.1.40 netmask 255.255.255.255 up  
route add -host 192.168.1.40 dev tunlo     
vi arp.sh (创建脚本文件)   
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
serverB配置同severA一样
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
3、vs/dr模式下各服务器的配置
lvsserver配置如下:
ifconfig eht0 192.168.1.49 netmsk 255.255.255.0
(注:dr 模式下只需要一块物理网卡,可将eth1网卡禁用)
ifconfig eth0:0 192.168.1.40 netmask 255.255.255.255 up
(注:eth0:0接口配置的地址为vip地址)     
route add -host 192.168.1.40 dev eth0:0
vi ipvsadm.sh (创建脚本文件)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo 1 > /porc/sys/net/ipv4/ip_forward   (开启路由功能)
ipvsadm -C      (清除之前的转换表)
ipvsadm -At 192.168.1.40:80 -s rr   (指定带有调度算法转换的服务器)
ipvsadm -at 192.168.1.40:80 -r 192.168.1.46:80 -g (增加一台真实服务器,-m是nat模式,-g是直接路由(dr )模式,-i是tun模式)
ipvaadm -at 192.168.1.40:80 -r 192.168.1.47:80 -g
#chmod u+x ipvsadm.sh  (增加可执行权限)
./ipvsadm.sh
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------  
serverA配置如下:
ifconfig eth0 192.168.1.46 netmask 255.255.255.0
ifconfig lo:0 192.168.1.40 netmask 255.255.255.255 up  (在lo接口上增加vip地址)
route add -host 192.168.1.40 dev lo:0 (增加到环回接口的路由)
vi arp.sh (创建脚本文件)   
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce     
#chmod u+x arp.sh  (增加可执行权限)
#./arp.sh
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------   
serverB配置和serverA一样
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  测试:1、显示LVS 目前的连接
             如:ipvsadm -L -c    ipvsadm -L --stats   
          2、将46和47的WEB服务启用。直接输入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.yunweiku.com/thread-109681-1-1.html 上篇帖子: 负载均衡集群之LVS算法和模型 下篇帖子: LVS配置与安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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