ElasticSearch集群支持動(dòng)態(tài)請求的方式
搭建集群和靜態(tài)配置文件
搭建集群
關(guān)于集群的動(dòng)態(tài)連接方式官方的文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html
關(guān)于參數的官網(wǎng)說(shuō)明:
下載elsticsearch 7.8.0
docker pull elasticsearch:7.8.0
創(chuàng )建一個(gè)網(wǎng)絡(luò )es_net 用來(lái)放elasticsearch集群
docker network create --subnet=172.18.0.0/24 es_net
根據官網(wǎng)的可以得知 elasticsearch 的安裝位置在/usr/share/elasticsearch目錄下,為了方便后面的操作,創(chuàng )建數據卷將elasticsearch產(chǎn)生的數據映射到主機中,防止es宕機數據無(wú)法恢復。
創(chuàng )建數據卷
docker volume create es_data01 docker volume create es_data02 docker volume create es_data03 #公共配置文件,以及插件存放位置 docker volume create es_conf docker volume create es_plugins
分別存放數據、配置、插件
創(chuàng )建3個(gè)yml配置文件
意味著(zhù)只要啟動(dòng)ElasticSearch然后通過(guò)ES自帶的RestFul風(fēng)格的操作既可以完成集群的搭建
dockerhub中官方的啟動(dòng)方式是單節點(diǎn)的啟動(dòng)
先單獨啟動(dòng)3個(gè)ElasticSearch節點(diǎn)
啟動(dòng)es01
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \ --name es01 --network=es_net --ip=172.18.0.101 \ -v es_data01:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
啟動(dòng)es02
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \ --name es02 --network=es_net --ip=172.18.0.102 \ -v es_data02:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
啟動(dòng)es03
docker run -it -d --restart always -p 9203:9200 -p 9303:9300 \ --name es03 --network=es_net --ip=172.18.0.103 \ -v es_data03:/usr/share/elasticsearch/data \ -v es_conf:/usr/share/elasticsearch/conf \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
通過(guò)PUT方式
通過(guò)linux的curl命令操作即可
在es02和es03上通過(guò)
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "persistent" : { "cluster" : { "remote" : { "leader" : { "seeds" : [ "127.0.0.1:9300" ] } } } } } '
更新persistent
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "persistent" : { "indices.recovery.max_bytes_per_sec" : "50mb" } } '
更新transient
curl -X PUT "localhost:9200/_cluster/settings?flat_settings=true&pretty" -H 'Content-Type: application/json' -d' { "transient" : { "indices.recovery.max_bytes_per_sec" : "20mb" } } '
刪除transient配置內容
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "transient" : { "indices.recovery.max_bytes_per_sec" : null } } '
刪除所有transient設置
curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d' { "transient" : { "indices.recovery.*" : null } } '
失敗的原因應該是啟動(dòng)容器的時(shí)候應該少了參數。
上說(shuō)將來(lái)的版本不再使用discovery.zen.ping.unicast.hosts也就變成discovery.seed_hosts
es-node1節點(diǎn)的配置文件信息
vim /var/lib/docker/volumes/es_conf/_data/es01.yml
請修改注釋行宿主機ip,以及es集群通信的端口地址
cluster.name: elasticsearch-cluster node.name: es-node1 network.bind_host: 0.0.0.0 network.publish_host: 192.168.117.231 #修改為docker的宿主機ip http.port: 9200 #這個(gè)是容器內部的,所以不用改 transport.tcp.port: 9300 #這個(gè)是容器內部的,所以不用改 http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes: 2 indices.query.bool.max_clause_count: 10240 #使用一臺主機的不同端口搭建,在啟動(dòng)docker容器的時(shí)候通過(guò)-p指定映射端口
通過(guò)上述配置文件中可知需要映射端口分別是9300、9301、9302,這些端口是用來(lái)進(jìn)行集群通信的
也就是三個(gè)節點(diǎn)綁定端口分別是-p 9300:9300,-p 9301:9300,-p 9302:9300,
同時(shí)我們可以推出使用-p 9200:9200,-p 9201:9200,-p 9202:9200
做成表格:
es-node2節點(diǎn)的配置文件信息
vim /var/lib/docker/volumes/es_conf/_data/es02.yml
與es-node1不同的地方就是節點(diǎn)名改一下
cluster.name: elasticsearch-cluster node.name: es-node2 network.bind_host: 0.0.0.0 network.publish_host: 192.168.117.231 #修改為docker的宿主機ip http.port: 9200 #這個(gè)是容器內部的,所以不用改 transport.tcp.port: 9300 #這個(gè)是容器內部的,所以不用改 http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes: 2 indices.query.bool.max_clause_count: 10240 #使用一臺主機的不同端口搭建,在啟動(dòng)docker容器的時(shí)候通過(guò)-p指定映射端口
es-node3節點(diǎn)的配置文件信息
vim /var/lib/docker/volumes/es_conf/_data/es02.yml
與es-node1不同的地方就是節點(diǎn)名改一下
cluster.name: elasticsearch-cluster node.name: es-node3 network.bind_host: 0.0.0.0 network.publish_host: 192.168.117.231 #修改為docker的宿主機ip http.port: 9200 #這個(gè)是容器內部的,所以不用改 transport.tcp.port: 9300 #這個(gè)是容器內部的,所以不用改 http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true discovery.seed_hosts: ["192.168.117.231:9300","192.168.117.231:9301","192.168.117.232:9302"] discovery.zen.minimum_master_nodes: 2 indices.query.bool.max_clause_count: 10240 #使用一臺主機的不同端口搭建,在啟動(dòng)docker容器的時(shí)候通過(guò)-p指定映射端口
es-node1啟動(dòng)命令,docker進(jìn)程別名es01
使用的網(wǎng)絡(luò )是上面創(chuàng )建的網(wǎng)卡es_net,指定節點(diǎn)的內部網(wǎng)絡(luò )ip 172.18.0.100需要和es_net同網(wǎng)段
docker run -it -d --restart always -p 9200:9200 -p 9300:9300 \ --name es01 --network=es_net --ip=172.18.0.100 \ -v es_data01:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
ES_JAVA_OPTS指定使用的es的內存,防止啟動(dòng)es占用太多內存空間
--restart always開(kāi)機自啟
數據卷映射略,唯一需要注意的是配置文件es01.yml映射到了內部的es啟動(dòng)時(shí),引使用的配置文件。
docker run -it -d --restart always -p 9201:9200 -p 9301:9300 \ --name es02 --network=es_net --ip=172.18.0.101 \ -v es_data02:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
docker run -it -d --restart always -p 9202:9200 -p 9302:9300 \ --name es03 --network=es_net --ip=172.18.0.102 \ -v es_data03:/usr/share/elasticsearch/data \ -v /var/lib/docker/volumes/es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v es_plugins:/usr/share/elasticsearch/plugins \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.8.0
到此這篇關(guān)于docker安裝ElasticSearch:7.8.0集群的文章就介紹到這了,更多相關(guān)docker安裝ElasticSearch集群內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站