這篇文章將為大家詳細講解有關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
我們這里以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集群就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。