溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker中怎么搭建es集群

發(fā)布時(shí)間:2021-07-30 16:39:14 來源:億速云 閱讀:168 作者:Leah 欄目:大數(shù)據(jù)

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

Linux系統(tǒng):

vm.max_map_count設(shè)置應(yīng)在以下位置永久設(shè)置/etc/sysctl.conf

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

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

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

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

配置docker網(wǎng)絡(luò)(可選)

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

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

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

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

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 #集群名稱,同一集群該值必須設(shè)置相同
node.name: es-master-${port} #該節(jié)點(diǎn)的名字
node.master: true #該節(jié)點(diǎn)有機(jī)會(huì)成為master節(jié)點(diǎn)
node.data: false #該節(jié)點(diǎn)可以存儲(chǔ)數(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 #設(shè)置集群中自動(dòng)發(fā)現(xiàn)其他節(jié)點(diǎn)時(shí)ping連接的超時(shí)時(shí)間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設(shè)置集群中的master節(jié)點(diǎn)的初始化列表,可以通過這些節(jié)點(diǎn)來自動(dòng)發(fā)現(xiàn)其他新加入集群的節(jié)點(diǎn),es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時(shí)的候選主節(jié)點(diǎn),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ā)文時(shí)最新版本為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個(gè)node節(jié)點(diǎn),命令同上面相似,注意改node.master: false, node.data:true 即可;復(fù)制下面命令創(chuàng)建3個(gè)node節(jié)點(diǎn)。

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 #集群名稱,同一集群該值必須設(shè)置相同
node.name: es-node-${port} #該節(jié)點(diǎn)的名字
node.master: false #該節(jié)點(diǎn)有機(jī)會(huì)成為master節(jié)點(diǎn)
node.data: true #該節(jié)點(diǎn)可以存儲(chǔ)數(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 #設(shè)置集群中自動(dòng)發(fā)現(xiàn)其他節(jié)點(diǎn)時(shí)ping連接的超時(shí)時(shí)間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設(shè)置集群中的master節(jié)點(diǎn)的初始化列表,可以通過這些節(jié)點(diǎn)來自動(dòng)發(fā)現(xiàn)其他新加入集群的節(jié)點(diǎn),es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時(shí)的候選主節(jié)點(diǎn),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ā)文時(shí)最新版本為7.9.0

done

測(cè)試集群

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

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

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 查看當(dāng)前節(jié)點(diǎn)的集群健康狀態(tài),green代表健康,6個(gè)節(jié)點(diǎn),3個(gè)主節(jié)點(diǎn)。

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 查看集群詳細(xì)信息

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

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

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

關(guān)于docker中怎么搭建es集群就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI