注:本文在Es7.x版本单节点能顺利启动并使用情况下进行。

Es7.x官方文档集群相关

准备
  • 创建目录elasticsearch-colony并赋予es用户及用户组权限
    mkdir /usr/local/elasticsearch-colonychown -R es:es /usr/local/elasticsearch-colony/
  • 切换到es用户
    su - es
  • 使用cp file1 file2 -a命令将Es解压版的文件夹复制三份至之前准备的目录中
    1.主节点
cp /usr/local/elasticsearch-7.5.1 /usr/local/elasticsearch-colony/elasticsearch-7.5.1-master

2.节点1

cp /usr/local/elasticsearch-7.5.1 /usr/local/elasticsearch-colony/elasticsearch-7.5.1-node1

3.节点2

cp /usr/local/elasticsearch-7.5.1 /usr/local/elasticsearch-colony/elasticsearch-7.5.1-node2
  • 切换到elasticsearch-colony下使用mkdir directory...创建master(主节点),node-1(节点1),node-2(节点2)三个目录并在三个目录下分别创建data和logs文件夹
mkdir -p  master/data master/logs node-1/data node-1/logs node-2/data node-2/logs

1.data:存放es中的数据

2.logs:存放es的日志

如果使用解压版(.zip)(.tar.gz)的es,解压之后data和logs会默认保存在$ES_HOME的子文件夹里,如果将这些重要文件保存在默认位置,在升级到新版本的es时,很有可能将其删除。所以在生产环境中使用时,要记得更改data和log的位置。

修改每个节点的配置文件
  • es主要有三个配置文件
    1.elasticsearch.yml 用于配置Elasticsearch
    2.jvm.options 用于配置Elasticsearch JVM设置
    3.log4j2.properties 用于配置Elasticsearch日志记录
  • 主要需要修改es的子目录中config目录下的elasticsearch.yml文件,分别修改三个节点的配置文件,下面是主节点的修改:
vi /usr/local/elasticsearch-colony/elasticsearch-7.5.1-master/config/elasticsearch.yml

相关配置如下:

1.指定集群的名称,如果想让节点在同一集群上,这个值要设为一致

cluster.name: Avengers

Elasticsearch集群是一组具有相同cluster.name属性的节点,启动es实例时,就是在启动节点(node),当节点加入或离开群集时,群集会自动重新组织以在可用节点之间平均分配数据。

2.指定节点的名称,保证节点的唯一性,这个值不能相同

node.name: ironman

3.指定节点为主节点,默认为true,默认集群中第一个节点为master,如果挂了会重新选举master

node.master: true

4.是否允许节点存储数据,默认为true

node.data: true

5.指定存放data和logs的目录

path.data: /usr/local/elasticsearch-colony/master/data

path.logs: /usr/local/elasticsearch-colony/master/logs

6.指定网关地址,指向当前设备的ip

network.host: 0.0.0.0

7.指定http访问的端口,默认为9200端口

http.port: 9200

默认情况下es会自动选取9200到9299之间的端口,如果启动时9200被占用会自动使用9201以此类推,为了更好的管理还是手动配置一下。

8.指定tcp访问端口,供es内部通信使用,默认为9300端口,默认时的机制与http.port相同

transport.tcp.port: 9300

9.手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算

cluster.initial_master_nodes: ["ironman"]

  • 两个从节点的修改主要列举和主节点不同配置的地方:
    相关配置如下:
    1.是否为主节点
    node.master: false2.设置集群发现,应包含集群中所有master节点
    discovery.seed_hosts: ["127.0.0.1:9300"]3.无需设置cluster.initial_master_nodes4.http.port,transport.tcp.port不能重复
    5.path.datapath.logs分别指向各自的文件夹

在查阅资料过程中发现很多地方都提到了这一个配置discovery.zen.ping.unicast.hosts通过查阅官方文档发现在7.x的版本中与集群相关的配置主要就是上面配置的cluster.initial_master_nodesdiscovery.seed_hosts。其中前者需要在所有可以成为主节点的节点配置中配置,并且同一集群中该配置中的列表必须相同,且列表中的节点名称必须与node.name配置的名称相同。后者则是为其他节点提供符合主节点资格的节点列表。

启动
  • 分别启动三个es实例,在三个节点文件夹的bin目录下
    1../elasticsearch -d后台启动
    2.启动完成可以通过ps -ef | grep elastic命令查看进程
    3.通过curl -X GET 127.0.0.1:9200/_cat/health?v命令查看Es节点的情况若status为green,则说明es集群启动成功。