elasticsearch集羣搭建

以下內容是個人的隨手記錄,就是介紹了下簡單的使用;

歡迎大家吐槽,接下來就是激情的時刻,準備好啤酒飲料礦泉水,開整!!!


elasticsearch集羣搭建

  1. 搭建環境Ubuntu18.04
  2. elasticsearch 6.4.0

一、服務器配置

服務器IP 服務端口 集羣通信端口 是否可以爲master節點 是否可以爲data存儲節點
192.168.1.50 9200 9300 true true
192.168.1.50 9201 9301 true true
192.168.1.50 9202 9302 true true

 

二、環境搭建

- 創建用戶及目錄
useradd -d /home/elasticsearch es

- 切換至es用戶
su es

- 下載elasticsearch6.4.0版本並解壓縮
cd /usr/local/src
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz 
tar -zxvf elasticsearch-6.4.0.tar.gz

- 複製三份,命名爲elasticsearch_node1、elasticsearch_node2、elasticsearch_node3、
cp -rp elasticsearch-6.4.0 elasticsearch_node1
cp -rp elasticsearch-6.4.0 elasticsearch_node2
cp -rp elasticsearch-6.4.0 elasticsearch_node3

- 刪除多餘的tar包,節省磁盤空間
rm -rf elasticsearch-6.4.0.tar.gz
rm -rf elasticsearch-6.4.0

- 創建data和log目錄分別用於放置數據和日誌
mkdir -p /data/node{1,2,3}
mkdir -p /data/node{1,2,3}

- 創建pidfile存放的路徑
mkdir -p /tmp/pidfile/

三、修改配置搭建集羣 

# 配置文件的修改以node1的爲例,另外兩個只需要修改索引數據及日誌文件路徑和http端口及tcp端口即可。
- vim /usr/local/src/elasticsearch_node1/config/elasticsearch.yml

#集羣的名稱
cluster.name: hao-es

#節點名稱,其餘兩個節點分別爲node-2 和node-3
node.name: node-1

#指定該節點是否有資格被選舉成爲master節點,默認是true,es是默認集羣中的第一臺機器爲master,如果這臺機掛了就會重新選舉master
node.master: true

#允許該節點存儲數據(默認開啓)
node.data: true

#索引數據的存儲路徑
path.data: /home/elasticsearch/data/node1

#日誌文件的存儲路徑
path.logs: /home/elasticsearch/log/node1

#設置爲true來鎖住內存。因爲內存交換到磁盤對服務器性能來說是致命的,當jvm開始swapping時es的效率會降低,所以要保證它不swap
bootstrap.memory_lock: true

#綁定的ip地址(0.0.0.0)
network.host: 192.168.1.50

#設置對外服務的http端口,默認爲9200
http.port: 9200

# 設置各個節點間交互的tcp端口,默認是9300 
transport.tcp.port: 9300

# Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試連接到運行在同一臺服務器上的其他節點。
#這提供了自動集羣體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每個值的形式應該是host:port或host
#(如果沒有設置,port默認設置會transport.profiles.default.port 回落到transport.tcp.port)。
# 請注意,IPv6主機必須放在括號內。默認爲127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: ["192.168.1.50:9300", "192.168.1.50:9301", "192.168.1.50:9302"]

#如果沒有這種設置,遭受網絡故障的集羣就有可能將集羣分成兩個獨立的集羣 - 分裂的大腦 - 這將導致數據丟失
discovery.zen.minimum_master_nodes: 1

# 注意:
如果有一個節點: 以下兩項配置均爲false
node.master: false
node.master: false
則此節點爲協調節點、項目使用負載均衡我們需要連接此節點
# 配置文件的修改以node1的爲例,另外兩個節點一致。
vim /usr/local/src/elasticsearch_node1/config/jvm.options

# 默認是1g官方建議對jvm進行一些修改,不然很容易出現OOM,參考官網改參數配置最好不要超過內存的50% 
# 我的服務器設置的堆棧內存爲256m, 可自行更改大小
-Xms256m
-Xmx256m

四、啓動和停止elasticsearch服務腳本

vim /usr/local/src/start.sh
# 其中-d表示後臺運行,-p指定進城pidfile文件的存放路徑:
/usr/local/src/elasticsearch_node1/bin/elasticsearch -d -p /tmp/pidfile/node1
/usr/local/src/elasticsearch_node2/bin/elasticsearch -d -p /tmp/pidfile/node2
/usr/local/src/elasticsearch_node3/bin/elasticsearch -d -p /tmp/pidfile/node3

vim /usr/local/src/stop.sh
ps aux | grep elasticsearch | grep -v grep | awk '{print $2}' | xargs kill -9

# 授權sh腳本
chmod 755 start.sh stop.sh

# 啓動腳本
./start.sh

# 停止腳本
./stop.sh

# 查看日誌,服務啓動是否報錯
tail -f /data/log/node1/hao-es.log
tail -f /data/log/node2/hao-es.log
tail -f /data/log/node3/hao-es.log

五、調用API查看節點狀態

curl -XGET 'http://192.168.1.50:9200/_cat/nodes?pretty'

 

六、使用elasticsearch-head查看集羣狀態

# 安裝nodejs

mkdir -p /usr/local/src/nodejs

cd /usr/local/src/nodejs

wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz

tar -xvf node-v10.15.1-linux-x64.tar.xz

cd node-v10.15.1-linux-x64/bin

# 查看二進制文件是否ok
./node -v 

# 將nodejs添加到環境變量
vim /etc/profile

export NODEJS_HOME=/usr/local/src/nodejs/node-v10.15.1-linux-x64
export PATH=$NODEJS_HOME/bin:$PATH
source /etc/profile

# 安裝elasticsearch-head

cd /usr/local/src/
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install

# 如果遇到[email protected]報錯,請忽略掉
npm install [email protected] --ignore-scripts

# 啓動服務默認的地址是localhost:9100
npm run start 

七、elasticsearch集羣搭建成功後啓動錯誤處理

# 錯誤1
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

# 錯誤2
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# 錯誤3
ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked

 八、啓動錯誤解決方案

# 第一步: 
vim /etc/security/limits.conf

*           soft    nofile          65536
*           hard    nofile          65536
*           soft    nproc           65536
*           hard    nproc           65536
*           soft    memlock         unlimited
*           hard    memlock         unlimited

# 第二步:
vim /etc/sysctl.conf

vm.max_map_count=655360
vm.swappiness=0

# 第三步使配置生效有兩種方式:
3.1 使配置生效: 
切換至root用戶然後前換回當前用戶
su
su es
sudo sysctl -p

3.1.1 查看配置是否生效、全部都是65536則配置生效
ulimit -Hn
ulimit -Sn

3.2 重啓服務器使配置生效: 
reboot

 


注意:以上內容是個人使用的隨手記錄, 就是介紹了下簡單的使用

歡迎大家來吐槽,準備好瓜子飲料礦泉水,開整!!!

---------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章