文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
实现细节
实现细节
跟大部分的高级服务一样,LBaaS 在网络节点上实现。
qlbaas 命名空间
在启动了 LBaaS 之后,网络节点上会多一个 qlbaas-xxx 命名空间,其中一个 tap 类型端口,绑定了我们定义的 VIP。
$ sudo ip netns exec qlbaas-574a31da-a28a-449f-8c9d-3d3687c3c02a ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever52: tapfb358342-59: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:68:77:37 brd ff:ff:ff:ff:ff:ff inet 10.0.0.250/24 brd 10.0.0.255 scope global tapfb358342-59 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe68:7737/64 scope link valid_lft forever preferred_lft forever
该 tap 类型端口,会连接到网络节点的 br-int 网桥上。
HAProxy
此时在网络节点上查看进程,会发现一个 haproxy 进程。
$ ps aux|grep haproxynobody 17331 0.0 0.0 20376 1104 ? Ss 15:08 0:00 haproxy -f /opt/stack/data/neutron/lbaas/574a31da-a28a-449f-8c9d-3d3687c3c02a/conf -p /opt/stack/data/neutron/lbaas/574a31da-a28a-449f-8c9d-3d3687c3c02a/pid -sf 17323
查看 HAProxy 的配置文件
$ cat /opt/stack/data/neutron/lbaas/574a31da-a28a-449f-8c9d-3d3687c3c02a/confglobal daemon user nobody group nogroup log /dev/log local0 log /dev/log local1 notice stats socket /opt/stack/data/neutron/lbaas/574a31da-a28a-449f-8c9d-3d3687c3c02a/sock mode 0666 level userdefaults log global retries 3 option redispatch timeout connect 5000 timeout client 50000 timeout server 50000frontend df25900f-53b1-4aab-8436-8411ec710445 option tcplog bind 10.0.0.250:22 mode tcp default_backend 574a31da-a28a-449f-8c9d-3d3687c3c02abackend 574a31da-a28a-449f-8c9d-3d3687c3c02a mode tcp balance leastconn server 45481748-3104-462c-ae4b-fae0f4b08c20 10.0.0.2:22 weight 1 server 227b69fe-8685-4df6-b2a5-2f964c74886c 10.0.0.4:22 weight 1
可见,里面的配置信息,跟我们之前配置的完全一致。
当有请求访问 10.0.0.250:22 的时候,最终会到达该 qlbaas 命名空间,请求被 HAProxy 收到,按照负载均衡策略,转发给合适的虚机。
可以通过 ssh 进行测试。
$ sudo ip netns exec qrouter-40fff075-d3a2-477b-942c-6b1adb42e35e ssh 10.0.0.250
在后端的虚机抓包,SSH 请求是 10.0.0.250 -> 10.0.0.2,说明实际上是 HAProxy 转发了请求。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论