Docker 是一種容器化技術,它提供了一種輕量化、靈活、可移植的容器解決方案,使得部署和應用容器之間的轉換更加容易。在本文中,我們將介紹如何使用 Docker 安裝 Elasticsearch(下稱 ES)集群。
要安裝 ES 集群,首先需要安裝 Docker 和 Docker Compose。可以在 Docker 官網上下載適合你的操作系統的安裝包。
接下來,我們創建一個包含 ES 集群所需的所有配置文件的目錄。
$ mkdir es-cluster $ cd es-cluster #創建一個包含 docker-compose.yml 文件和 elasticsearch.yml 文件的 conf 目錄 $ mkdir conf $ touch conf/docker-compose.yml conf/elasticsearch.yml
然后,我們需要編輯 docker-compose.yml 文件:
version: '2.2' services: es01: image: elasticsearch:7.7.0 environment: discovery.type: single-node ES_JAVA_OPTS: "-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - es01:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - esnet depends_on: - es02 - es03 es02: image: elasticsearch:7.7.0 environment: discovery.type: single-node ES_JAVA_OPTS: "-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - es02:/usr/share/elasticsearch/data networks: - esnet depends_on: - es01 - es03 es03: image: elasticsearch:7.7.0 environment: discovery.type: single-node ES_JAVA_OPTS: "-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 volumes: - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - es03:/usr/share/elasticsearch/data networks: - esnet depends_on: - es01 - es02 volumes: es01: es02: es03: networks: esnet:
在上面的代碼中,我們定義了三個 ES 服務(es01、es02 和 es03)。每個服務都使用 elasticsearch:7.7.0 鏡像,并指定了所需的環境變量和掛載的卷。
現在,我們需要編輯 elasticsearch.yml 文件。我們可以使用以下配置文件:
cluster.name: es-cluster node.name: ${HOSTNAME} network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: es01,es02,es03 cluster.initial_master_nodes: es01,es02,es03
在上面的代碼中,我們定義了 ES 集群的名稱、節點名稱、主機名、端口號以及種子主機和集群的初始主節點。
現在可以使用 docker-compose 命令啟動 ES 集群了:
$ docker-compose up -d
如果需要擴展節點,可以使用以下命令:
$ docker-compose up -d --scale es01=3
在上面的命令中,我們將 es01 服務的實例數擴展到 3。
最后,我們可以使用以下命令查看集群狀態:
$ curl -X GET "http://localhost:9200/_cat/health?v"
通過以上步驟,我們就成功構建了一個 ES 集群。這樣做可以讓我們更加方便地管理和擴展 ES。