首页 > 代码库 > LVS配置详解

LVS配置详解

一、LVS系统组成

       前端:负载均衡层

      由一台或多台负载调度器构成

       中间:服务器群组层

      由一组实际运行应用服务的服务器组成

       底端:数据共享存储层

      提供共享存储空间的存储区域

技术分享

二、LVS术语

       Director Server:调度服务器,将负载分发到RealServer的服务器

       Real Server:真实服务器,真正提供应用服务的服务器

       VIP:虚拟IP地址,公布给用户访问的IP地址

       RIP:真实IP地址,集群节点上使用的IP地址

       DIPDirector连到Real ServerIP地址

三、LVS负载均衡方式

       VS/NAT:通过网络地址转换实现的虚拟服务器

      Director将用户请求报文的目的地址改成选定的Real Server地址后,转发给RealServer

      大并发访问时,调度器的性能成为瓶颈

       VS/DR:直接使用路由技术实现虚拟服务器

      通过改写请求报文的MAC地址,将请求发至Real ServerReal Server直接响应客户端

       VS/TUN:通过隧道方式实现虚拟服务器

      Director采用隧道技术将请求发至RealServer后,Real Server直接响应客户端

技术分享四、负载均衡调度算法

       Director Server根据各台服务器的负载情况,通过高度算法动态选择一台Real Server

       LVS目前实现了10种调度算法

       常用调度算法有4

      轮询(Round Robin

      加权轮询(Weighted Round Robin

      最少连接(Least Connections

      加权最少连接( Weighted Least Connections

       轮询(Round Robin

      将客户端请求平均分发到Real Server

       加权轮询(Weighted Round Robin

      根据Real Server的性能设置权重,再进行轮询调度

       最少连接(Least Connections

      动态地将网络请求调度到已建立的连接数最少的服务器上

       加权最少连接( Weighted Least Connections

      根据Real Server的性能设置权重,再将网络请求调度到已建立的连接数最少的服务器上

       基于局部性的最少链接(Locality-Based Least Connections

      根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器

       带复制的基于局部性最少链接(Locality-Based Least Connections with Replication

      维护从一个目标IP地址到一台服务器的映射

      根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器

      当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

       目标地址散列(Destination Hashing

      根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

       源地址散列(Source Hashing

      根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

       最短的期望的延迟(Shortest Expected Delay Scheduling SED

      基于WLC算法

      ABC三台机器分别权重123 ,连接数也分别是123。如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个

      使用sed算法后会进行这样一个运算:A(1+1)/1B(1+2)/2C(1+3)/3

      根据运算结果,把连接交给C

       最少队列调度(Never Queue Scheduling NQ

      如果有台Real Server的连接数为0就直接分配过去,无需SED运算

五、LVS-NAT配置详解

    1、拓扑图

技术分享

    2、Director Server(调度服务器)配置

     #配置yum源    

        [root@lvs-a ~]# cat/etc/yum.repos.d/rhel-source.repo

        [yum-local]

        name=yum-local

        baseurl=file:///iso/

        enabled=1

        gpgcheck=0

        [yum-LoadBalancer]

        name=yum-LoadBalancer

        baseurl=file:///iso/LoadBalancer/    #必须保证有LoadBalancer源

        enabled=1

        gpgcheck=0

     #安装ipvsadm

       [root@lvs-a ~]# yum -y install ipvsadm

    #配置ipvsadm

        [root@lvs-a ~]# ipvsadm  -A  -t 172.16.1.10:80  -s  rr          director外网地址

        [root@lvs-a ~]# ipvsadm  -a  -t 172.16.1.10:80  -r  192.168.1.10(内网服务器ip)  -m -w  1    

        [root@lvs-a ~]# ipvsadm  -a  -t 172.16.1.10:80  -r  192.168.1.20 -m  -w  2

        [root@lvs-a ~]# ipvsadm  -Ln

        IP Virtual Server version 1.2.1 (size=4096)

        Prot LocalAddress:Port Scheduler Flags

          -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

        TCP  172.16.1.10:80 wrr

          -> 192.168.1.10:80              Masq    1      0          0

          -> 192.168.1.20:80              Masq    2      0          0

   3、Real server(真实服务器配置)

    #安装Apache

      [root@web-a ~]# yum -y install httpd

     #编写主页文件  

        [root@WEB-a ~]# cat /var/www/html/index.html

         <html>

         <head>

         <title>web-a</title>

         </head>

         <body>

         <h1>This is WEB-A 192.168.1.10</h1>

         </body>

         </html>

    #启动Apache

       [root@WEB-a ~]# service httpd start

    #web-b按照主机a来配置,只更改index.html的内容

        [root@WEB-b ~]# cat /var/www/html/index.html

         <html>

         <head>

         <title>web-b</title>

         </head>

         <body>

         <h1>This is WEB-B 192.168.1.20</h1>

         </body>

         </html>

   4、Director Server(调度服务器)防火墙配置

    #开启ip forward 功能

              [root@lvs-a ~]# sysctl -w net.ipv4.ip_forward=1  #临时开启,永久开启需修改/etc/sysctl.conf 文件

     #配置防火墙   

        [root@lvs-a ~]# iptables  -I  INPUT -p  tcp  --dport 80  -j  ACCEPT

        [root@lvs-a ~]# iptables -I  FORWARD  -d  202.1.1.0/24  -p  tcp  --dport  80  -j  ACCEPT

        [root@lvs-a ~]# iptables  -I  FORWARD -s  202.1.1.0/24  -p  tcp  --sport  80  -j  ACCEPT

    #保存配置

       [root@lvs-a ~]# servic ipvsadm save

        [root@lvs-a ~]# service iptables save

   5、客户端浏览器浏览

    #首先输入调度器ip

技术分享

    #刷新访问

技术分享

六、LVS-DR配置详解

    1、拓扑图


未完待续。。。。。。。。。。。。。。。


本文出自 “松松小乖” 博客,请务必保留此出处http://ssxiaoguai.blog.51cto.com/5376644/1605153

LVS配置详解