免费注册
帮助文档(华北一、二)

  • 1. SLB支持哪些协议?对于web应用, HTTP和TCP选哪个更好?

    SLB VServer可以创建两种模式:请求代理模式和报文转发模式。请求代理模式支持TCP和HTTP(HTTPS)等协议. 对于web应用, 首选HTTP协议, 因为SLB能理解HTTP协议, 从而能更有针对性的进行负载均衡服务, 也可以提供基于HTTP协议的云服务器健康检查。对性能要求非常高的场景下, web应用跑TCP协议有略微的性能优势。报文转发模式则支持TCP协议和UDP协议,性能更强。对性能有需求的用户请优先选择报文转发模式。

    2. SLB支持哪些转发规则?哪种更好?

    SLB分为请求代理和报文转发两种模式。

    ● 目前请求代理模式支持轮询、源地址、加权轮询、最小连接数四种算法。

    1. 轮询算法下, SLB接收到新的TCP连接后, 依次转给每个后端云服务器。

    2. 源地址算法下, SLB会根据TCP连接的源地址,利用一定的哈希算法将请求其转给某台云服务器。之后用户再以相同IP访问, 如云服务器数量不变时,访问还是会落到该台云服务器。

    3. 加权轮询算法下,SLB接收到新的TCP连接后,将根据您指定的后端云服务器的不同权重,按照概率分配给各个后端云服务器。

    4. 最小连接数算法下,SLB接受到新的TCP连接后,会实时统计SLB到后端云服务器的连接数,选择连接数最低的云服务器建立新连接并发送数据。

    ● 目前报文转发模式支持轮询、源地址、一致性哈希、源地址(计算端口)、一致性哈希(计算端口)、加权轮询六种算法。

    1. 轮询算法。同上。

    2. 源地址算法。同上。

    3. 一致性哈希算法。一致性哈希算法是根据源目的IP,使用一致性哈希算法的结果选择后端云服务器。如果增加或者删减后端云服务器,仅仅会影响小部分连接。

    4. 源地址(计算端口)算法。SLB会根据TCP连接的源地址和源端口,利用一定的哈希算法将请求其转给某台云服务器。

    5. 一致性哈希(计算端口)算法。根据源目的IP、源目的端口,使用一致性哈希算法的结果选择后端云服务器。如果增加或者删减后端云服务器,仅仅会影响小部分连接。

    6. 加权轮询算法。同上。

    一般情况下,使用轮询算法就可以满足绝大多数负载均衡场景的需求, 您也可以根据自己的业务场景选择恰当的算法。

    3. SLB的会话保持是什么?服务端插入与用户定义的区别是什么?

    会话保持是SLB提供的高级功能,可以在轮询等负载均衡算法下,保证同一个源的请求,能够落在相同的后端云服务器上。

    请求代理模式下,会话保持功能是利用cookie实现的。SLB会向源端写cookie,并根据请求带有的cookie信息,直接将请求送给对应的后端云服务器。服务端插入指, 由负载均衡生成cookie的key. 用户定义指由用户指定特征cookie的key.

    报文转发模式下,会话保持功能是基于连接表实现的。

    4. SLB是否会宕机?

    SLB采用集群架构,基于跨可用区的分布式部署,利用BGP+ECMP实现集群的自动容灾,保证在可用区级别的灾难下,依旧可以正常工作。

    5. SLB是否有性能的限制,例如带宽、请求数, 连接数?

    SLB的带宽是存在上限的,其带宽由EIP的带宽决定。由于SLB服务器的性能限制,单个SLB实例能够承载的带宽上限为4Gbps左右。

    如果您使用的是SLB的请求代理模式,则每个SLB实例能支持HTTP请求的每秒新建连接数上限为8万;HTTPS每秒新建连接数上限为8千。并发连接数上限约为100万。

    如果您使用的是SLB的报文转发模式,则每个SLB实例能够支持40万每秒新建连接数,1000万包量,超过5000万并发连接。

    6. 为什么对SLB压测时会出现连接失败?

    通常情况下,在使用Linux操作系统作为压测模拟客户端时,当压测性能达到SLB极限前,不会出现连接失败的情况。

    但对于使用Windows作为压测的模拟客户端时,可能会出现TCP连接失败的问题。这是由于在压测场景下,Windows系统会快速复用客户端IP和端口发起TCP连接的建立,而在被压测SLB的后端Linux服务节点上TCP协议栈中,以相同的源地址及端口所建立的TCP连接可能尚未被释放完毕,若此时如果 "新建连接的序列号" 大于 "已存在连接的序列号",Linux服务节点就会认为新建连接的SYN请求是已存在连接的重传,从而导致新的TCP连接建立失败。

    所以在对SLB进行压测时,请尽量使用Linux作为压测模拟客户端,如果必须使用Windows系统作为压测模拟客户端,则需添加系统注册表中关于TCP时间戳的选项,该选项默认在Windows系统中是未激活的,具体配置参见:windows帮助文档:

    https://technet.microsoft.com/en-us/library/cc938205.aspx

    7. web console中的"运行"状态, 是指什么? 怎样知道后端某台服务器的状态?

    "运行"是指整个负载均衡的状态, 只要后端服务器有一台存活, 负载均衡还是运行状态. 后端服务器的状态通过绿色/红色指示灯表示. 要注意的是, 后端状态由负载均衡健康检查确定. 如果健康检查失败, 即使服务器还能ping通, 也认为是宕机。

    8. 为什么我使用了轮询, 但后端web server的日志中计算出的请求数不同?

    负载均衡的轮询算法是针对连接的。同一个TCP连接,不会被同时负载到两台后端服务器。如果同一个连接上会发送数量不确定的多个请求,则可能会导致后端服务器上统计到的请求数不同。

    9. 目前SLB提供哪些监控信息?

    负载均衡提供出口带宽,VServer连接数,每秒新建连接数,包量,带宽以及后端节点健康检查监控。

    10. SLB是否支持SSL, 我该如何配置?

    支持SSL协议. 目前有两种可用的SSL支持模式:

    1、SSL Offloading, 即将SSL密钥配置在负载均衡设备上, 在请求量十分巨大时, 使用特殊的硬件设备优化SSL处理, 减少后端服务器的CPU压力. 缺点是需要把SSL密钥交给负载均衡设备, 降低安全性. 在这种模式下, 请将VServer的端口配置为443(或您自定义的SSL端口), 绑定SSL证书到VServer, 后端云服务器的端口为正常服务监听的端口(例如HTTP服务时, 云服务器池中的后端云服务器请监听在80).

    2、后端云服务器处理SSL证书. 在这种模式下, 请配置VServer的协议为TCP协议, VServer端口配置为443(或您自定义的SSL端口), 服务器池中的后端云服务器也需要监听在443端口(或您自定义的SSL端口).

    11. SLB目前是proxy模式还是类似LVS采用的NAT模式的?

    SLB的请求代理模式是proxy模式,而报文转发则是DR模式。

    12. 我想要开启SLB的X-Forwarded-For,以便获取客户端的源IP,请问应该如何设置?

    目前SLB已经默认开启了x-Forwarded-For选项,以http服务为例,只需要在配置VServer的时候选择http模式即可。如果服务为https,则需要选择https模式,并上传证书绑定到该VServer上。

    13. SLB后的HTTP服务, 如何配置才能取到客户端IP?

    采用标准的X-Fowarded-For字段即可获取, 在web服务器上修改日志的格式即可.

     

    # Nginx示例

    log_format  upstream  '$time_iso8601 $http_x_forwarded_for $host $upstream_response_time $request $status $upstream_addr';

    # Apache示例

    SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1

    SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1

    LogFormat "%{CLIENTIP}e %D %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" trueip_combined

    CustomLog logs/access_log trueip_combined

    # tomcat 的server.xml文件修改如下参数:

        <Host name="localhost" appBase="webapps"

            unpackWARs="true" autoDeploy="true">

            <Valve className="org.apache.catalina.valves.AccessLogValve"

            directory="logs"

            prefix="tomcat_access."

            suffix=".log"

           pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/>

    </Host>

    14. 经常发现SLB后端云服务器的访问日志中有大量的内网IP访问,请问是正常访问么?

    这是正常的,因为 SLB在请求代理模式下,对后端云服务器转发请求时,使用的是 SLB的内网代理IP。例如,用户在北京二的后端云服务器访问日志中发现大量来自 10.10.251.0/24 网段的访问,实际上就是北京二 SLB 的内网代理 IP。 SLB 在各个区域下的的网段分别是:

    北京1:10.46.192.0/18

    北京2:10.46.192.0/18

    请确保 SLB 后端云服务器的防火墙能够允许对应网段的访问,否则可能会造成该服务器无法正常提供服务。

    15. 我想禁止某些源地址访问我的后端服务器,SLB能做到访问控制吗?

    目前SLB暂时不能做到防火墙功能,只能针对端口进行管理,但是可以通过修改Web server的配置对来源地址进行限制。 由于在SLB的HTTP模式下,真实源地址保存在HTTP消息的"X-Forwarded-For"字段中,目前大部分Web server对该字段都提供了屏蔽功能。 所以,如果用户急需要对某些源地址进行屏蔽,可以参考以下配置文件范例:

    ● 配置Apache屏蔽某源地址

    参考下面的内容修改配置文件:

     

    <Directory "/var/www/html">

    #忽略其他配置

    Order deny, allow

    SetEnvIf X-Forwarded-For "^(192\.168\.0\.1)$" deny1

    SetEnvIf X-Forwarded-For "^(172\.16\.0\.1)$" deny2

    Deny from env=deny1

    Deny from env=deny2

    </Directory>

    "Order deny, allow"的顺序可以根据使用方式自定义。 "SetEnvIf"用来定义一个环境变量。这里将"X-Forwarded-For"字段作为一个变量,并使用了一个正则表达式匹配某IP(192.168.0.1)。 后续的Deny将根据该变量将所匹配IP进行屏蔽。

    ● 配置Nginx屏蔽某源地址

    参考下面的内容修改配置文件:

     

    set_real_ip_from  10.10.192.0/18;

    real_ip_header X-Forwarded-For;

    deny 192.168.0.1

    其中"set_real_ip_from"资源的"10.10.192.0/18"IP地址为北京二可用区C的SLB所在网段地址。 nginx会将来源为该网段的"X-Forwarded-For"作为真实IP地址。 deny后面的IP,既为所需要屏蔽的IP地址。

    16. 我想要使用websocket,请问如何支持?

    SLB默认支持websocket协议。

    17. 内网SLB的IP地址为何无法ping通?

    内网SLB仅保证支持同子网能ping通,您可以依靠端口的测试来确认内网SLB是否配置和工作正常。

    18. SLB报文转发监听端口和后端服务器监听端口不一致怎么办?

    可以通过VM内配置IpTables端口转发规则实现,具体步骤如下:

    1、修改/etc/sysctl.conf配置文件,设置 net.ipv4.ip_forward = 1 默认是0。

    2、关闭防火墙 service iptables stop。

    3、配置规则:

     iptables -t nat -A PREROUTING –d $vip_ip -p tcp --dport $ulb4_port  -j DNAT --to-destination $vip_ip:$vm_port

    其中:$vip_ip指负载均衡器的内网IP,$ulb4_port指ulb4的监听端口,$vm_port为后端服务器的监听端口 例:负载均衡器的内网IP为:10.10.10.10,ulb_4监听端口为80,后端服务器监听端口为8101,则规则为:

     iptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.10:8101

    4、保存配置:service iptables save

    5、启动iptables :service iptables start



文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家