1. 程式人生 > 其它 >Elasticsearch docker安裝

Elasticsearch docker安裝

Elasticsearch 安裝

我們之前已經使用過elasticsearch了,這裡不再對它進行介紹了,直接下載安裝,本章節將採用Docker安裝,不過在市面上還有很多采用linxu安裝,關於linux安裝,已經提供了安裝手冊,這裡就不講了。

(1)docker映象下載

docker pull elasticsearch:5.6.8

(2)安裝es容器

docker run -di --name=changgou_elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

9200埠(Web管理平臺埠) 9300(服務預設埠)

瀏覽器輸入地址訪問:http://192.168.211.132:9200/

(3)開啟遠端連線

上面完成安裝後,es並不能正常使用,elasticsearch從5版本以後預設不開啟遠端連線,程式直接連線會報如下錯誤:

failed to load elasticsearch nodes : org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{5ttLpMhkRjKLkvoY7ltUWg}{192.168.211.132}{192.168.211.132:9300}]

我們需要修改es配置開啟遠端連線,程式碼如下:

登入容器

docker exec -it changgou_elasticsearch /bin/bash

檢視目錄結構 輸入: dir

root@07f22eb41bb5:/usr/share/elasticsearch# dir
NOTICE.txt  README.textile  bin  config  data  lib  logs  modules  plugins

進入config目錄

cd config

檢視檔案

root@07f22eb41bb5:/usr/share/elasticsearch/config# ls
elasticsearch.yml  log4j2.properties  scripts

修改elasticsearch.yml檔案

root@07f22eb41bb5:/usr/share/elasticsearch/config# vi elasticsearch.yml
bash: vi: command not found

vi命令無法識別,因為docker容器裡面沒有該命令,我們可以安裝該編輯器。

安裝vim編輯器

apt-get update
apt-get install vim

安裝好了後,修改elasticsearch.yml配置,如下圖:

vi elasticsearch.yml

修改如下圖:

同時新增下面一行程式碼:

cluster.name: my-application

重啟docker

docker restart changgou_elasticsearch

(4)系統引數配置

重啟後發現重啟啟動失敗了,這時什麼原因呢?這與我們剛才修改的配置有關,因為elasticsearch在啟動的時候會進行一些檢查,比如最多開啟的檔案的個數以及虛擬記憶體區域數量等等,如果你放開了此配置,意味著需要開啟更多的檔案以及虛擬記憶體,所以我們還需要系統調優

修改vi /etc/security/limits.conf ,追加內容 (nofile是單個程序允許開啟的最大檔案個數 soft nofile 是軟限制 hard nofile是硬限制 )

* soft nofile 65536
* hard nofile 65536

修改vi /etc/sysctl.conf,追加內容 (限制一個程序可以擁有的VMA(虛擬記憶體區域)的數量 )

vm.max_map_count=655360

執行下面命令 修改核心引數馬上生效

sysctl -p

重新啟動虛擬機器,再次啟動容器,發現已經可以啟動並遠端訪問

reboot

(5)跨域配置

修改elasticsearch/config下的配置檔案:elasticsearch.yml,增加以下三句命令,並重啟:

http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 192.168.211.132

其中:
http.cors.enabled: true:此步為允許elasticsearch跨域訪問,預設是false。
http.cors.allow-origin: "":表示跨域訪問允許的域名地址(表示任意)。

重啟

 docker restart changgou_elasticsearch

小提示:如果想讓容器開啟重啟,可以執行下面命令

docker update --restart=always 容器名稱或者容器id