elk筆記1--搭建elk集羣
最近由於需要,筆者繼續研究使用es,以下將es的安裝和使用記錄在此處,以便於後續查閱.
1 需求說明
-
軟件版本說明
名稱 版本 下載地址 參考文檔 jdk jdk-8u201-linux-x64(1.8.0_171)
推薦 jdk1.8.0_144登錄官網下載 oracle java 官網 elk elk6.8.8 elk downloads elk Document -
服務器規劃
ip host 用途 端口說明 192.168.2.21 es01 es
kibana9200
5601
9300192.168.2.22 es02 es 9200
9300192.168.2.23 es03 es 9200
9300
2 環境準備
2.1 配置java 環境
- 解壓tar包到制定位置
- 在~/.bashrc 中添加變量,並保存
export JAVA_HOME=/home/xg/soft/jdk1.8.0_201 export PATH=$PATH:$JAVA_HOME/bin
- java -version 確認java 環境配置成功
2.2 更新系統配置
- 設置hosts
在/etc/hosts 中加入以下內容:192.168.2.21 es01 192.168.2.22 es02 192.168.2.23 es03 ``
- 固定網卡ip
將/etc/network/interfaces更改爲如下內容
三臺服務器上都需要配置以便於固定ip,防止系統重啓時候ip變化,hwaddress 可以根據需要更改即可.source /etc/network/interfaces.d/* # for elk auto ens33 iface ens33 inet static address 192.168.2.21 #注意es02爲22, es03爲23 netmask 255.255.255.0 gateway 192.168.2.1 hwaddress 00:0c:29:40:81:21 #注意es02爲22, es03爲23
- 更新 limts.conf 參數
在 cat /etc/security/limits.conf 中更新nofile和nproc的值,筆者這裏根據以前使用經驗設置了一個夠elk啓動的值,也可以根據需要設置更大的值.# for elk * soft nofile 65536 * hard nofile 65536 * soft nproc 5000 * hard nproc 5000
- 更新 sysctl.conf 參數
在 /etc/sysctl.conf 中添加如下內容# for elk vm.max_map_count=655360
2.3 elasticserach|kibana 配置更改
以下爲筆者的目錄配置, 若使用直接複製筆者的配置,參考筆者新建對應的目錄.
xg@xg:~/soft/bigdata$ tree -L 1
.
├── data
├── elk6.8.8
├── log
└── shell
xg@xg:~/soft/bigdata$ tree -L 2
.
├── data
│ └── es6.8.8
├── elk6.8.8
│ ├── elasticsearch-6.8.8
│ └── kibana-6.8.8-linux-x86_64
├── log
│ └── es6.8.8
└── shell
├── keep_kibana_running.sh
├── nohup.out
├── old
└── updown_elk6.8.8.sh
更改elasticsearch配置文件 elasticsearch.yml
- 更改集羣名稱
cluster.name: es6.8
三個節點必須保證相同的集羣名稱 - 更改節點名稱
node.name: node-1
es02,es03 分別爲node-1,node-3 - 更改節點數據存儲位置
path.data: /home/xg/soft/bigdata/data/es6.8.8 - 更改節點日誌存儲位置
path.logs: /home/xg/soft/bigdata/log/es6.8.8 - 更改host對應的ip
network.host: 0.0.0.0
此處若對所有機器開放訪問權限則爲0.0.0.0,也可以指定網段 - 更改port
http.port: 9200
建議統一爲9200,若不設置的話,9200端口被佔用後就會自動向後飄移一個端口
更改kibana配置文件 kibana.yml
- 更改kibana 名稱
server.name: “Kibana-6.8” - 更改es hosts
elasticsearch.hosts: [“http://localhost:9200”]
此處默認,也可以指定
3 測試結果
- 啓動腳本
#!/bin/bash help() { cat <<_EOF Help function: bash updown_elk.sh help|es|kibana|stopall _EOF } elk_es() { cd /home/xg/soft/bigdata/elk6.8.8/elasticsearch-6.8.8/bin/ ES_JAVA_OPTS="-Xms500m -Xmx500m" ./elasticsearch & } elk_kibana() { sleep 20 cd /home/xg/soft/bigdata/elk6.8.8/kibana-6.8.8-linux-x86_64/bin ./kibana & } elk_stop() { ps -ef|grep -v grep|grep node|grep 'src/cli'|awk '{print $2}'|xargs kill sleep 5 jps|grep -v grep|grep -i elasticsearch|awk '{print $1}'|xargs kill } case "$1" in help) help ;; es) elk_es ;; kibana) elk_kibana ;; stopall) elk_stop ;; *) echo "Unknown command: $1" help exit 1 ;; esac
- 啓動效果
查看集羣狀態如下:
http://192.168.2.21:9200/_cluster/health
monitor查看集羣狀態如下:
4 注意事項
- 集羣中多個節點運行在同一個機器上
若ABC 3個機器上分別部署了clusterA的a1b1c1 3個節點,直接設置相同的集羣名稱,正常情況下可能會無法加入,此時需要設置discovery.seed_hosts 屬性,
例如clusterA的master節點 transport.tcp.port 爲 9301,則依次在seed_hosts中添加ip:9301即可,如下所示:
[“10.120.75.102:9301”,“10.120.75.103:9301”,“10.120.75.107:9301”]
重啓節點的時候,新節點就會通過seed_hosts總的ip:9301和現有的集羣通信,並加入到集羣中 - 節點屬性
node.attr.rack: r2(設置機架屬性)
node.attr.zone: zone-b (設置區域屬性) - es集羣節點設置
es節點包括master,data,ingest,coordinating
node.master: true(默認值)
node.data: true(默認值)
node.data: true(默認值)
當設置master和data都爲false後,節點就爲ingest類型,即爲client節點;
當master、data和ingest都爲false,該節點就爲coordinating節點;
對於小集羣可以不區分各個節點類型,較大集羣,如20個節點以上的,建議區分節點的類型。
5 說明
筆者測試系統爲vm下的Ubuntu 1604 server