搭建Elasticearch集群

93 阅读3分钟

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

image.png

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 127 16:36 elasticsearch-7.8.0-linux-x86_64.tar.gz
drwxr-xr-x 9 es   es        4096 615 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

image.png 出现错误是因为es软件由于安全问题,不允许使用root用户启动!

//切换es用户
su es
//执行命令
bin/elasticsearch

image.png 启动成功,验证

image.png

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节点验证

image.png 修改node.name: node-1为 node-x 和对应的ip并启动,验证

image.png