es可以用docker部署;部署es集群可以直接使用“docker-compose”來(lái)完成,“docker-compose”是一個(gè)用來(lái)定義和運(yùn)行復(fù)雜應(yīng)用的docker工具,一個(gè)使用docker容器的應(yīng)用,通常由多個(gè)容器組成,使用“docker-compose”則不再需要使用shell腳本來(lái)啟動(dòng)容器。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
es可以用docker部署嗎
部署es集群可以直接使用docker-compose來(lái)完成
Docker Compose是一個(gè)用來(lái)定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。一個(gè)使用Docker容器的應(yīng)用,通常由多個(gè)容器組成。使用Docker Compose不再需要使用shell腳本來(lái)啟動(dòng)容器。?
Compose 通過(guò)一個(gè)配置文件來(lái)管理多個(gè)Docker容器,在配置文件中,所有的容器通過(guò)services來(lái)定義,然后使用docker-compose腳本來(lái)啟動(dòng),停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴(lài)服務(wù)的容器,非常適合組合使用多個(gè)容器進(jìn)行開(kāi)發(fā)的場(chǎng)景。
擴(kuò)展知識(shí)
ES集群介紹
為什么需要集群
單機(jī)的elasticsearch做數(shù)據(jù)存儲(chǔ),必然面臨兩個(gè)問(wèn)題:海量數(shù)據(jù)存儲(chǔ)問(wèn)題、單點(diǎn)故障問(wèn)題。
海量數(shù)據(jù)存儲(chǔ)問(wèn)題:將索引庫(kù)從邏輯上拆分為N個(gè)分片(shard),存儲(chǔ)到多個(gè)節(jié)點(diǎn)
單點(diǎn)故障問(wèn)題:將分片數(shù)據(jù)在不同節(jié)點(diǎn)備份(replica )
ES集群相關(guān)概念
-
集群(cluster):一組擁有共同的 cluster name 的 節(jié)點(diǎn)。
-
節(jié)點(diǎn)(node) :集群中的一個(gè) Elasticearch 實(shí)例
-
分片(shard):索引可以被拆分為不同的部分進(jìn)行存儲(chǔ),稱(chēng)為分片。在集群環(huán)境下,一個(gè)索引的不同分片可以拆分到不同的節(jié)點(diǎn)中
解決問(wèn)題:數(shù)據(jù)量太大,單點(diǎn)存儲(chǔ)量有限的問(wèn)題。
此處,我們把數(shù)據(jù)分成3片:shard0、shard1、shard2
-
主分片(Primary shard):相對(duì)于副本分片的定義。
-
副本分片(Replica shard)每個(gè)主分片可以有一個(gè)或者多個(gè)副本,數(shù)據(jù)和主分片一樣。
數(shù)據(jù)備份可以保證高可用,但是每個(gè)分片備份一份,所需要的節(jié)點(diǎn)數(shù)量就會(huì)翻一倍,成本實(shí)在是太高了!
為了在高可用和成本間尋求平衡,我們可以這樣做:
-
首先對(duì)數(shù)據(jù)分片,存儲(chǔ)到不同節(jié)點(diǎn)
-
然后對(duì)每個(gè)分片進(jìn)行備份,放到對(duì)方節(jié)點(diǎn),完成互相備份
這樣可以大大減少所需要的服務(wù)節(jié)點(diǎn)數(shù)量,如圖,我們以3分片,每個(gè)分片備份一份為例:
搭建ES集群
部署es集群可以直接使用docker-compose來(lái)完成,不過(guò)要求你的Linux虛擬機(jī)至少有4G的內(nèi)存空間
首先編寫(xiě)一個(gè)docker-compose文件,內(nèi)容如下:
version:?'2.2' services: ??es01: ????image:?elasticsearch:7.12.1 ????container_name:?es01 ????environment: ??????-?node.name=es01 ??????-?cluster.name=es-docker-cluster ??????-?discovery.seed_hosts=es02,es03 ??????-?cluster.initial_master_nodes=es01,es02,es03 ??????-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m" ????volumes: ??????-?data01:/usr/share/elasticsearch/data ????ports: ??????-?9200:9200 ????networks: ??????-?elastic ??es02: ????image:?elasticsearch:7.12.1 ????container_name:?es02 ????environment: ??????-?node.name=es02 ??????-?cluster.name=es-docker-cluster ??????-?discovery.seed_hosts=es01,es03 ??????-?cluster.initial_master_nodes=es01,es02,es03 ??????-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m" ????volumes: ??????-?data02:/usr/share/elasticsearch/data ????ports: ??????-?9201:9200 ????networks: ??????-?elastic ??es03: ????image:?elasticsearch:7.12.1 ????container_name:?es03 ????environment: ??????-?node.name=es03 ??????-?cluster.name=es-docker-cluster ??????-?discovery.seed_hosts=es01,es02 ??????-?cluster.initial_master_nodes=es01,es02,es03 ??????-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m" ????volumes: ??????-?data03:/usr/share/elasticsearch/data ????networks: ??????-?elastic ????ports: ??????-?9202:9200 volumes: ??data01: ????driver:?local ??data02: ????driver:?local ??data03: ????driver:?local networks: ??elastic: ????driver:?bridge
文件內(nèi)容介紹:
version: complse版本
es01: 節(jié)點(diǎn)
image: 鏡像
container_name:容器名稱(chēng)
environment:環(huán)境變量
node.name: 節(jié)點(diǎn)名稱(chēng)
cluster.name: 集群名稱(chēng),es自動(dòng)建立集群
discovery.seed_hosts:另外兩個(gè)的地址,可以用容器名稱(chēng)互聯(lián)
cluster.initial_master_nodes:初始化的主節(jié)點(diǎn),可以參與選舉
“ES_JAVA_OPTS=-Xms512m -Xmx512m”:最小和最大JVM內(nèi)存
volumes: 數(shù)據(jù)卷地址
ports: 端口映射
推薦學(xué)習(xí):《docker視頻教程》