es可以用docker部署嗎

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)容器。

es可以用docker部署嗎

本教程操作環(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)題。

es可以用docker部署嗎

此處,我們把數(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可以用docker部署嗎

搭建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視頻教程

以上就是es可以用

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享