以下內容是個人的隨手記錄,就是介紹了下簡單的使用;
歡迎大家吐槽,接下來就是激情的時刻,準備好啤酒飲料礦泉水,開整!!!
elasticsearch集羣搭建
- 搭建環境Ubuntu18.04
- 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
注意:以上內容是個人使用的隨手記錄, 就是介紹了下簡單的使用
歡迎大家來吐槽,準備好瓜子飲料礦泉水,開整!!!
---------------------------------------------------------------------------------------