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