文档首页/ 云搜索服务 CSS/ 最佳实践/ 使用Nginx统一管理多集群的Kibana和Dashboards
更新时间:2026-01-09 GMT+08:00

使用Nginx统一管理多集群的Kibana和Dashboards

使用反向代理服务器统一管理Kibana和OpenSearch Dashboards地址,简化多集群管理流程,实现细粒度的访问控制。

应用场景

在使用Kibana/OpenSearch Dashboards进行数据可视化和日志分析时,如果您的业务架构中存在多个Elasticsearch和OpenSearch集群,并希望通过一个统一的反向代理(如Nginx)统一管理集群访问,可能会遇到需要根据不同的基础路径(Base Path)区分集群的需求。例如,您可能希望将不同业务线的数据展示在不同的集群上,但又希望通过一个统一入口访问Kibana/OpenSearch Dashboards。此时,需为每个集群的Kibana/OpenSearch Dashboards配置不同的Base Path。然而,当前的配置方式需手动在每个节点上进行,不仅增加了运维复杂度,也容易出错。为解决这一问题,CSS服务提供了集中化配置管理功能:用户只需在控制台输入所需的Base Path,系统将自动在所有相关节点上同步配置,确保配置的一致性和准确性,从而简化多集群管理流程,提升系统安全性和管理效率。

本文主要介绍如何使用Nginx统一管理多个Elasticsearch集群的Kibana和多个OpenSearch集群的OpenSearch Dashboards,该方案同样适用于以下场景:

  • 使用Nginx统一管理多个Elasticsearch集群的Kibana。
  • 使用Nginx统一管理多个OpenSearch集群的OpenSearch Dashboards。

方案架构

图1 架构图

通过反向代理服务器Nginx实现路径隔离(指通过不同的路径规则将请求路由到不同的后端服务,避免路径冲突)和集中化管理(指通过统一的配置管理工具,确保多节点配置的一致性)的技术实现如下:

  • CSS服务自动同步集群的Base Path配置,确保多节点配置一致性。Elasticsearch和OpenSearch集群分别通过server.basePath和server.rewriteBasePath参数定义路径规则。
  • ECS服务器作为Nginx部署载体,连接集群并实现网络互通。Nginx通过配置文件(如“nginx.conf”)中的location块来匹配请求路径,并根据路径规则将请求转发至相应的后端服务。路径隔离通过在Nginx配置中设置不同的location块实现,集中化管理则通过CSS服务自动同步集群的Base Path配置来实现。
  • 用户通过统一入口(如http://203.0.113.45:5600)访问Nginx,Nginx根据请求路径中的Base Path(如/css-es-test或 /css-os-test)动态路由至对应的Kibana或OpenSearch Dashboards,分别转发至Elasticsearch或OpenSearch集群。

方案优势

  • 集中化配置管理:通过CSS服务控制台统一配置Base Path,减少配置错误和运维复杂度。支持多集群管理,显著提升效率。
  • 灵活的路径区分与访问控制:通过Base Path实现不同集群的路径隔离,满足多业务线数据展示需求。支持安全模式(HTTPS)和非安全模式(HTTP),适应不同安全策略。
  • 高可用与稳定性:Nginx作为成熟反向代理,具备高并发处理能力,确保访问稳定性。
  • 可扩展性与易用性:方案支持动态扩展,新增集群时仅需配置Base Path和Nginx映射规则。Nginx支持热更新,不影响正在处理的访问请求。

前提条件

  • 已创建Elasticsearch集群,集群版本为7.10.2,集群状态为“运行中”,获取并记录集群的内网访问地址(如10.10.1.53:9200)。
  • 已创建OpenSearch集群,集群状态为“运行中”。获取并记录了集群的内网访问地址(如10.10.1.117:9200)。
  • 已创建ECS用于安装反向代理服务器Nginx,ECS的操作系统选择CentOS 8.0,并绑定弹性公网IP(如203.0.113.45)。要求和Elasticsearch、OpenSearch集群的VPC保持一致,如果不在同一VPC则需要打通网络并配置集群路由。购买操作指导请参见快速购买和使用Linux ECS

步骤一:自定义Kibana的Base Path

  1. 登录云搜索服务管理控制台
  2. 在左侧导航栏,选择“集群管理 > Elasticsearch”
  3. 在集群列表,单击目标集群名称,进入集群详情页。
  4. 选择“集群配置 > 参数配置 > Kibana配置”
  5. 单击“编辑”,配置参数值。
    表1 配置Base Path

    参数

    示例

    说明

    server.basePath

    /css-es-test

    自定义Base Path的参数值。

    取值范围:
    • 必须以“/”开头。
    • 不能有连续的斜杠(如“//”)。
    • 只能包含字母、数字、短横线“-”、下划线“_”、点“.”“/”
    • 允许多层路径,但长度不能超过254字符。
    • 不能以“/”结尾。

    server.rewriteBasePath

    true

    指定由Kibana还是反向代理移除请求路径中server.basePath前缀。

    取值范围:
    • true,表示Kibana会自动移除请求路径中的server.basePath前缀。
    • false(默认值),表示需要由反向代理(如Nginx)来移除请求路径中的server.basePath前缀。
  6. 修改完成后,单击“保存”,在弹窗中确认参数无误后勾选“修改Kibana配置会自动重启Kibana进程,期间可能短暂影响Kibana访问。请稍后重试。”,单击“确定”

    当下方的参数配置任务列表显示“作业状态”“成功”时,表示参数修改成功。

步骤二:自定义OpenSearch Dashboards的Base Path

  1. 登录云搜索服务管理控制台
  2. 在左侧导航栏,选择“集群管理 > OpenSearch”
  3. 在集群列表,单击目标集群名称,进入集群详情页。
  4. 选择“集群配置 > 参数配置 > Dashboards配置”
  5. 单击“编辑”,配置参数值。
    表2 配置Base Path

    参数

    示例

    说明

    server.basePath

    /css-os-test

    自定义Base Path的参数值。

    取值范围:
    • 必须以“/”开头。
    • 不能有连续的斜杠(如“//”)。
    • 只能包含字母、数字、短横线“-”、下划线“_”、点“.”“/”
    • 允许多层路径,但长度不能超过254字符。
    • 不能以“/”结尾。

    server.rewriteBasePath

    false

    指定由OpenSearch Dashboards还是反向代理移除请求路径中server.basePath前缀。

    取值范围:
    • true,表示OpenSearch Dashboards会自动移除请求路径中的server.basePath前缀。
    • false(默认值),表示需要由反向代理(如Nginx)来移除请求路径中的server.basePath前缀。
  6. 修改完成后,单击“保存”,在弹窗中确认参数无误后勾选“修改Dashboards配置会自动重启Dashboards进程,期间可能短暂影响Dashboards访问。请稍后重试。”,单击“确定”

    当下方的参数配置任务列表显示“作业状态”“成功”时,表示参数修改成功。

步骤三:安装Nginx

  1. 登录弹性云服务器。
  2. 安装Nginx。
    1. 执行以下命令,安装Nginx。
      sudo dnf -y install https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.20.1-1.el8.ngx.x86_64.rpm
    2. 执行以下命令,查看Nginx版本。
      nginx -v

      回显如下类似信息。

      nginx version: nginx/1.20.1
    3. 执行以下命令,启动Nginx并设置开机启动。
      systemctl start nginx
      systemctl enable nginx
    4. 查看启动状态,确保Nginx服务状态为active。
      systemctl status nginx.service

      回显如下类似信息。

    5. 使用浏览器访问 “http://{ECS弹性公网IP}”,显示如下页面,说明Nginx安装成功。
      图2 测试访问Nginx
  3. 修改Nginx配置文件,以配置Nginx作为Elasticsearch和OpenSearch集群的反向代理。
    1. 编辑Nginx配置文件。
      vi /etc/nginx/nginx.conf
    2. 增加一个server,server中的IP地址和端口需要与实际环境匹配。
      server {
        # 自定义Nginx访问端口,例如配置为5600,则后续通过http://{Nginx IP}:5600访问Nginx
        listen 5600;
      
        # 自定义服务名称,例如kibana_proxy
        server_name kibana_proxy;
      
        # 定义转发规则,表示URL前缀为server.basePath时使用这个规则
        location /css-os-test {
          # 移除请求路径中server.basePath前缀,仅当server.rewriteBasePath为false时需要配置
          rewrite ^/css-os-test/(.*)$ /$1 break;
      
          # Kibana或Dashboards的访问地址,支持内网访问地址或公网访问地址
          proxy_pass https://10.10.1.117:5601;
        }
      
        location /css-es-test {
          proxy_pass http://10.10.1.53:5601;
        }
      }
      
    3. 重新加载配置。
      nginx -s reload
    4. 查看启动状态,确保Nginx服务状态为active。
      systemctl status nginx.service

步骤四:使用Nginx统一访问集群

通过Nginx访问不同的集群,以实现统一的访问入口和负载均衡。

访问地址:“http://{Nginx IP}:{Nginx访问端口}{Base Path}”

Nginx IP为Nginx服务器的公网IP地址,即为ECS的弹性公网IP;Nginx访问端口为Nginx配置文件中的server端口号,Base Path为Kibana或OpenSearch Dashboards的server.basePath。

因此,集群访问地址如下所示:

  • Elasticsearch集群的Kibana访问地址:http://203.0.113.45:5600/css-es-test
  • OpenSearch集群的OpenSearch Dashboards访问地址:http://203.0.113.45:5600/css-os-test

能成功登录Kibana和OpenSearch Dashboards即表示配置成功。