项目上产品因为前端网络架设负载均衡设备,导致产品运行不稳定,为了尽快重现解决问题,首先需要能够模拟出项目上使用的负载均衡设备,对产品持续进行压力测试;
负载均衡设备特点:
1. 通过发送空的HTTP请求,探测产品具体服务端口是否可连通;
2. 探测请求发送间隔5秒;
3. 发现某一服务端口不通,立即动态切换服务请求到备用设备上;(这个功能不是此次模拟重点)
Ruby简单实现如下
TCP监听版本
负载均衡设备特点:
1. 通过发送空的HTTP请求,探测产品具体服务端口是否可连通;
2. 探测请求发送间隔5秒;
3. 发现某一服务端口不通,立即动态切换服务请求到备用设备上;(这个功能不是此次模拟重点)
Ruby简单实现如下
require "open-uri"
#监听服务器IP地址
ip = '127.0.0.1'
#待监听端口列表
ports = [20440, 20443, 20448]
while true
ports.each do |port|
url = "http://#{ip}:#{port}"
begin
open(url) do |http|
puts "[#{Time.now}] #{url} OK"
html = http.read
end
rescue Exception => e
puts "[#{Time.now}] #{url} #{e}"
end
end
puts "\r\n"
sleep(5)
end
TCP监听版本
require "socket"
ip = '172.16.13.12'
ports = [30443,7443]
loop {
ports.each do |port|
begin
socket = TCPSocket.open(ip, port)
puts "#{Time.now} #{ip}:#{port} test OK"
socket.close
rescue Exception => e
puts "#{Time.now} #{ip}:#{port} test error [#{e}]"
end
end
puts "\r\n"
sleep(5)
}