Elasticsearch使用系列-Docker搭建Elasticsearch叢集

包子wxl發表於2022-02-16

Elasticsearch使用系列-ES簡介和環境搭建

Elasticsearch使用系列-ES增刪查改基本操作+ik分詞

Elasticsearch使用系列-基本查詢和聚合查詢+sql外掛

Elasticsearch使用系列-.NET6對接Elasticsearch

Elasticsearch使用系列-Docker搭建Elasticsearch叢集

一、系統環境準備

這裡準備三臺機器,系統均為CentOS7.9:172.16.2.84,172.16.2.85,172.16.2.86

1.調高jvm執行緒數限制

#修改sysctl.conf
vi /etc/sysctl.conf

#修改max_map_count調大,如果沒有這個設定,則新增一行
vm.max_map_count=262144

#改完儲存後, 執行下面命令讓sysctl.conf檔案生效
sysctl -p

2.安裝docker環境

參照:https://www.cnblogs.com/wei325/p/15139701.html

二、docker掛載方式搭建叢集

1.配置檔案

es1配置檔案 elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
# 配置es的叢集名稱,es會自動發現在同一網段下的es,如果在同一網段下有多個叢集,就可以用這個屬性來區分不同的叢集
cluster.name: elasticsearch
# 節點名稱
node.name: node-1
# 指定該節點是否有資格被選舉成為node
node.master: true
# 指定初始主節點
cluster.initial_master_nodes: ["172.16.2.84:9300"]
# 指定該節點是否儲存索引資料,預設為true
node.data: true
# 設定繫結的ip地址還有其他節點和該節點交換的ip地址,本機ip
network.host: 0.0.0.0
network.publish_host: 172.16.2.84 # 指定http埠 http.port: 9200 # 設定節點間互動的tcp埠,預設是9300 transport.tcp.port: 9300 # 設定叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點 discovery.zen.ping.unicast.hosts: ["172.16.2.84:9300","172.16.2.84:9300","172.16.2.85:9300"] # 如果要使用head,那麼需要解決跨域問題,使head外掛可以訪問es http.cors.enabled: true http.cors.allow-origin: "*"

es2配置檔案 elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
# 配置es的叢集名稱,es會自動發現在同一網段下的es,如果在同一網段下有多個叢集,就可以用這個屬性來區分不同的叢集
cluster.name: elasticsearch
# 節點名稱
node.name: node-2
# 指定該節點是否有資格被選舉成為node
node.master: true
# 指定初始主節點
cluster.initial_master_nodes: ["172.16.2.84:9300"]
# 指定該節點是否儲存索引資料,預設為true
node.data: true
# 設定繫結的ip地址還有其他節點和該節點交換的ip地址,本機ip
network.host: 0.0.0.0
network.publish_host: 172.16.2.85 # 指定http埠 http.port: 9200 # 設定節點間互動的tcp埠,預設是9300 transport.tcp.port: 9300 # 設定叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點 discovery.zen.ping.unicast.hosts: ["172.16.2.84:9300","172.16.2.85:9300","172.16.2.85:9300"] # 如果要使用head,那麼需要解決跨域問題,使head外掛可以訪問es http.cors.enabled: true http.cors.allow-origin: "*"

es3配置檔案 elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
# 配置es的叢集名稱,es會自動發現在同一網段下的es,如果在同一網段下有多個叢集,就可以用這個屬性來區分不同的叢集
cluster.name: elasticsearch
# 節點名稱
node.name: node-3
# 指定該節點是否有資格被選舉成為node
node.master: true
# 指定初始主節點
cluster.initial_master_nodes: ["172.16.2.84:9300"]
# 指定該節點是否儲存索引資料,預設為true
node.data: true
# 設定繫結的ip地址還有其他節點和該節點交換的ip地址,本機ip
network.host: 0.0.0.0
network.publish_host: 172.16.2.86 # 指定http埠 http.port: 9200 # 設定節點間互動的tcp埠,預設是9300 transport.tcp.port: 9300 # 設定叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點 discovery.zen.ping.unicast.hosts: ["172.16.2.84:9300","172.16.2.84:9300","172.16.2.86:9300"] # 如果要使用head,那麼需要解決跨域問題,使head外掛可以訪問es http.cors.enabled: true http.cors.allow-origin: "*"

注意:配置冒號後面都有一個空格

2.建立掛載目錄

為了防止容器刪掉資料丟失,需要進行資料檔案掛載

#建立es配置目錄
mkdir /home/es/config -p
#建立es資料目錄
mkdir /home/es/data 
#建立es外掛目錄
mkdir /home/es/plugins
#授權目錄
chmod -R 777 /home/es

然後把上面的elasticsearch.yml配置檔案分別放到三臺機器的 /home/es/config目錄下

3.docker啟動命令

三臺機器分別啟動執行命令

1.拉取映象

#拉取es映象,指定版本
docker pull elasticsearch:7.16.3

2.啟動es

3臺機器分別執行以下命令,注意,先啟動主節點,這裡是172.16.2.84機器。

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d --name es7.16.3 -p 9200:9200 -p 9300:9300 -v /home/es/data:/usr/share/elasticsearch/data -v /home/es/plugins:/usr/share/elasticsearch/plugins -v /home/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.16.3

-e ES_JAVA_OPTS="-Xms256m -Xmx256m"  因為測試機器,把記憶體設為256m

-d 後臺執行

--name 給啟動的容器起名稱

-p 9200:9200 -p 9300:9300 對映docker的埠,9200是http的埠,9300是內部通訊的埠

-v 目錄掛載

elasticsearch:7.16.3  es映象名稱,用這個映象啟動為容器

 

 

叢集搭建完成!

三、es head外掛檢視叢集狀態

kibana也能檢視es的叢集狀態,但是沒那麼直觀,這裡安裝head瀏覽器外掛檢視

1.開啟連線

 谷歌瀏覽器訪問:http://extb.cqttech.com/search/elasticsearch%2520head

 根據提示下載安裝谷歌雙核瀏覽器

 

 下面的位置開啟使用

 

 

 輸入叢集中任意一個es地址都可以

 

相關文章