ELB弹性负载均衡功能测试

Jneee 于 2020-04-25 发布

ELB弹性负载均衡功能测试

ELB ipv4功能测试

vim index.html
python -m SimpleHTTPServer port

另有个脚本,前端也能看到返回

# vim http_server.py
import sys
import BaseHTTPServer
import SocketServer
import socket

requests = 0
port = int(sys.argv[1])
index_html= '<h1>Host: {}:{}</h1>\n'.format(socket.gethostname(),port)

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_GET(self):
        global requests
        requests += 1
        print ("processed" + str(requests))
        self.send_response(200, "test server")
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write(index_html)


httpd = SocketServer.TCPServer(("", port ), MyHandler)
httpd.serve_forever()

起服务后,直接使用curl [-g] ip:port 验证连通性。

elb设置域名匹配后,本地访问指定域名会被转发到指定的pool,可以修改计算机本地C:\Windows\System32\drivers\etc\hosts 加入ip name.com,也可以直接curl --header 'Host:baidu.com' elb_ip 来实现。elb读取请求头部的Host字段来匹配规则。用Python也可以,

import requests
res = requests.get(ip, headers = {"Host":"baidu.com"})
print res.text

IPv6功能测试

ipv6 如果是创建虚机后才加上的,需要在虚机执行’dhclient -6’才能刷出来虚机的ipv6地址,才能继续往下做。

ipv6 服务端

python -c "import socket,SocketServer,CGIHTTPServer;SocketServer.TCPServer.address_family=socket.AF_INET6;CGIHTTPServer.test()" xxx

ipv6的健康检查也是ipv6的协议,因此如果后端不是起的ipv6的服务,健康检查就会不在线,elb的访问流量不会下发到健康检查不在线的机器上

IPv6 客户端

curl -g http://[ipv6 addr]:port

-g 是ipv6协议,必须加。如果是https,服务端elb证书不对的话,还要加上 -k 。

其他(4层)TCP/UDP协议用例

TCP、UDP流量测试采用iperf打流方式进行

TCP服务器端:

-s 服务器端, -w TCP窗口大小,-p 端口号,-i 报告间隔秒数, -V ipv6

IPv4:  ./iperf -s -w 512k -p 6555 –i 1

IPv6:  ./iperf -s -V -w 512k -p 7555 -i 1

TCP客户端:

IPv4东西向流量测试用VIP地址;IPv4南北向流量测试用EIP地址。发送方(客户端):执行下面的命令,

IPv4:  ./iperf -c xx.xx.xx.xx(ELB的VIP) -w 512k -t 9999 -p xx(ELB的前端端口号) -i 1

IPv6:  ./iperf -c xx.xx.xx.xx(ELB的VIP) -V -w 512k -t 9999 -p xx(ELB的前端端口号) -i 1

默认iperf打流为TCP方式,开启UDP方式打流加参数 -u