我正在实现一个前端负载均衡器,它将进入端口 80 和 443 的流量传递到不同的后端端口。SSL 终止发生在后端,HAproxy 不应该参与任何事情,除了将来自前端端口 80 和 443 的流量转发到各自的后端端口。
端口 80 转发似乎很好,并且 443 未按预期工作并导致 SSL 握手失败。甚至我的后端服务也没有出现在网络浏览器上,并警告说这是不可信的。我不知道为什么会发生这种情况,而且我的 HAProxy 体验并不高,以下是当前配置。如果我错了,请纠正我。
HAProxy 安装在 Ubuntu 18.04.5 LTS 上
在默认部分之后配置
frontend k8s_lb
mode tcp
bind x.x.x.x:80
default_backend kube_minions
frontend k8s_lb_https
mode tcp
bind x.x.x.x:443
default_backend kube_minions_https
backend kube_minions
mode tcp
balance roundrobin
server k8s_worker-01 x.x.x.x:32080
server k8s_worker-02 x.x.x.x:32080
backend kube_minions_https
mode tcp
balance roundrobin
server k8s_worker-01 x.x.x.x:32443
server k8s_worker-02 x.x.x.x:32443
后台故事:
我有一个 k8s 集群和 traefik 入口,它在每个节点上作为 DaemonSet 运行,minions 是我的后端服务器。CertManager 可以通过让我们在入口资源中加密 ACME 协议来进行证书自动化,因此 SSL 终止应该通过入口资源发生。
我已经完成了证书,一切看起来都很完美,因为我已经在 AWS 上使用 TCP 负载均衡器实现了类似的设置,并且一切都在完美运行并运行 prod 工作负载。
所以,我需要提一下,后端服务都很好并且正在运行。在此,我用 HAProxy 替换了 AWS 负载均衡器,并且需要实现相同的功能。
请帮助我解决这个问题,因为我正在努力解决这个问题,但仍然没有解决这个问题。
谢谢你。