docker中怎么搭建es集群

這篇文章將為大家詳細講解有關docker中怎么搭建es集群,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

堆龍德慶ssl適用于網站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

Linux系統(tǒng):

vm.max_map_count設置應在以下位置永久設置/etc/sysctl.conf

grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
#臨時生效
sysctl -w vm.max_map_count=262144
#永久生效
echo vm.max_map_count=262144>>/etc/sysctl.conf
sysctl -p

macOS 系統(tǒng):(Docker for Mac)

這個vm.max_map_計數(shù)必須在xyve虛擬機中設置:

#1.從命令行運行:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
#2.按enter鍵并使用“sysctl”進行配置vm.max_map_計數(shù):
sysctl -w vm.max_map_count=262144
#3.退出 screen 會話, 使用 Ctrl a d 健退出;

配置docker網絡(可選)

為了模擬我們的es是獨立服務器,我們可以使用docker網絡IP指定隔離;docker 創(chuàng)建容器時默認采用的bridge網絡,自行分配IP,不允許我們自己指定。而在實際部署中,我們需要指定容器IP,不允許其自行分配IP,尤其是搭建集群時,固定IP時必須的。所以我們可以創(chuàng)建自己的bridge網絡:mynet,創(chuàng)建容器的時候指定網絡為mynet并指定IP即可

#查看網絡模式 
docker network ls
#創(chuàng)建一個新的bridge網絡-mynet
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 mynet
#查看網絡詳情
docker network inspect mynet
#以后使用--network=mynet --ip 172.18.12.x 指定IP

創(chuàng)建es節(jié)點

我們這里以3從主3從為例,先創(chuàng)建3個Master節(jié)點,復制下方腳本可以方便快速的創(chuàng)建出3個master節(jié)點。

for port in $(seq 1 3); \
do \
mkdir -p ~/mydata/elasticsearch/master-${port}/config
mkdir -p ~/mydata/elasticsearch/master-${port}/data
chmod -R 777 ~/mydata/elasticsearch/master-${port}
cat <<EOF >~/mydata/elasticsearch/master-${port}/config/elasticsearch.yml
cluster.name: my-es #集群名稱,同一集群該值必須設置相同
node.name: es-master-${port} #該節(jié)點的名字
node.master: true #該節(jié)點有機會成為master節(jié)點
node.data: false #該節(jié)點可以存儲數(shù)據(jù)
network.host: 0.0.0.0
http.host: 0.0.0.0 #所有http均可訪問
http.port: 920${port}
transport.tcp.port: 930${port}
discovery.zen.ping_timeout: 10s #設置集群中自動發(fā)現(xiàn)其他節(jié)點時ping連接的超時時間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設置集群中的master節(jié)點的初始化列表,可以通過這些節(jié)點來自動發(fā)現(xiàn)其他新加入集群的節(jié)點,es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時的候選主節(jié)點,es7的新增配置
EOF
docker run --name es-master-${port} \
-p 920${port}:920${port} -p 930${port}:930${port} \
--network=mynet --ip 172.18.12.2${port} \
-e ES_JAVA_OPTS="-Xms300m -Xmx300m" \
-v ~/mydata/elasticsearch/master-${port}/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ~/mydata/elasticsearch/master-${port}/data:/usr/share/elasticsearch/data \
-v ~/mydata/elasticsearch/master-${port}/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.9.0 #發(fā)文時最新版本為7.9.0

done
#停止指定的es容器
docker stop $(docker ps -a |grep es-node-*|awk '{print $1}')
#刪除指定es容器
docker rm -f $(docker ps -a |grep es-node-*|awk '{print $1}')

另外再創(chuàng)建3個node節(jié)點,命令同上面相似,注意改node.master: false, node.data:true 即可;復制下面命令創(chuàng)建3個node節(jié)點。

for port in $(seq 4 6); \
do \
mkdir -p ~/mydata/elasticsearch/node-${port}/config
mkdir -p ~/mydata/elasticsearch/node-${port}/data
chmod -R 777 ~/mydata/elasticsearch/node-${port}
cat <<EOF >~/mydata/elasticsearch/node-${port}/config/elasticsearch.yml
cluster.name: my-es #集群名稱,同一集群該值必須設置相同
node.name: es-node-${port} #該節(jié)點的名字
node.master: false #該節(jié)點有機會成為master節(jié)點
node.data: true #該節(jié)點可以存儲數(shù)據(jù)
network.host: 0.0.0.0
http.host: 0.0.0.0 #所有http均可訪問
http.port: 920${port}
transport.tcp.port: 930${port}
discovery.zen.ping_timeout: 10s #設置集群中自動發(fā)現(xiàn)其他節(jié)點時ping連接的超時時間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設置集群中的master節(jié)點的初始化列表,可以通過這些節(jié)點來自動發(fā)現(xiàn)其他新加入集群的節(jié)點,es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時的候選主節(jié)點,es7的新增配置
EOF
docker run --name es-node-${port} \
-p 920${port}:920${port} -p 930${port}:930${port} \
--network=mynet --ip 172.18.12.2${port} \
-e ES_JAVA_OPTS="-Xms300m -Xmx300m" \
-v ~/mydata/elasticsearch/node-${port}/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ~/mydata/elasticsearch/node-${port}/data:/usr/share/elasticsearch/data \
-v ~/mydata/elasticsearch/node-${port}/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.9.0 #發(fā)文時最新版本為7.9.0

done

測試集群

由于我的宿主機IP為 192.168.0.100 ,所以我可以通過192.168.0.100訪問容器暴露出來的es服務;

http://192.168.0.100:9202/_cat/nodes 查看各個節(jié)點信息 ,其中帶* 為默認主節(jié)點。

172.18.12.23 34 71 3 0.10 0.24 0.29 ilmr  - es-master-3
172.18.12.24 37 71 4 0.10 0.24 0.29 dilrt - es-node-4
172.18.12.25 36 71 3 0.10 0.24 0.29 dilrt - es-node-5
172.18.12.22 33 71 4 0.10 0.24 0.29 ilmr  - es-master-2
172.18.12.21 27 71 4 0.10 0.24 0.29 ilmr  * es-master-1
172.18.12.26 38 71 3 0.10 0.24 0.29 dilrt - es-node-6

http://192.168.0.100:9202/_cat/health 查看當前節(jié)點的集群健康狀態(tài),green代表健康,6個節(jié)點,3個主節(jié)點。

1599055528 14:05:28 my-es green 6 3 0 0 0 0 0 0 - 100.0%

http://192.168.0.100:9202/_cluster/health?pretty 查看集群健康狀態(tài)

http://192.168.0.100:9202/_cluster/stats?pretty 查看集群詳細信息

至此es集群搭建完成,es 的各種操作命令見官方文檔查詢,這里就不一一測試了。各位可以自己在docker容器搭建試試。最后大家在生產環(huán)節(jié)下使用也不用自己搭建,目前市面上阿里云、騰訊云 也有開箱即用的容器云供大家使用;

  • 阿里云 · Elasticsearch 鏈接傳送 兼容開源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商業(yè)功能,致力于數(shù)據(jù)分析、數(shù)據(jù)搜索等場景服務。與開源社區(qū)背后商業(yè)公司Elastic戰(zhàn)略合作,為客戶提供企業(yè)級權限管控、安全監(jiān)控告警、自動報表生成等場景服務。【0元開通ELK】

  • 騰訊云Elasticsearch Service連接傳送 開箱即用的云端 Elasticsearch 服務,集成安全、SQL、機器學習、告警等高級特性(X-Pack)

關于docker中怎么搭建es集群就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網頁標題:docker中怎么搭建es集群
分享URL:http://muchs.cn/article26/jejscg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站建設、網站導航網站排名、自適應網站App開發(fā)、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設