Kibana 中的高可用性与负载均衡
本页面提供了关于通过在多个实例间分发流量来扩展 Kibana、访问多个负载均衡部署以及配置多 Elasticsearch 节点高可用性的指南。
有关后台任务和警报框架的扩展考量,请参阅 Kibana 任务管理器:性能和扩展指南和 Kibana 警报:性能和扩展。
本节中提供的配置仅适用于自主管理(self-managed)部署。当多个 Kibana 实例属于同一部署时,编排系统会自动应用必要的设置。
要运行连接到同一 Elasticsearch 集群的多个 Kibana 实例,您需要调整配置。有关每个设置的详细信息,请参阅 Kibana 配置参考。
在 Elastic Cloud Hosted、Elastic Cloud Enterprise 或 Elastic Cloud on Kubernetes 的同一部署中添加多个 Kibana 实例时,编排器会自动应用所需的配置,无需手动设置。
使用文件追加器(file appender)时,目标文件必须是唯一的
logging: appenders: default: type: file fileName: /unique/path/per/instance对于属于同一集群或部署的所有 Kibana,这些设置必须完全相同
xpack.security.encryptionKey xpack.security.authc.* xpack.security.session.* xpack.reporting.encryptionKey xpack.encryptedSavedObjects.encryptionKey xpack.encryptedSavedObjects.keyRotation.decryptionOnlyKeys- 解密会话信息
- 认证配置
- 会话配置
- 解密报告
- 解密保存的对象
- 保存对象的加密密钥轮换(如有)
警告如果认证配置不匹配,每个 Kibana 实例中来自未识别提供程序的会话将会在该实例的常规会话清理期间被删除。类似地,会话配置的不一致也会导致意外的会话注销。这也适用于由同一 Elasticsearch 实例支持并共享同一 kibana.index 的任何 Kibana 实例,即使它们不在同一个负载均衡器后面。
可以通过在命令行中使用
-c标志来使用独立的配置文件bin/kibana -c config/instance1.yml bin/kibana -c config/instance2.yml
要从同一个浏览器访问多个负载均衡的 Kibana 部署,请显式将同一集群内的所有 Kibana 实例的 xpack.security.cookieName 设置为相同的值,并为其他集群使用不同的值。
这可以防止 Kibana 实例之间的 Cookie 冲突,确保无缝的高可用性,并在实例发生故障时保持会话处于活动状态。
在此上下文中,Kibana 集群或部署是指连接到同一 Elasticsearch 集群的多个 Kibana 实例。
可以将 Kibana 配置为连接到同一集群中的多个 Elasticsearch 节点。在某个节点不可用的情况下,Kibana 会透明地连接到一个可用的节点并继续运行。对可用主机的请求将以轮询(round robin)方式进行路由(仅开发工具 Dev Tools 除外,它只会连接到第一个可用的节点)。
在 kibana.yml 中
elasticsearch.hosts:
- http://elasticsearch1:9200
- http://elasticsearch2:9200
相关配置包括 elasticsearch.sniffInterval、elasticsearch.sniffOnStart 和 elasticsearch.sniffOnConnectionFault。这些配置可用于在集群调整大小时自动更新主机列表。参数可以在 Kibana 配置参考中找到。
当 Elasticsearch 前面没有负载均衡器或反向代理时,此配置非常有用。如果已部署负载均衡器来在 Elasticsearch 实例之间分发流量,则应将 Kibana 配置为改为连接到该负载均衡器。
在编排部署中,Kibana 会自动配置为通过负载均衡服务(例如 ECE 或 ECH 中的平台代理,或 ECK 中的 Kubernetes 服务)连接到 Elasticsearch。