我正在尝试使Elasticsearch集群具有两个节点。 Google中的大多数文档都涉及较低版本的集群,因为它们谈论的是discover.zen.ping.unicast.hosts
,而7.4则没有。
两个节点是AWS EC2实例。
每个Elasticservice运行正常,但我不认为它们是集群的。 (_cluster/health
和_nodes
API)。
我在/etc/hosts
中进行了更改。
elasticsearch.yml
代表节点1:
# ---------------------------------- Cluster -----------------------------------
cluster.name: dsm-001
# ------------------------------------ Node ------------------------------------
node.name: node-1
# ----------------------------------- Paths ------------------------------------
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# ---------------------------------- Network -----------------------------------
#network.host: 192.168.0.1
http.port: 9200
# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["node-1","node-2"]
cluster.initial_master_nodes: ["node-1","node-2"]
elasticsearch.yaml
代表节点2:
# ---------------------------------- Cluster -----------------------------------
cluster.name: dsm-001
# ------------------------------------ Node ------------------------------------
node.name: node-2
# ----------------------------------- Paths ------------------------------------
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# ---------------------------------- Network -----------------------------------
#network.host: 192.168.0.1
http.port: 9200
# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["node-1","node-2"]
cluster.initial_master_nodes: ["node-1","node-2"]
答案 0 :(得分:1)
虽然cluster.initial_master_nodes
属性要求的名称与实际的Elasticsearch节点名称(“ node-1”和“ node-2”)相匹配,但discovery.seed_hosts
属性要求的是主机名或地址(例如“ server1” ,即192.168.1.12“),而不是Elasticsearch节点名称。这是您首先需要解决的问题。
但是,当您在AWS中运行节点时,应该安装EC2 Discovery插件来帮助您查找 您的Elasticsearch节点的种子地址(请参见Elasticsearch参考文档:EC2 Discovery Plugin)
使用Elasticsearch 7重写了集群协调层,使您的集群更加健壮,同时使节点的首次启动极为重要。 cluster.initial_master_nodes
属性仅在首次启动节点时使用。如果这样做,并且您的节点未加入预期的集群(并且很可能创建了自己的集群),则需要停止节点,删除数据目录(以清除集群状态),然后重新启动它。
答案 1 :(得分:0)
如果丹尼尔的答案对您不起作用,请添加以下内容。
---------------------------Network-----------------------------------
network.host: Your Public DNS (IPv4) // For example, ec2-1-1-1-1.ap-northeast-1.compute.amazonaws.com
----------------------------Discovery------------------------------------
discovery.seed_hosts : [" ip" , "ip" ] // like Daniel said.
discovery.seed_providers: ec2