概述
本文主要以elasticsearch-7.10.2-linuxx86_64版本为例,学习ES集群安装。
安装部署
1.前置准备
- 修改文件限制
vi /etc/security/limits.conf
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
reboot
- 调整进程数
vi /etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
root soft nproc unlimited
- 调整虚拟机内存&最大并发连接
vi /etc/sysctl.conf
vm.max_map_count=655360
fs.file-max=655360
sysctl -p
若之前未有过ElasticSearch的安装,在安装集群版之前,建议先了解一下单机版创建。集群版无非就是拷贝了几套单机版的安装包,配置稍加改
-
集群环境准备
2.下载安装包
官方下载地址: https://www.elastic.co/cn/downloads/elasticsearch
以7.10.2为例:
命令下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linuxx86_64.tar.gz
3. 创建集群目录
每一台服务器都需要设置。
#创建集群存储主目 录
mkdir /soft/elk
#解压到集群目录下
tar -xzvf elasticsearch-7.10.2-linux-x86_64.tar.gz -C /soft/elk
#切换到目 录下
cd /soft/elk
#修改解压后的文件名为 elasticsearch, (为了方便区分根据节点名)
ln -s elasticsearch-7.10.2/ elasticsearch
# 创建数据存储目录
mkdir -p /soft/elk/data
# 创建日 志存储目录
mkdir -p /soft/elk/logs
注:这里为了区分是es的多个节点:
第1台的目录文件夹为 elasticsearch-a
第2台的目录文件夹为 elasticsearch-b
第3台的目录文件夹为 elasticsearch-c
注:安装包不用下载多次可以使用SCP命令传输到另外两台示例:
scp -r elasticsearch-7.4.0-linux-x86_64.tar.gz root@192.168.2.192:/soft/elk
4. 节点node-a配置
进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件
#配置es的集群名称,同一个集群中的多个节点使用相同的标识
#如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es-cluster
#节点名称
node.name: node-a
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#数据存储路径
path.data: /soft/elk/data
#日志存储路径
path.logs: /soft/elk/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
#通过指定相同网段的其他节点会加入该集群中0.0.0.0任意IP都可以访问elasticsearch
network.host: 192.168.2.191
#对外提供服务的http端口,默认为9200
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
#es7.x之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.2.191:9301","192.168.2.192:9301","192.168.2.193:9301"]
#es7.x之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a","node-b","node-c"]
#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将
其设置为false
bootstrap.memory_lock: false
#是否支持跨域
http.cors.enabled: true
#*表示支持所有域名
http.cors.allow-origin: "*"
5. 节点node-b配置
进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件
#配置es的集群名称,同一个集群中的多个节点使用相同的标识
#如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es-cluster
#节点名称
node.name: node-b
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#数据存储路径
path.data: /soft/elk/data
#日志存储路径
path.logs: /soft/elk/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
#通过指定相同网段的其他节点会加入该集群中0.0.0.0任意IP都可以访问elasticsearch
network.host: 192.168.2.192
#对外提供服务的http端口,默认为9200
http.port: 9201
#内部节点之间沟通端口
transport.tcp.port: 9301
#es7.x之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.2.191:9301","192.168.2.192:9301","192.168.2.193:9301"]
#es7.x之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a","node-b","node-c"]
#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
bootstrap.memory_lock: false
#是否支持跨域
http.cors.enabled: true
#*表示支持所有域名
http.cors.allow-origin: "*"
6. 节点node-c配置
进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件
#配置es的集群名称,同一个集群中的多个节点使用相同的标识
#如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es-cluster
#节点名称
node.name: node-c
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#数据存储路径
path.data: /soft/elk/data
#日志存储路径
path.logs: /soft/elk/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
#通过指定相同网段的其他节点会加入该集群中0.0.0.0任意IP都可以访问elasticsearch
network.host: 192.168.2.193
#对外提供服务的http端口,默认为9200
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
#es7.x之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.2.191:9301","192.168.2.192:9301","192.168.2.193:9301"]
#es7.x之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-a","node-b","node-c"]
#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
bootstrap.memory_lock: false
#是否支持跨域
http.cors.enabled: true
#*表示支持所有域名
http.cors.allow-origin: "*"
7. 启动用户与赋权
由于ES限制不能使用root 用户启动,这里与单机版安装时使用了相同的elasticsearch用户创建用户: elasticsearch
adduser elk
设置用户密码,需要输入两次
passwd elk
注:由于是伪集群,都在同一台服务器,所以3个节点目录都需要赋权,多台服务器的话,都需要操作
chown -R elk:elk /soft/elk/elasticsearch
chown -R elk:elk /soft/elk/elasticsearch-7.10.2
chown -R elk:elk /soft/elk/data
chown -R elk:elk /soft/elk/logs
8.启动集群环境
启动之前,建议针对实际使用场景,设置合适的JVM内存,详见附录
#切换到用户
su elk
#切换到a节点
cd /soft/elk/elasticsearch/bin
#控制台启动命令
. /elasticsearch
#后台启动命令
#./elasticsearch -d
同启动a节点一致,分别再次启动 b节点、 C节点
注:启动小妙招,先不要着急后台启动,直接使用 ./elasticsearch 启动看一下是否报错。若出现报错,可以到前一篇文章单机版ES搭建中找下,列举出来了常见的几种启动问题。
访问网址:http://192.168.2.191:9200/
{
"name" : "node-a",
"cluster_name" : "my-es-cluster",
"cluster_uuid" : "lUrx9FBDTty_ZqQaWBwZSQ",
"version" : {
"number" : "7.10.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"build_date" : "2021-01-13T00:42:12.435326Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}