使用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。
方案架构
通过反向代理服务器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
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,单击目标集群名称,进入集群详情页。
- 选择“集群配置 > 参数配置 > Kibana配置”。
- 单击“编辑”,配置参数值。
表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前缀。
- 修改完成后,单击“保存”,在弹窗中确认参数无误后勾选“修改Kibana配置会自动重启Kibana进程,期间可能短暂影响Kibana访问。请稍后重试。”,单击“确定”。
当下方的参数配置任务列表显示“作业状态”为“成功”时,表示参数修改成功。
步骤二:自定义OpenSearch Dashboards的Base Path
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,单击目标集群名称,进入集群详情页。
- 选择“集群配置 > 参数配置 > Dashboards配置”。
- 单击“编辑”,配置参数值。
表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前缀。
- 修改完成后,单击“保存”,在弹窗中确认参数无误后勾选“修改Dashboards配置会自动重启Dashboards进程,期间可能短暂影响Dashboards访问。请稍后重试。”,单击“确定”。
当下方的参数配置任务列表显示“作业状态”为“成功”时,表示参数修改成功。
步骤三:安装Nginx
- 登录弹性云服务器。
- 安装Nginx。
- 执行以下命令,安装Nginx。
sudo dnf -y install https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.20.1-1.el8.ngx.x86_64.rpm
- 执行以下命令,查看Nginx版本。
nginx -v
回显如下类似信息。
nginx version: nginx/1.20.1
- 执行以下命令,启动Nginx并设置开机启动。
systemctl start nginx systemctl enable nginx
- 查看启动状态,确保Nginx服务状态为active。
systemctl status nginx.service
回显如下类似信息。

- 使用浏览器访问 “http://{ECS弹性公网IP}”,显示如下页面,说明Nginx安装成功。
图2 测试访问Nginx
- 执行以下命令,安装Nginx。
- 修改Nginx配置文件,以配置Nginx作为Elasticsearch和OpenSearch集群的反向代理。
- 编辑Nginx配置文件。
vi /etc/nginx/nginx.conf
- 增加一个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; } } - 重新加载配置。
nginx -s reload
- 查看启动状态,确保Nginx服务状态为active。
systemctl status nginx.service
- 编辑Nginx配置文件。
步骤四:使用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即表示配置成功。