注:本文在Es7.x版本单节点能顺利启动并使用情况下进行。
Es7.x官方文档集群相关
准备
- 创建目录elasticsearch-colony并赋予es用户及用户组权限
mkdir /usr/local/elasticsearch-colony
chown -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: false
2.设置集群发现,应包含集群中所有master节点discovery.seed_hosts: ["127.0.0.1:9300"]
3.无需设置cluster.initial_master_nodes
4.http.port
,transport.tcp.port
不能重复
5.path.data
与path.logs
分别指向各自的文件夹
在查阅资料过程中发现很多地方都提到了这一个配置
discovery.zen.ping.unicast.hosts
通过查阅官方文档发现在7.x的版本中与集群相关的配置主要就是上面配置的cluster.initial_master_nodes
与discovery.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集群启动成功。