• 技术文章 >运维 >Docker

    es可以用docker部署吗

    WBOYWBOY2022-08-15 17:09:11原创453

    es可以用docker部署;部署es集群可以直接使用“docker-compose”来完成,“docker-compose”是一个用来定义和运行复杂应用的docker工具,一个使用docker容器的应用,通常由多个容器组成,使用“docker-compose”则不再需要使用shell脚本来启动容器。

    php入门到就业线上直播课:进入学习

    本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。

    es可以用docker部署吗

    部署es集群可以直接使用docker-compose来完成

    Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。

    Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

    扩展知识

    ES集群介绍

    为什么需要集群

    单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。

    海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点

    单点故障问题:将分片数据在不同节点备份(replica )

    ES集群相关概念

    解决问题:数据量太大,单点存储量有限的问题。

    38.png

    此处,我们把数据分成3片:shard0、shard1、shard2

    数据备份可以保证高可用,但是每个分片备份一份,所需要的节点数量就会翻一倍,成本实在是太高了!

    为了在高可用和成本间寻求平衡,我们可以这样做:

    这样可以大大减少所需要的服务节点数量,如图,我们以3分片,每个分片备份一份为例:

    39.png

    搭建ES集群

    部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间

    首先编写一个docker-compose文件,内容如下:

    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

    文件内容介绍:

    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部署吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:Docker
    上一篇:docker容器通过什么隔离 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 用docker部署与直接部署的区别是什么• docker需要安装jdk吗• docker支持centos6安装吗• docker为什么是轻量级• docker镜像仓库有什么用
    1/1

    PHP中文网