前面咱们建立了 Pool,VIP 并添加了 Member。今天将建立 Monitor,而后测试 LBaaS 是否可以正常工做。html
LBaaS 能够建立 monitor,用于监控 Pool Member 健康状态。 若是某个 member 不能正常工做,monitor 会将其状态设置为 down,从而避免将后续请求转发给它。python
下面咱们为 Pool 添加一个 monitor。 在 Monitors 标签页中点击 “Add Monitor” 按钮web
Type 选择 “HTTP”,含义是经过 HTTP 检查 member 的健康状态。
Delay 设置为 “10”,含义是 10 秒检查一次 member 的状态。
Timeout 设置为 “5”,含义是若是 member 在 5 秒内没法应答,则超时。
Max Reties 设置为 “3”,含义是若是尝试 3 次都超时或者失败,则将 member 状态设置为 down。session
HTTP Method 设置为 “GET”
URL 设置为 “/”
Expected HTTP Status Codes 设置为 “200”curl
上面三项的含义是经过 HTTP GET 请求 member “/” URL,若是返回码为 200,则认为 member 状态正常。测试
点击 “Add”,monitor 建立成功。url
下面将新建的 monitor 添加到 pool 。
在 “web servers” 的操做列表中点击 “Associate Monitor”spa
选择咱们刚刚建立的 monitor。router
点击 “Associate”。server
通过上面的设置,咱们建立了包含 member “Web1” 和 “Web2” 的 Pool “web servers”,并添加了 monitor。 准备就绪,能够测试 load balancer 是否正常工做了。
首先在 Web1 和 Web2 中启动 HTTP 服务,在 80 端口监听
这里咱们使用 python 提供的 SimpleHTTPServer 模块启动了 HTTP 服务。
web server 的 index.html 显示当前访问的是哪一个 member。
在 router 的 namespace 上屡次执行 curl 172.16.100.11(VIP)
测试结果显示每次访问的都是 Web2 这个 member。
为何没有访问到 Web1 呢?
还记得咱们前面讨论的内容吗:
Load Balance Method -- ROUND_ROUBIN
Session Persistence -- SOURCE_IP
在这种配置下,第一个 curl 请求 HAProxy 经过 ROUND_ROUBIN 选择了 Web2。
然后续的请求,HAProxy 则会应用 SOURCE_IP 机制,仍然选择 Web2。
下面咱们修改一下配置。 在 “web servers” 的操做列表中点击 “Edit VIP”。
选择 “No session persistence” 并保存。
再进行 curl 测试。
能够看到已经在 “Web1” 和 “Web2” 之间 round robin 了。
下一节咱们将分析 LBaaS 的内部实现和工做机制。