系列教程丨用 Docker 探索開源軟件 —— Elasticsearch(一)

系列教程丨用 Docker 探索開源軟件 —— Elasticsearch(一)

每週一、三、五,與您不見不散!


Docker 的一大優點是可以讓您快速使用它來試用應用程序,而無需直接在開發人員的計算機上安裝它。如果您不想在自己的計算機上安裝 Java 或 erlang 等運行時環境,那麼您就可以不安裝它們,因為容器封裝了所有依賴項,並在刪除時可以不留下任何痕跡。今天,我將帶來本系列第三篇文章,用 Docker 探索開源軟件 —— Elasticsearch,它將給我們一個機會來看看 docker-compose 是如何運用的。

注:為了理解本教程中的命令,我建議您使用 Play with Docker,它可以讓您在瀏覽器中運行文章中涉及到的所有命令。

點擊下列文章標題,回顧本系列文章的往期內容:


啟動一個運行 Elasticsearch 的新容器


如果您只想嘗試在單節點中運行 Elasticsearch,那麼我們可以使用下面所示的“docker run”命令來實現。

我們公開了 9200 端口(用於 REST API),並使用官方的 elasticsearch 6.4.2 鏡像(點擊文尾處“閱讀原文”下載該鏡像)設置單節點集群(使用環境變量)。我還將展示如何使用 volume 來存儲索引數據。

docker run -d -p 9200:9200 -e "discovery.type=single-node" \
-v esdata:/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:6.4.2

我們用“curl”運行的所有 Elasticsearch 命令在這個容器上都可以正常工作。但是對於本教程,我將使用“docker-compose”來創建集群。


使用 Docker Compose 創建 Elasticsearch 集群


使用docker-compose,我們可以以YAML格式聲明構成應用程序的所有容器。對於每個容器來說,我們還可以配置其應該設置的環境變量、所需的任何 volume 以及定義允許服務相互通信的網絡。

如下所示,這是 docker-compose.yml 文件的第一個版本。它定義了一個簡單的雙節點集群,集群中的每個節點都有一個 volume,這樣我們的索引就可以獨立於容器而存在,並且可以在升級後繼續存在(稍後我們將進行升級)。請注意,我們正在使用的是 Elasticsearch 6.4.1版本。

version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
container_name: elasticsearch
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
container_name: elasticsearch2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet

volumes:
esdata1:
driver: local
esdata2:
driver: local

networks:
esnet:

要在本地下載該 compose 文件作為 docker-compose-v1.yml,您可以使用以下命令:

curl https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/c4fa64575bc854e34a2506291bd14033caf5e9b6/docker-compose-v1.yml > docker-compose-v1.yml

現在我們可以使用“docker-compose up”命令啟動容器,並創建所有必要的資源,如網絡和 volume。 我們使用“-d”讓其在後臺運行,就像我們使用“docker run”一樣:

docker-compose -f docker-compose-v1.yml up -d

檢查群集運行狀況


我們在其中一個容器上公開了 9200 端口,允許我們使用以下請求來查詢集群運行狀況:

curl http://localhost:9200/_cluster/health?pretty


分享到:


相關文章: