在不同 VPS 上设置 ElasticSearch 集群

Setting up ElasticSearch cluster on different VPS

我想制作一个包含两个节点的基本 ElasticSearch 集群。

我正在使用两个 VPS 服务器:

VPS1 有 public IP 地址:5.xxx.96.233

VPS2 有 public IP 地址:5.xxx.96.234

这是 elasticsearch.yml 文件的样子(除了默认设置):

VPS1:

cluster.name: mx-cluster
node.name: mx-node-1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["5.xxx.96.233", "5.xxx.96.234"]

VPS2:

cluster.name: mx-cluster
node.name: mx-node-2
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["5.xxx.96.233", "5.xxx.96.234"]

ufw 规则设置为允许从其他服务器访问端口 9300。

VPS1:

9300                       ALLOW       5.xxx.96.234

VPS2:

9300                       ALLOW       5.xxx.96.233

现在一个 ElasticSearch 实例在它们上面 运行,但是它无法发现彼此来创建一个集群。

两台服务器都是新的,我只在上面安装了 ElasticSearch。

我不确定这是否可行或是否可以这样做,我无法在网上找到答案所以我发布了这个。

以下 2 个配置问题解决了这个问题,我只让 1 个主节点 mx-node-1 也充当 data-node,另一个节点 mx-node-1 只充当 data-node.

主节点和数据节点配置(mx-node-1)

cluster.name: mx-cluster
node.name: mx-node-2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["5.255.96.233"]
logger.org.elasticsearch.discovery: TRACE --> note used this to debug issue

数据节点(mx-node-2)配置

cluster.name: mx-cluster
node.name: mx-node-2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
node.master: false --> note this would mark it as data node only
discovery.seed_hosts: ["5.255.96.233"]
logger.org.elasticsearch.discovery: TRACE