ElasticSearch 7.1.1 集群環境搭建


1. 集群簡介

三台機器,均用於保存數據且可被選為master節點
服務版本
服務 版本
elasticsearch 7.1.1
jdk 1.8

1. 創建elsearch用戶

不建議直接使用root用戶,所以此處新建 elsearch用戶

1.1 添加用戶組及用戶,配置密碼

# 添加用戶組
groupadd elsearch

# 添加用戶
useradd -m -g elsearch elsearch

# 配置密碼
passwd elsearch

1.2 sudo權限

visudo

# 在最后增加
elsearch ALL=(ALL)  NOPASSWD:ALL

2. 下載 & 解壓

注意目錄權限為:elsearch

# 下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz

# 解壓
tar xvf elasticsearch-7.1.1-linux-x86_64.tar.gz

# 軟鏈
ln -s elasticsearch-7.1.1 elasticsearch

3. 配置

此配置需同步到所有機器

3.1 修改 elasticsearch.yml

配置說明:

參數 說明
cluster.name 集群名稱,相同名稱為一個集群
node.name 節點名稱,集群模式下每個節點名稱唯一
node.master 當前節點是否可以被選舉為master節點,是:true、否:false
node.data 當前節點是否用於存儲數據,是:true、否:false
path.data 索引數據存放的位置
path.logs 日志文件存放的位置
bootstrap.memory_lock 需求鎖住物理內存,是:true、否:false
bootstrap.system_call_filter SecComp檢測,是:true、否:false
network.host 監聽地址,用於訪問該es
network.publish_host 可設置成內網ip,用於集群內各機器間通信
http.port es對外提供的http端口,默認 9200
discovery.seed_hosts es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點
cluster.initial_master_nodes es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master
http.cors.enabled 是否支持跨域,是:true,在使用head插件時需要此配置
http.cors.allow-origin "*" 表示支持所有域名

詳情配置:

vim config/elasticsearch.yml

# 增加如下:
cluster.name: es-test

node.name: node-3
node.master: true
node.data: true

path.data: /data/es/data
path.logs: /data/es/logs

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

network.host: 0.0.0.0
# 有些時候並不需要此配置,但我這里需要..
network.publish_host: 10.240.0.8

http.port: 9200
discovery.seed_hosts: ["10.100.0.7", "10.100.0.8"]
cluster.initial_master_nodes: ["10.100.0.8"]

http.cors.enabled: true
http.cors.allow-origin: "*"

3.2 修改 jvm.options

vim config/jvm.options

# 按需修改如下內存大小即可
-Xms4g
-Xmx4g

3.3 新建索引數據與日志數據目錄

# 新建目錄,注意目前權限
mkdir -p /data/es/data
mkdir -p /data/es/logs

4. 啟動

cd bin/
./elasticsearch

# 后台運行
./elasticsearch -d

初次啟動時,可能會遇到如下圖的幾個錯誤,一一解決即可。

4.1. 每個進程最大同時打開文件數太小
vim /etc/security/limits.conf

# 增加如下: 
# elsearch為用戶名
elsearch  soft nofile 65536
elsearch  hard nofile 65536

# 保存之后,退出當前用戶重新登錄生效,可用如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn
4.2. 申請鎖定內存失敗
vim config/elasticsearch.yml

# 修改,不鎖定內存
bootstrap.memory_lock: false
4.3. 最大虛擬內存太小
vim /etc/sysctl.conf

# 增加如下:
vm.max_map_count=262144

# 修改完之后,執行如下命令生效
sysctl -p
4.4. 因為Centos6不支持SecComp,而ES5.2.0默認bootstrap.system_call_filter為true進行檢測,所以導致檢測失敗,失敗后直接導致ES不能啟動
vim config/elasticsearch.yml

設置為false
bootstrap.system_call_filter: false
4.5. 最大線程數太小
vim /etc/security/limits.conf

# 增加如下: 
# elsearch為用戶名
elsearch  soft nproc 4096
elsearch  hard nproc 4096

# 保存之后,退出當前用戶重新登錄生效,可用如下命令查看是否修改成功
ulimit -Hu
ulimit -Su
4.6 network.host 監聽 0.0.0.0 之后無法組成集群

報錯(警告):

始終只有一個節點:

解決:

vim config/elasticsearch.yml

# 增加如下配置,用於集群內各機器間通信:
network.publish_host: 10.240.0.8

參考

  1. https://www.2cto.com/net/201905/810168.html
  2. http://www.sohu.com/a/301517999_683048
  3. https://www.jianshu.com/p/169acce2ce25
  4. https://www.cnblogs.com/xiaoheike/p/5750222.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM