在我之前的文章:
-
Elastic Stack 8.0 安裝 - 保護你的 Elastic Stack 現在比以往任何時候都簡單
-
Elastic:使用 Docker 安裝 Elastic Stack 8.0 并開始使用
我詳細描述了如何安裝單節點的 Elastic Stack,在今天的教程中,我詳述如何安裝3個節點的 Elasticsearch 集群,我將使用 Docker 來進行部署,
首先,我們使用如下的命令來創建第一個 Elasticsearch 節點:
docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.0
docker run -e ES_JAVA_OPTS="-Xms1g -Xmx1g" --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.0.0

在啟動的程序中,我們可以看到如下的輸出:

如果你看不到上面的輸出,請向上翻動,直到能找到像上面的輸出,
等 Elasticsearch 啟動后,我們可以使用如下的命令來進行檢查:
curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200

由于是自簽名證書,所以,我們可以使用 --insecure 來進行上面的操作,當然,我們也可以仿照我之前在文章 “Elastic:使用 Docker 安裝 Elastic Stack 8.0 并開始使用” 中介紹的那樣:
curl -X GET --cacert ./http_ca.crt -u elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/
我們需要拷貝出來證書 http_ca.crt,請注意上面的密碼是在上面 Elasticsearch 啟動時顯示的密碼,
從上面的輸出中,我們可以看出來,我們已經成功地啟動了第一個節點,我們可以使用如下的命令來進行查看:
curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
$ curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
172.24.0.2 56 30 0 0.04 0.03 0.04 cdfhilmrstw * 2b7bdc81eb56
我們接下來使用如下的命令來創建第二個節點:
docker run -e ENROLLMENT_TOKEN="eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjQuMC4yOjkyMDAiXSwiZmdyIjoiZTQzNTQyMWJlNTRiMGM2ZGJjYWU1M2NlNDBjMWQwYTFhNWM3YWRmMmEzZTJlZTc2OTQyMjc3YTZhYzdjZDBlNyIsImtleSI6IjR1SG9GSDhCYVhsVEQ2N1U4QlBuOjRkNDduNmd5UUFTcHBvWG5zbjNUckEifQ==" -e ES_JAVA_OPTS="-Xms1g -Xmx1g" --name es-node02 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.0.0

在上面,我們使用了之前第一個節點啟動時的集群 enrollment token,同時我們省去了埠的 mapping,
等這個節點完全啟動后,我們再次使用如下的命令來進行查看:
curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
$ curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
172.24.0.2 21 42 1 0.03 0.10 0.06 cdfhilmrstw * 2b7bdc81eb56
172.24.0.3 11 42 1 0.03 0.10 0.06 cdfhilmrstw - 3f97cfe38a4e
這個時候,我們可以看到有兩個節點的集群了,
我們使用同樣的方法來啟動第三個節點,運行如下的命令:
docker run -e ENROLLMENT_TOKEN="eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjQuMC4yOjkyMDAiXSwiZmdyIjoiZTQzNTQyMWJlNTRiMGM2ZGJjYWU1M2NlNDBjMWQwYTFhNWM3YWRmMmEzZTJlZTc2OTQyMjc3YTZhYzdjZDBlNyIsImtleSI6IjR1SG9GSDhCYVhsVEQ2N1U4QlBuOjRkNDduNmd5UUFTcHBvWG5zbjNUckEifQ==" -e ES_JAVA_OPTS="-Xms1g -Xmx1g" --name es-node03 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.0.0
我們再次運行上面的命令來進行查看:
curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
$ curl --insecure --user elastic:qTfj3Vfm+6RT1VrCbmwV https://localhost:9200/_cat/nodes
172.24.0.4 54 55 15 1.41 0.42 0.17 cdfhilmrstw - c689910d1448
172.24.0.3 34 55 5 1.41 0.42 0.17 cdfhilmrstw - 3f97cfe38a4e
172.24.0.2 60 55 5 1.41 0.42 0.17 cdfhilmrstw * 2b7bdc81eb56
這個時候,我們可以看到有三個節點的集群,我們可以通過 docker 查看運行的容器:

我們可以看到有三個容器正在運行中,
我們接下來啟動 Kibana:
docker run -e SERVER_PUBLICBASE_URL="http://liuxg.com:5601" --name kib-01 --net elastic -p 5601:5601 -it docker.elastic.co/kibana/kibana:8.0.0
我們可以看到如下的輸出:

在上面,我定義了 SERVER_PUBLICBASE_URL,盡管這個是不必要的,你需要在你的電腦中的 /etc/hosts 進行定義喜歡的域名,
如上所示,它輸出一個鏈接 http://0.0.0.0:5601/?code=038556 讓我們在瀏覽器中輸入:

上面的 enrollment token 在第一個 Elasticsearch 啟動后的有效時間為30分鐘,超過30分鐘的時間上述 token 將會無效,如果這種情況發生,我們可以可以使用如下的方法來生成一個新的 token:

同樣地節點 enrollment token 的有些時間也是30分鐘,你可以使用如下的方法來進行生成:
bin/elasticsearch-create-enrollment-token -s node

我們接下來在 Kibana 的界面輸入我們之前的 elastic 用戶的密碼:

這樣我們就進入到 Kibana 的界面,我們可以通過如下的方法來查看創建的三個節點的集群:
如果我們想清理目前已經創建的集群,我們可以做如下的動作,我們首先查看已經創建的容器:
docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6eb0fc34ee9c docker.elastic.co/kibana/kibana:8.0.0 "/bin/tini -- /usr/l…" 22 minutes ago Up 22 minutes 0.0.0.0:5601->5601/tcp kib-01
c689910d1448 docker.elastic.co/elasticsearch/elasticsearch:8.0.0 "/bin/tini -- /usr/l…" 27 minutes ago Up 27 minutes 9200/tcp, 9300/tcp es-node03
3f97cfe38a4e docker.elastic.co/elasticsearch/elasticsearch:8.0.0 "/bin/tini -- /usr/l…" 32 minutes ago Up 32 minutes 9200/tcp, 9300/tcp es-node02
2b7bdc81eb56 docker.elastic.co/elasticsearch/elasticsearch:8.0.0 "/bin/tini -- /usr/l…" 50 minutes ago Up 50 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es-node01
我們停止所有的容器:
$ docker stop kib-01
kib-01
$ docker stop es-node03
es-node03
$ docker stop es-node02
es-node02
$ docker stop es-node01
es-node01
我們可以使用如下的命令來徹底洗掉容器及網路:
$ docker network rm elastic
elastic
$ docker rm es-node01
es-node01
$ docker rm es-node02
es-node02
$ docker rm es-node03
es-node03
這樣我們就釋放了所有的資源,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/430276.html
標籤:其他
