最近我尝试在 VMWare 上安装 openshift 4.2 并遵循此文档https://blog.openshift.com/openshift-4-2-vsphere-install-with-static-ips/所以我能够成功安装它工作正常。但是这个安装对所有东西都使用了一个 LoadBalancer (HAProxy)。
所以在我的例子中,LoadBalancer 的 IP 是 10.68.33.62 然后我映射了如下的 URL
10.68.33.62 api.openshift4.example.com
10.68.33.62 api-int.openshift4.example.com
10.68.33.62 *.apps.openshift4.example.com
这意味着所有 URL 都在一个 LoadBalancer 中。我能够从以下 URL 访问控制台
https://console-openshift-console.apps.openshift4.example.com
甚至另一个应用程序也能够从https://anotherapp.apps.openshift4.example.com访问
HA 代理配置文件
frontend openshift-api-server
bind *:6443
default_backend openshift-api-server
mode tcp
option tcplog
backend openshift-api-server
balance source
mode tcp
server bootstrap 10.68.33.66:6443 check
server master1 10.68.33.63:6443 check
server master2 10.68.33.67:6443 check
server master3 10.68.33.68:6443 check
frontend machine-config-server68
bind *:22623
default_backend machine-config-server
mode tcp
option tcplog
backend machine-config-server
balance source
mode tcp
server bootstrap 10.68.33.66:22623 check
server master1 10.68.33.63:22623 check
server master2 10.68.33.67:22623 check
server master3 10.68.33.68:22623 check
frontend ingress-http
bind *:80
default_backend ingress-http
mode tcp
option tcplog
backend ingress-http
balance source
mode tcp
server worker1 10.68.33.64:80 check
server worker2 10.68.33.65:80 check
frontend ingress-https
bind *:443
default_backend ingress-https
mode tcp
option tcplog
backend ingress-https
balance source
mode tcp
server worker1 10.68.33.64:443 check
server worker2 10.68.33.65:443 check
但是在阅读文档https://docs.openshift.com/container-platform/4.2/installing/installing_vsphere/installing-vsphere.html#installation-network-user-infra_installing-vsphere后,我决定使用两个负载均衡器。API 需要一个负载均衡器,而默认的 Ingress Controller 需要第二个负载均衡器来为应用程序提供入口。
现在在这种情况下,我映射了如下所示的 URL
10.68.33.62 api.openshift4.example.com
10.68.33.62 api-int.openshift4.example.com
并假设第二个负载均衡器的 IP 是 10.68.33.69
10.68.33.69 *.apps.openshift4.example.com
第一个负载均衡器的 HAProxy 配置仅平衡主节点。
frontend openshift-api-server
bind *:6443
default_backend openshift-api-server
mode tcp
option tcplog
backend openshift-api-server
balance source
mode tcp
server bootstrap 10.68.33.66:6443 check
server master1 10.68.33.63:6443 check
server master2 10.68.33.67:6443 check
server master3 10.68.33.68:6443 check
frontend machine-config-server68
bind *:22623
default_backend machine-config-server
mode tcp
option tcplog
backend machine-config-server
balance source
mode tcp
server bootstrap 10.68.33.66:22623 check
server master1 10.68.33.63:22623 check
server master2 10.68.33.67:22623 check
server master3 10.68.33.68:22623 check
第二个负载均衡器仅平衡工作节点,因为它将仅服务于应用程序。
frontend ingress-http
bind *:80
default_backend ingress-http
mode tcp
option tcplog
backend ingress-http
balance source
mode tcp
server worker1 10.68.33.64:80 check
server worker2 10.68.33.65:80 check
frontend ingress-https
bind *:443
default_backend ingress-https
mode tcp
option tcplog
backend ingress-https
balance source
mode tcp
server worker1 10.68.33.64:443 check
server worker2 10.68.33.65:443 check
但不幸的是,它不起作用。我的理解正确吗?简而言之,我想通过第一个负载平衡器平衡主控制台和 API,并通过第二个负载平衡器平衡应用程序。我将如何实现它?
谢谢