• SLB(Server Load Balancing 服务器负载均衡)


    简介
        SLB(Server Load Balancing 服务器负载均衡)用于实现多个服务器之间的负载均衡。SLB虚拟出一个服务器,对用户呈现的就是这个虚拟的服务器。虚拟服务器代表的是多个真实服务器的群集,当客户端向虚拟服务器发起连接时,SLB通过某种均衡算法,转发到某真实服务器。
    负载均衡的2种算法:
    WRR(weighted round robin 加权循环调度算法):使用加权轮询算法分配连接;
    WLC(weighted least connections 加权最小连接调度算法):通过一定的权值,将下一个连接分配给活动连接数少的服务器。

    SLB的2种模式:
    Dispatch(分派模式):运行SLB的路由器收到用户计算机发来的数据包后(其目的IP是虚拟服务器的IP地址),路由器会把数据包按照负载均衡算法分派不同的真实服务器上,不会改变数据包中的目的IP地址。真实服务器收到数据包中的目的IP地址是虚拟服务器的IP地址,此时服务器必须选择下面的一种做法,否则丢弃数据包:
      ①在真实服务器上添加环回口地址,并把地址设置为虚拟服务器的IP地址;
      ②添加第二个IP地址为虚拟服务器的IP地址。

    Direct(定向模式):运行SLB的路由器,收到用户计算机发来的数据包后(其目的IP是虚拟服务器的IP地址),路由器会把数据包也按照负载均衡算法分派不同的真实服务器上,但是会把数据包中的目的IP地址改为真实服务器的IP地址。真实服务器收到的收据包中的目的IP地址是自己的IP地址,不会丢弃数据包。也就是说在这种模式下真是服务器并不需要知道虚拟服务器的存在。


    实验
    R3和R4作为Telnet Server使用,R1作为测试用的计算机,在R2上配置SLB。由于Cisco2821路由器不支持SLB,所以本实验使用的路由器为Cisco3640,IOS为“c-3640-jk9o3s-mz.124-12.bin”。

    配置IP地址及路由:
    R1(config)#int f0/0
    R1(config-if)#ip add 192.168.1.1 255.255.255.0
    R1(config-if)#no sh
    R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.2

    R2(config)#int f0/0
    R2(config-if)#ip add 192.168.1.2 255.255.255.0
    R2(config)#int f1/0
    R2(config-if)#ip add 1.1.1.2 255.255.255.0
    R2(config-if)#no sh

    R3(config)#int f0/0
    R3(config-if)#ip add 1.1.1.3 255.0.0.0
    R3(config-if)#no sh
    R3(config)#int lo0
    R3(config-if)#ip add 3.3.3.3 255.0.0.0
    R3(config)#line vty 0 4
    R3(config-line)#password cisco
    R3(config-line)#login
    R3(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2

    R4(config)#int f0/0
    R4(config-if)#ip add 1.1.1.4 255.0.0.0
    R4(config-if)#no sh
    R4(config)#int lo0
    R4(config-if)#ip add 4.4.4.4 255.0.0.0
    R4(config)#line vty 0 4
    R4(config-line)#password cisco
    R4(config-line)#login
    R4(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2

    配置分派模式的SLB:
    R2(config)#ip slb serverfarm TELNET_SERVER        //创建服务器组
    R2(config-slb-sfarm)#real 1.1.1.3        //其中的一个服务器是1.1.1.3
    R2(config-slb-real)#weight 1        //配置权重,SLB根据各服务器的权重计算承担的负载大小
    R2(config-slb-real)#inservice        //启用服务器
    R2(config-slb-real)#faildetect        //配置检测服务器的可用状态,如果服务器发生故障,SLB将不会把
                                               流量转发到该服务器
    R2(config-slb-sfarm)#real 1.1.1.4        //另一个服务器是1.1.1.4
    R2(config-slb-real)#weight 1
    R2(config-slb-real)#inservice
    R2(config-slb-real)#faildetect
    R2(config-slb-real)#exit
    R2(config-slb-sfarm)#predictor roundrobin        //配置采用负载平衡的方式为轮询,即为默认方式
    R2(config)#ip slb vserver V_TELNET_SERVER        //创建虚拟的服务器
    R2(config-slb-vserver)#virtual 1.1.1.100 tcp telnet  //虚拟的是Telnet服务器,IP地址为1.1.1.100
    R2(config-slb-vserver)#serverfarm TELNET_SERVER        //使用前面创建的服务器组
    R2(config-slb-vserver)#client 192.168.1.0 255.255.255.0        //限定客户计算机的IP地址
    R2(config-slb-vserver)#inservice         //启用虚拟的服务器

    R3(config)#int f0/0
    R3(config-if)#ip add 1.1.1.100 255.255.255.0 secondary  //真实服务器上增加虚拟服务器的IP地址

    R4(config)#int f0/0
    R4(config-if)#ip add 1.1.1.100 255.255.255.0 secondary
    说明:
    ①在分派模式中,SLB路由器、真实服务器地址和虚拟服务器地址都要在同一子网中,并且是二层可达;本实验中为1.0.0.0/8网络,并且二层连通。
    ②配置负载平衡时可以采用“roundrobin”轮询方式,也可以采用“leastconns”连接数最少的服务器。
    ③创建虚拟服务器后,客户端计算机通过该虚拟IP地址来访问真实的服务器。
    ④采用分派模式时,服务器必须选择下面的一种做法,否则丢弃数据包:
      1>在真实服务器上添加环回口地址,并把地址设置为虚拟服务器的IP地址:在R3和R4增加一个环回接口,环回口地址设为1.1.1.100即可,建议使用这种方法。
      2>添加第二个IP地址为虚拟服务器的IP地址:因为R2(SLB服务器)会把目的IP为1.1.1.100的数据包分派到真实的服务器上,在接口下增加一个“secondary”地址即可;采用这种方式时,R3和R4会报“IP地址重复”的错误,但是这不影响使用。
    实验调试
    从R1上反复Telnet 1.1.1.100,检验是否会负载均衡:

    R2#show ip slb conns        //查看链接的基本信息

    R2#show ip slb conns detail        //查看连接的详细信息

    R2#show ip slb serverfarms        //查看服务器组的基本信息

    R2#show ip slb serverfarms detail        //查看服务器组的详细信息

    R2#show ip slb vservers        //查看虚拟服务器的基本信息

    R2#show ip slb vservers detail        //查看虚拟服务器的详细信息

    R2#show ip slb stats        //显示SLB的统计数

    配置定向模式的SLB:
    R2(config)#ip route 3.0.0.0 255.0.0.0 1.1.1.3       //添加路由保证R2能把数据包发到R3
    R2(config)#ip route 4.0.0.0 255.0.0.0 1.1.1.4
    R2(config)#ip slb serverfarm ANOTHER
    R2(config-slb-sfarm)#nat server        //配置SLB的模式为定向模式,默认为分派模式
    R2(config-slb-sfarm)#real 3.3.3.3   //配置真实服务器的IP地址,这里使用R3的环回口作为服务器的地址
    R2(config-slb-real)#weight 1
    R2(config-slb-real)#inservice
    R2(config-slb-real)#faildetect
    R2(config-slb-sfarm)#real 4.4.4.4
    R2(config-slb-real)#weight 1
    R2(config-slb-real)#inservice
    R2(config-slb-real)#faildetect
    R2(config-slb-real)#exit
    R2(config-slb-sfarm)#predictor roundrobin
    R2(config)#ip slb vserver V_ANOTHER
    R2(config-slb-vserver)#virtual 172.16.1.100 tcp telnet        //虚拟Telnet服务器的IP地址
    R2(config-slb-vserver)#serverfarm ANOTHER
    R2(config-slb-vserver)#client 192.168.1.0 255.255.255.0
    R2(config-slb-vserver)#inservice
    说明:
    ①在分派模式中,SLB路由器、真实服务器地址和虚拟服务器地址不需要在同一子网中。
    ②在定向模式中,路由器会更改客户计算机发来的数据包,把目的IP地址(试验中为172.16.1.100),改为真实服
      务器的IP地址(实验中为3.3.3.3或4.4.4.4)。
    实验调试
    从R1上反复Telnet 1.1.1.100,检验是否会负载均衡:

    R2#show ip slb serverfarms detail

    R2#show ip slb conns


     
    说明:在配置SLB时,真实服务器上的IP地址和路由是经常被忽视的地方,请根据分派或在定向模式中,SLB路由发送到真实服务器的数据包中的目的IP,以及真实服务器的回包中的目的IP地址,核实SLB路由和真实的服务器是否在相应的路由表。

  • 相关阅读:
    Apache CXF实战之四 构建RESTful Web Service
    使用CXF开发RESTFul服务
    Java多线程中的异常处理
    Checked异常和Runtime异常体系
    hql 语法与详细解释<转>
    hibernate实现有两种配置,xml配置与注释配置。<转>
    Hibernate配置详细解释
    重构(Refactoring)技巧读书笔记(General Refactoring Tips)
    Hibernate(1)——数据访问层的架构模式<转>
    关于layer.photos即照片显示的问题。
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12824325.html
Copyright © 2020-2023  润新知