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