设置 NGINX 负载均衡器

NGINX 将被配置为第 4 层负载均衡器(TCP),将连接转发到您的 Rancher 节点之一。

在此配置中,负载均衡器位于您的节点前面。负载均衡器可以是任何能够运行 NGINX 的主机。

请勿将您的 Rancher 节点之一用作负载均衡器。

这些示例显示了负载均衡器被配置为将流量引导到三个 Rancher 服务器节点。如果 Rancher 安装在 RKE Kubernetes 集群上,则需要三个节点。如果 Rancher 安装在 K3s Kubernetes 集群上,则只需要两个节点。

安装 NGINX

首先在您想用作负载均衡器的节点上安装 NGINX。NGINX 为所有已知操作系统提供可用的软件包。测试过的版本是 1.14 和 1.15。有关安装 NGINX 的帮助,请参考他们的 安装文档。

需要 stream 模块,使用官方 NGINX 软件包时该模块是可用的。请参考您的操作系统文档,了解如何在您的操作系统上安装和启用 NGINX stream 模块。

创建 NGINX 配置

安装 NGINX 后,您需要使用节点的 IP 地址更新 NGINX 配置文件 nginx.conf。

  1. 将下面的代码示例复制并粘贴到您喜欢的文本编辑器中。将此文件另存为 nginx.conf。

  2. 在 nginx.conf 中,将 <IP_NODE_1>、<IP_NODE_2> 和 <IP_NODE_3> 在端口 80 和端口 443 两处出现的部分替换为您的节点 IP 地址。

    请参阅 NGINX 文档:TCP 和 UDP 负载均衡 以获取所有配置选项。

    示例 NGINX 配置
    worker_processes 4;
    worker_rlimit_nofile 40000;
    
    events {
        worker_connections 8192;
    }
    
    stream {
        upstream rancher_servers_http {
            least_conn;
            server <IP_NODE_1>:80 max_fails=3 fail_timeout=5s;
            server <IP_NODE_2>:80 max_fails=3 fail_timeout=5s;
            server <IP_NODE_3>:80 max_fails=3 fail_timeout=5s;
        }
        server {
            listen 80;
            proxy_pass rancher_servers_http;
        }
    
    }
    
    http {
    
        upstream rancher_servers_https {
            least_conn;
            server <IP_NODE_1>:443 max_fails=3 fail_timeout=5s;
            server <IP_NODE_2>:443 max_fails=3 fail_timeout=5s;
            server <IP_NODE_3>:443 max_fails=3 fail_timeout=5s;
        }
        server {
            listen 443 ssl;
            ssl_certificate /path/to/tls.crt;
            ssl_certificate_key /path/to/key.key;
            location / {
                proxy_pass https://rancher_servers_https;
                proxy_set_header Host <rancher UI URL>;
                proxy_ssl_server_name on;
                proxy_ssl_name <rancher UI URL>
            }
        }
    }
  3. 将 nginx.conf 保存到您的负载均衡器,路径为:/etc/nginx/nginx.conf。

  4. 通过运行以下命令加载更新到您的 NGINX 配置:

    # nginx -s reload

选项 - 以 Docker 容器运行 NGINX

您可以选择不在操作系统上以软件包形式安装 NGINX,而是将其作为 Docker 容器运行。将编辑后的 示例 NGINX 配置 保存为 /etc/nginx.conf,并运行以下命令以启动 NGINX 容器:

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /etc/nginx.conf:/etc/nginx/nginx.conf \
  nginx:1.14