溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker中怎么搭建es集群

發布時間:2021-07-30 16:39:14 來源:億速云 閱讀:196 作者:Leah 欄目:大數據

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

Linux系統:

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 系統:(Docker for Mac)

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

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

配置docker網絡(可選)

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

#查看網絡模式 
docker network ls
#創建一個新的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

創建es節點

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

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} #該節點的名字
node.master: true #該節點有機會成為master節點
node.data: false #該節點可以存儲數據
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 #設置集群中自動發現其他節點時ping連接的超時時間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設置集群中的master節點的初始化列表,可以通過這些節點來自動發現其他新加入集群的節點,es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時的候選主節點,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 #發文時最新版本為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}')

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

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} #該節點的名字
node.master: false #該節點有機會成為master節點
node.data: true #該節點可以存儲數據
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 #設置集群中自動發現其他節點時ping連接的超時時間
discovery.seed_hosts: ["172.18.12.21:9301","172.18.12.22:9302","172.18.12.23:9303"] #設置集群中的master節點的初始化列表,可以通過這些節點來自動發現其他新加入集群的節點,es7的新增配置
cluster.initial_master_nodes: ["172.18.12.21"] # 新集群初始時的候選主節點,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 #發文時最新版本為7.9.0

done

測試集群

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

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

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 查看當前節點的集群健康狀態,green代表健康,6個節點,3個主節點。

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 查看集群健康狀態

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女