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地址都可以