1.相关概念
1.1单机&集群
单机Elasticearch服务,往往都有最大的服务负载能力,超过这个阙值就会出现单点故障、服务不用、并发能力受限等问题,所以生产环境中服务都是集群中。
1.2 集群Custer
一个集群使用过多个es服务组合在一起,共同持有数据并提供服务。
一个es集群有一个唯一的名称标识,这个标识默认是“Elasticearch”,因为一个节点只能通过指定某个集群的名称来加入集群。
1.3节点node
集群中包含多个不同的es服务(部署在不同的服务器上),原则上一个es节点放在一台服务器上,保证es服务的高可用。
2.Linux环境下部署Elasticearch
2.1Linux环境下单机部署
**部署es需要有Java环境**
离线版软件下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0
2.1.1安装
//解压压缩包
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz
//修改文件名称为es
mv elasticsearch-7.8.0 es
2.1.2 创建es用户
由于es不允许直接使用root用户操作,所以这里需要新创建一个用户 es
//添加用户 es
useradd es
//设置es的密码
pssword es
//如果需要删除用户,则输入
userdel -r es
//修改es文件持有者
[root@iZbp184fm312kii5qdw5w3Z ~]# chown -R es:es es
[root@iZbp184fm312kii5qdw5w3Z ~]# ll
总用量 311640
-rw-r--r-- 1 root root 319112561 1月 27 16:36 elasticsearch-7.8.0-linux-x86_64.tar.gz
drwxr-xr-x 9 es es 4096 6月 15 2020 es
2.1.3 修改配置文件
修改es/config/elasticsearch.yml文件
# 加入如下配置
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
修改/etc/security/limits.conf
# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
修改/etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
修改/etc/sysctl.conf
# 在文件中增加下面内容
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360
重新加载
sysctl -p
2.1.4启动
使用 ES 用户启动
在es的安装目录下的/bin执行
./elasticearch
出现错误是因为es软件由于安全问题,不允许使用root用户启动!
//切换es用户
su es
//执行命令
bin/elasticsearch
启动成功,验证
2.2 集群部署
修改配置
#加入如下配置
#集群名称
cluster.name: cluster-es
#节点名称,每个节点的名称不能重复
node.name: node-1
#ip 地址,每个节点的地址不能重复
network.host: 172.24.29.147
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9201
#head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["172.24.29.146:9300","172.24.29.147:9300","172.24.29.145:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
修改完之后启动es01节点验证
修改node.name: node-1为 node-x 和对应的ip并启动,验证