ES官網:www.elastic.co/cn/ Docker安裝ES官網教程:www.elastic.co/guide/en/el… ES配置文件詳解(參考博客):www.cnblogs.com/sunxucool/p…html
1.jdk安裝:es的安裝時必需要有java的環境,因此咱們要先安裝jdk,版本咱們選擇1.8,這樣對es的版本兼容更多,若是之後想換其餘的es版本比較方便java
(1)在Linux系統下安裝jdk1.8,使用MobaXterm做爲鏈接工具,由於他能夠直接選擇文件夾進行文件的上傳,咱們這裏上傳jdk-8u171-linux-x64.tar.gz(目前下載jdk好像須要註冊Oracle帳號)node
①在usr下建立java文件夾linux
mkdir java
web
②將上傳的壓縮包移動到/usr/java下docker
mv jdk-8u171-linux-x64.tar.gz /usr/java
bootstrap
③解壓文件vim
tar zxvf jdk-8u121-linux-x64.tar.gz
跨域
具體操做後的效果以下:bash
④使用vi編輯器,配置java環境變量
sudo vi /etc/profile
在文件最後,添加以下配置,設置java環境變量
#Java Env
export JAVA_HOME=/usr/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
複製代碼
效果以下:
⑤退出vi編輯器,使環境變量設置當即生效: source /etc/profile
⑥查看jdk版本: java -version
2.安裝ES:安裝ES能夠從官網下載壓縮包進行安裝,可是目前docker比較流行方便,拉取相對應的鏡像,因此採用docker進行ES集羣的安裝,ES的版本咱們選擇5.6.16,須要注意的是ES的集羣至少須要三臺才能達到集羣效果
(1)拉取ES鏡像:
docker pull elasticsearch:5.6.16
命令執行結束後,可使用docker images 查詢鏡像是否下載成功,以下
(2)使用docker安裝ES時,爲了方便之後修改配置文件相關的東西,咱們使用文件掛載的方式啓動docker,因此咱們要準備一些文件夾存放數據,而後對文件夾的權限進行修改,爲啓動ES作準備
①建立docker文件掛載目錄,並開發端口通訊
進入勽目錄下: cd /usr
建立ES配置的文件夾: mkdir -p jayes/ES/config
進入ES目錄: cd ES
建立ES數據存放的文件
mkdir data1
mkdir data2
mkdir data3
複製代碼
開發端口通訊:後續ES配置文件中所須要的端口,否則ES之間沒法進行通訊
firewall-cmd --add-port=9300/tcp
firewall-cmd --add-port=9301/tcp
firewall-cmd --add-port=9302/tcp
複製代碼
將data一、data二、data3文件夾開啓777權限,防止啓動ES時出現沒有權限操做文件夾的報錯: chmod 777 data1 data2 data3
(3)建立ES的配置文件,由於以後使用docker啓動可使用目錄掛載,因此咱們在/usr/jayes/ES/config下建立相應的配置文件便可(配置文件中是做者的服務器IP,使用時須要根據實際狀況修改)
es-master.yml
#集羣名
cluster.name: jay-es
#節點名
node.name: jay-master
#設置綁定的ip地址,能夠是ipv4或ipv6的,默認爲0.0.0.0,指綁定這臺機器的任何一個ip
network.bind_host: 0.0.0.0
#設置其它節點和該節點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址
network.publish_host: 118.25.153.239
#設置對外服務的http端口,默認爲9200
http.port: 9200
#設置節點之間交互的tcp端口,默認是9300
transport.tcp.port: 9300
#是否容許跨域REST請求
http.cors.enabled: true
#容許 REST 請求來自何處
http.cors.allow-origin: "*"
#節點角色設置
node.master: true
node.data: true
#有成爲主節點資格的節點列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]
#集羣中一直正常運行的,有成爲master節點資格的最少節點數(默認爲1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2
複製代碼
es-nodeone.yml
#集羣名
cluster.name: jay-es
#節點名
node.name: jay-nodeone
#設置綁定的ip地址,能夠是ipv4或ipv6的,默認爲0.0.0.0,指綁定這臺機器的任何一個ip
network.bind_host: 0.0.0.0
#設置其它節點和該節點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址
network.publish_host: 118.25.153.239
#設置對外服務的http端口,默認爲9200,該節點爲9201
http.port: 9201
#設置節點之間交互的tcp端口,默認是9300,該es的ip端口爲9301
transport.tcp.port: 9301
#是否容許跨域REST請求
http.cors.enabled: true
#容許 REST 請求來自何處
http.cors.allow-origin: "*"
#節點角色設置
node.master: true
node.data: true
#有成爲主節點資格的節點列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]
#集羣中一直正常運行的,有成爲master節點資格的最少節點數(默認爲1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2
複製代碼
es-nodetwo.yml
#集羣名
cluster.name: jay-es
#節點名
node.name: jay-nodetwo
#設置綁定的ip地址,能夠是ipv4或ipv6的,默認爲0.0.0.0,指綁定這臺機器的任何一個ip
network.bind_host: 0.0.0.0
#設置其它節點和該節點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址
network.publish_host: 118.25.153.239
#設置對外服務的http端口,默認爲9200,該節點爲9202
http.port: 9202
#設置節點之間交互的tcp端口,默認是9300,該es的ip端口爲9302
transport.tcp.port: 9302
#是否容許跨域REST請求
http.cors.enabled: true
#容許 REST 請求來自何處
http.cors.allow-origin: "*"
#節點角色設置
node.master: true
node.data: true
#有成爲主節點資格的節點列表
discovery.zen.ping.unicast.hosts: ["118.25.153.239:9300","118.25.153.239:9301","118.25.153.239:9302"]
#集羣中一直正常運行的,有成爲master節點資格的最少節點數(默認爲1)
# (totalnumber of master-eligible nodes / 2 + 1)
discovery.zen.minimum_master_nodes: 2
複製代碼
(3)調高JVM線程數限制數量:ES對JVA的線程數有最低要求,若是不配置的話在啓動時會報錯,報出以下錯誤: bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] ①修改配置文件:sysctl.conf vim /etc/sysctl.conf
②在配置文件加入以下配置值 vm.max_map_count=262144
③啓用修改後的配置 sysctl -p
(4)啓動ES集羣
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9200:9200 -p 9300:9300 -v /usr/jayes/ES/config/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data1:/usr/share/elasticsearch/data --name ES01 docker.elastic.co/elasticsearch/elasticsearch:5.6.16
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9201:9201 -p 9301:9301 -v /usr/jayes/ES/config/es-nodeone.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data2:/usr/share/elasticsearch/data --name ES02 docker.elastic.co/elasticsearch/elasticsearch:5.6.16
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -di -p 9202:9202 -p 9302:9302 -v /usr/jayes/ES/config/es-nodetwo.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/jayes/ES/data3:/usr/share/elasticsearch/data --name ES03 docker.elastic.co/elasticsearch/elasticsearch:5.6.16
複製代碼
注意:設置-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 是由於/etc/elasticsearch/jvm.options 默認jvm最大最小內存是2G,啓動容器後 可用docker stats命令查看 (5)檢測ES集羣搭建是否成功 http://118.25.153.239:9200/_cat/nodes?pretty
a.查看全部容器
docker ps
b.進入es容器
docker exec -it 容器名or容器id /bin/bash
c.卸載x-pack插件
./bin/elasticsearch-plugin remove x-pack
d.刪除配置文件(因爲配置文件保護,須要手動刪除)
cd /usr/share/elasticsearch/config
rm -rf x-pack
複製代碼
(6)安裝ES圖形化操做工具:elasticsearch-head ①拉取elasticsearch-head鏡像 docker pull mobz/elasticsearch-head:5
②使用docker啓動 docker run -di -p 9100:9100 --name es-manager mobz/elasticsearch-head:5