es可以用docker部署吗
时间:2022-08-15 17:09
es可以用docker部署;部署es集群可以直接使用“docker-compose”来完成,“docker-compose”是一个用来定义和运行复杂应用的docker工具,一个使用docker容器的应用,通常由多个容器组成,使用“docker-compose”则不再需要使用shell脚本来启动容器。 本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。 部署es集群可以直接使用docker-compose来完成 Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。 扩展知识 ES集群介绍 为什么需要集群 单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点 单点故障问题:将分片数据在不同节点备份(replica ) ES集群相关概念 集群(cluster):一组拥有共同的 cluster name 的 节点。 节点(node) :集群中的一个 Elasticearch 实例 分片(shard):索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中 解决问题:数据量太大,单点存储量有限的问题。 此处,我们把数据分成3片:shard0、shard1、shard2 主分片(Primary shard):相对于副本分片的定义。 副本分片(Replica shard)每个主分片可以有一个或者多个副本,数据和主分片一样。 数据备份可以保证高可用,但是每个分片备份一份,所需要的节点数量就会翻一倍,成本实在是太高了! 为了在高可用和成本间寻求平衡,我们可以这样做: 首先对数据分片,存储到不同节点 然后对每个分片进行备份,放到对方节点,完成互相备份 这样可以大大减少所需要的服务节点数量,如图,我们以3分片,每个分片备份一份为例: 搭建ES集群 部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间 首先编写一个docker-compose文件,内容如下: 文件内容介绍: version: complse版本 es01: 节点 image: 镜像 container_name:容器名称 environment:环境变量 node.name: 节点名称 cluster.name: 集群名称,es自动建立集群 discovery.seed_hosts:另外两个的地址,可以用容器名称互联 cluster.initial_master_nodes:初始化的主节点,可以参与选举 “ES_JAVA_OPTS=-Xms512m -Xmx512m”:最小和最大JVM内存 volumes: 数据卷地址 ports: 端口映射 推荐学习:《docker视频教程》 以上就是es可以用docker部署吗的详细内容,更多请关注gxlsystem.com其它相关文章!es可以用docker部署吗
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