负载均衡器可以是任何能够运行 NGINX 的主机。本文讲述了如何将 NGINX 配置为 4 层负载均衡器(TCP),将流量转发到其中一个 Rancher Server 节点的过程。在此配置中,负载均衡器位于节点的前面。

:::note 说明 请勿将 Rancher 节点用作负载均衡器。 :::

安装 NGINX

配置基于 NGINX 的负载均衡前,您需要安装 NGINX 和 stream 模块。Rancher 支持的 NGINX 版本包括:v1.14v1.15。 NGINX 官网提供了多种操作系统的安装包,您可以自行选择其中一种进行安装。所有的安装包里面都包含 stream 模块,所以不需要单独下载和安装 stream 模块。详情请参考NGINX 官方中文文档。建议您在这两个版本中选择一个,参考下文完成配置。

创建 NGINX 配置文件

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

  1. 打开一个文本编辑器(如 Notepad++),复制下面的代码模板,粘贴到文本编辑器中,将其另存为nginx.conf

  2. nginx.conf中, 使用节点IP 地址 替换(端口 80 和 端口 443)的<IP_NODE_1>, <IP_NODE_2>, 和<IP_NODE_3>

    注意事项: 可配置项请参考NGINX 文档: TCP and UDP Load Balancing

    NGINX 配置文件模板

    1. worker_processes 4;
    2. worker_rlimit_nofile 40000;
    3. events {
    4. worker_connections 8192;
    5. }
    6. stream {
    7. upstream rancher_servers_http {
    8. least_conn;
    9. server <IP_NODE_1>:80 max_fails=3 fail_timeout=5s;
    10. server <IP_NODE_2>:80 max_fails=3 fail_timeout=5s;
    11. server <IP_NODE_3>:80 max_fails=3 fail_timeout=5s;
    12. }
    13. server {
    14. listen 80;
    15. proxy_pass rancher_servers_http;
    16. }
    17. upstream rancher_servers_https {
    18. least_conn;
    19. server <IP_NODE_1>:443 max_fails=3 fail_timeout=5s;
    20. server <IP_NODE_2>:443 max_fails=3 fail_timeout=5s;
    21. server <IP_NODE_3>:443 max_fails=3 fail_timeout=5s;
    22. }
    23. server {
    24. listen 443;
    25. proxy_pass rancher_servers_https;
    26. }
    27. }
  3. 替换完 IP 地址后,将nginx.conf保存到以下路径: /etc/nginx/nginx.conf

  4. 运行以下命令,更新 NGINX 配置:

    1. nginx -s reload

可选: 以 Docker 方式运行 NGINX

您可以使用软件包将 NGINX 安装在操作系统上,也可以将 NGINX 作为 Docker 容器运行,这样可以节省一些资源。

完成 IP 地址替换后,将文件另存为/etc/nginx.conf,运行以下命令即可启动 NGINX 容器。使用 NGINX v1.15 时,请将最后一行的“1.14”替换为“1.15”。

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