在 Docker 环境中使用 instances.yml
为 Elasticsearch 创建节点证书时,ip
字段的设置需要根据 Elasticsearch 的实际网络配置来选择适合的 IP 地址。以下是不同场景的配置指南。
1. 获取容器的实际 IP
在 Docker 网络中,每个容器都会有一个内部 IP。可以通过以下命令查看 Elasticsearch 容器的 IP 地址:
示例:
输出类似于:
2. 设置 instances.yml
的 ip
根据集群架构选择合适的 IP 配置:
单节点
如果 Elasticsearch 是单节点运行:
多节点集群
在多节点集群中,每个节点需要在 instances.yml
文件中定义一个条目,包含容器的内部 IP 和 DNS 名称(服务名)。
示例:
混合网络(Docker 和外部访问)
如果 Elasticsearch 需要同时支持 Docker 内部网络和宿主机或外部访问,可以为 ip
和 dns
字段同时添加多个条目。
示例:
动态 IP 情况
如果容器的 IP 是动态分配的(非固定),可以使用 Docker 的服务名称(DNS 名称)代替具体的 IP。
示例:
3. 创建证书
使用配置好的 instances.yml
文件生成证书:
生成的证书通常包括每个节点的 .p12
文件,用于 SSL 配置。
4. 配置 Docker 容器中的 Elasticsearch
将生成的证书挂载到 Docker 容器中,并在 elasticsearch.yml
中配置。
Docker Compose 示例
5. 测试证书配置
验证节点间通信是否正常:
检查集群健康状态:
总结
ip
设置:使用容器的内部 IP(如172.20.0.x
)或服务名(dns
)。- 多场景支持:为
ip
和dns
配置多个值以支持内部和外部访问。 - 证书生成:使用
elasticsearch-certutil
工具根据instances.yml
生成证书。 - 挂载证书:将证书挂载到容器,并在
elasticsearch.yml
配置中引用。
通过这些步骤,您可以正确配置 Docker 环境下的 Elasticsearch 节点和证书。