1. 程式人生 > >ES叢集部署調優及分分_彩原始碼出售外掛安裝

ES叢集部署調優及分分_彩原始碼出售外掛安裝

系統:分分_彩原始碼出售 Q1157880099 ES版本:6.4.0 伺服器三臺 172.16.0.8 172.16.0.6 172.16.0.22

部署jdk 解壓jdk放在/data目錄,/data/jdk 配置環境變數,/etc/proifle裡面加入如下

export JAVA_HOME=/data/jdk export PATH=PATH:PATH:JAVA_HOME/bin export CLASSPATH=.:JAVAHOME/lib/tools.jar:JAVA_HOME/lib/tools.jar:JAVA_HOME/lib/dt.jar:$CLASSPATH

source /etc/profile生效,檢視版本java -version

部署ES叢集,三臺機器同樣的操作 1、新增普通使用者啟動es useradd elasticsearch

2、安裝ES

tar xf elasticsearch-6.4.0.tar.gz -C /data/ mv /data/elasticsearch-6.4.0/ /data/elasticsearch mkdir /data/elasticsearch/startlogs

3、配置elasticsearch.yml檔案內容

cp /data/elasticsearch/config/elasticsearch.yml /data/elasticsearch/config/elasticsearch.yml.bak cat elasticsearch.yml

cluster.name: escluster node.name: es1 node.master: true node.data: true path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/logs bootstrap.memory_lock: true bootstrap.system_call_filter: false http.port: 9200 network.host: 0.0.0.0 discovery.zen.minimum_master_nodes: 2 discovery.zen.ping_timeout: 3s discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300”,“172.16.0.6:9300”,“172.16.0.22:9300”]

三臺機器不一樣的配置點如下

node.name: es1 ===》172.16.0.8 node.name: es2 ===》172.16.0.6 node.name: es3 ===》172.16.0.22 node.master: true ===》172.16.0.8 node.master: true ===》172.16.0.6 node.master: false ===》172.16.022

4、配置檔案重點引數解析 (1)cluster.name 叢集名字,三臺叢集的叢集名字都必須一致

(2)node.name 節點名字,三臺ES節點字都必須不一樣

(3)node.master 該節點是否有資格選舉為master,預設第一臺啟動的為master角色,如果這臺伺服器宕機會選舉新的master,官方推薦master數設定為叢集數/2+1,master伺服器主要管理叢集狀態,負責元資料處理,比如索引增加刪除分片分配等,資料儲存和查詢都不會走主節點,壓力較小,jvm記憶體可分配較低一點,但主一宕則整個叢集不可用,所以需要多個master做後備

(4)node.data 儲存索引資料,三臺都設為true即可

(5)bootstrap.memory_lock: true 鎖住實體記憶體,不使用swap記憶體,有swap記憶體的可以開啟此項

(6)discovery.zen.minimum_master_nodes:2 表示叢集最少的master數,如果叢集的最少master資料少於指定的數,將無法啟動

(7)discovery.zen.ping_timeout: 3000s 自動發現拼其他節點超時時間

(8)discovery.zen.ping.unicast.hosts: [“172.16.0.8:9300”,“172.16.0.6:9300”,“172.16.0.22:9300”] 設定叢集的初始節點列表,叢集互通埠為9300

5、jvm調優 vim /data/elasticsearch/config/jvm.options

-Xms1g 修改為 ===> -Xms2g -Xmx1g 修改為 ===> -Xmx2g

設定為實體記憶體一半最佳,可根據伺服器記憶體去選擇調,這裡我Master設為2G 其他兩臺ES設為3G

6、設定許可權 chown -R elasticsearch: /data/elasticsearch

7、作業系統調優(必須配置,否則ES起不來) 【1】記憶體優化 在/etc/sysctl.conf新增如下內容

fs.file-max=655360 vm.max_map_count=655360

sysctl -p生效

解釋: (1)vm.max_map_count=655360 系統最大開啟檔案描述符數

(2)vm.max_map_count=655360 限制一個程序擁有虛擬記憶體區域的大小

【2】修改vim /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536
  • soft nproc 65536
  • hard nproc 65536
  • soft memlock unlimited
  • hard memlock unlimited

解釋: (nofile)最大開開啟檔案描述符 (nproc)最大使用者程序數 (memlock)最大鎖定記憶體地址空間

【3】修改/etc/security/limits.d/90-nproc.conf 將1024修改為65536

  •      soft    nproc     1024     修改前
    
  •      soft    nproc     65536   修改後
    

ctrl +d從進終端 ulimit -a檢視

8、編寫es啟動指令碼

#!/bin/bash ROOT=/data

USER=elasticsearch

NAME=elasticsearch

DIR=ROOT/{ROOT}/{NAME} BIN="DIR/bin/{DIR}/bin/{NAME}" PID=DIR/.{DIR}/.{NAME}.pid LOG=DIR/startlogs/{DIR}/startlogs/{NAME}.log

start(){ ps -ef |grep DIRgrepvgrepPROCSTAT={DIR}|grep -v grep PROC_STAT=? if [ ${PROC_STAT} != 0 ] then su - USERc"{USER} -c "{BIN} > ${LOG} 2>&1 &" sleep 1 PROC_PID=ps -ef|grep ${DIR}|grep -v grep|awk '{print $2}' su - ${USER} -c “echo ${PROC_PID} > PID"elseecho"{PID}" else echo "{NAME} start fail,please check it!” fi }

stop(){ if [ -f $PID ] then kill $(cat $PID) rm -rf ${PID} else PROC_PID=ps -ef |grep ${DIR}|grep -v grep|awk '{print $2}' if [ -n ${PROC_PID} ] then kill PROCPIDecho"{PROC_PID} echo "{NAME} had close." else echo “${NAME} maybe not run ,please check it!” fi fi } status(){ ps -ef |grep ${DIR}|grep -v grep }

case “1"instart)start;;stop)stop;;status)status;;restart)stopsleep5start;;)echo"Usage:/etc/init.d/1" in start) start ;; stop) stop ;; status) status ;; restart) stop sleep 5 start ;; *) echo "Usage: /etc/init.d/{NAME} {start|stop|restart}” exit 1 esac

exit 0

檢視啟動

netstat -tlnp | egrep ‘9200|9300’ service elasticsearch status

9、監控API

GET /_cat

/_cat/health /_cat/nodes /_cat/master /_cat/indices /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/thread_pool /_cat/segments /_cat/segments/{index}

(3)檢視所有節點 curl -XGET ‘http://172.16.0.8:9200/_cat/nodes?pretty’ ES叢集部署調優及HEAD外掛安裝 解釋: (mdi)表示為master節點 (*)表示為主master

二、部署HEAD外掛(我在ES主機1部署) 1、安裝node.js、npm和git工具 yum -y install nodejs npm git

2、下載head外掛到/data目錄 cd /data/ git clone git://github.com/mobz/elasticsearch-head.git

4、進入到head外掛程式目錄安裝head所需的庫和第三方框架 cd /data/elasticsearch-head npm install

5、修改head目錄的配置檔案/data/elasticsearch-head/_site/app.js 找到如下內容:

解釋: 可以修改為任意一臺叢集中的地址,這裡我設了master的地址,這裡表示head外掛將通過172.16.0.8訪問es叢集中的任意一個節點

6、修改es配置檔案,允許head跨域名訪問es,需要重啟

http.cors.enabled: true http.cors.allow-origin: “*”

解釋: (http.cors.enabled: true)表示開啟head跨域名訪問支援,預設為false (http.cors.allow-origin: “”) 表示允許跨域名允許的域名地址,表示所有 此部只需要在安裝head外掛的es伺服器上新增即可

7、重啟es service elasticsearch restart

8、啟動head外掛服務 cd /data/elasticsearch-head/ npm run start ES叢集部署調優及HEAD外掛安裝 後臺行運nohup npm run start &> /dev/null & ES叢集部署調優及HEAD外掛安裝