基于openstack界面,建立一个HTTP协议的资源池,创建vip,选择80端口。
端口ns-c84b54fd-16是该资源池vip对应的端口。
添加两台虚拟机作为成员,编辑虚拟机中的html访问文件,添加成员虚拟机名称/IP地址作为标识。
为资源池添加健康监控。
VIP端口会根据健康监控的设定,向成员虚拟机发送连接请求进行探测。
在ns-c84b54fd-16上进行抓包,可以看到两个虚拟机由于没有开放80端口,此时返回的报文都为unreachable。
在server1的iptables中开放80端口,再次进行抓包。
可以看到vip到server1之间的TCP连接已经建立,并且有HTTP的请求。而server2返回的报文依然为unreachable。
健康监控也会把成员状态反映在界面上:
在虚拟机192.168.10.10作为client去访问vip地址,根据资源池轮询算法的设定,访问结果在两台成员虚拟机之间循环出现。
在vip的port上抓包,可以看到两次访问的数据。Client端首先与VIP建立连接,将请求发送给VIP,VIP根据负载均衡策略选择一个可用的成员虚拟机,与成员虚拟机建立连接,向成员虚拟机发送HTTP请求,收到回复后再将数据回复给client端。之后拆除两侧的TCP连接。
通过为curl工具添加-i参数,可以查看到返回的HTTP消息包头,其中Set-Cookie值设置了HTTP_COOKIE。
通过指定cookie值,可以持续访问同一个成员。