Elasticsearch使用系列-Docker搭建Elasticsearch集群
- 2022 年 2 月 16 日
- 筆記
- elasticsearch
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環境
參照://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.打開連接
Google瀏覽器訪問://extb.cqttech.com/search/elasticsearch%2520head
根據提示下載安裝Google雙核瀏覽器
下面的位置打開使用
輸入集群中任意一個es地址都可以