Docker构建学习环境(1)-部署ElasticSearch集群

ElasticSearch介绍

ElasticSearch下面简称ES,是一款分布式全文搜索和分析引擎,它可用于商城的全文搜索引擎,也可用作小型实时日志分析系统,著名的ELK中的E就是指的ElasticSearch。ElasticSearch基于Lucene基础之上,用过Lucene的人可能知道,Lucene的API复杂,而且缺乏分布式功能,而ElasticSearch天生提供分布式功能,并且提供了基于JSON的REST API方便用户使用。

我们开发过程中可能经常需要在单机上使用ElasticSearch集群,但是在单机上部署多个ElasticSearch比较麻烦,所以这一篇文章主要讲借助Docker在单机上快速部署ElasticSearch集群来帮助自己开发调试。Docker在这里不做过多介绍,以后有机会会单独介绍Docker。

环境和软件版本

环境:windows10

Docker:3.0

ElasticSearch版本:7.4.2

部署步骤
1. docker安装

省略,这里不做介绍,安装都很简单,过程中直接下一步就ok。

2. 创建自定义网络,用于部署ES集群
docker network create --subnet=172.18.0.0/16 --gateway=172.18.0.1 esnet

执行命令后,我们查看一下当前docker的网络
在这里插入图片描述

3. 拉取ES镜像包
  1. 搜索镜像包

    docker search elasticsearch
    

    选择star最多的即官方的镜像
    在这里插入图片描述

  2. pull拉取镜像包

    docker pull elasticsearch:7.4.2
    

    这里如果不带上tag,会默认拉取latest,ES官方没有这个tag,会导致找不到镜像包,所以带上版本号。想查看镜像包的tag,可以官方镜像仓库这个网站查询。

4. 配置和启动
  1. 创建配置文件目录和数据目录

    我的环境是windows,所以在E盘下创建了docker文件夹,在docker文件夹下创建了config文件夹和data文件夹,data文件夹下创建data1和data2文件夹

  2. 配置ES配置文件
    我们部署两台,因为第一步创建的子网为172.18.0.0/16,网关为172.18.0.1,现在把第一个节点ip固定设置为172.18.0.2,第二台设置为172.18.0.3,在config文件夹创建es1.yml和es2.yml

    es1.yml
    
    #集群名称
    cluster.name: elasticsearch-cluster
     
    #节点名称
    node.name: es-node1
     
    #设置绑定的ip地址,可以使ipv4或者ipv6
    #绑定这台机器的任何一个ip
    network.bind_host: 172.18.0.2
     
    #设置其他节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真是的ip地址
    network.publish_host: 172.18.0.2
     
    #设置对外服务的http端口,默认为9200
    http.port: 9200
     
    #设置节点之间的tcp端口,默认是9300
    transport.tcp.port: 9300
     
    #是否允许跨域REST请求
    http.cors.enabled: true
     
    #允许REST请求来自何处
    http.cors.allow-origin: "*"
    #初始master节点
    cluster.initial_master_nodes: es-node1
     
    #节点角色设置
    node.master: true 
    node.data: true  
     
    #集群的节点列表
    discovery.zen.ping.unicast.hosts: ["172.18.0.2","172.18.0.3"]
     
    #集群中一直正常运行的,有成为master节点资格的最少节点数,默认为1
    #(total number of master-eligible nodes / 2 + 1)
    discovery.zen.minimum_master_nodes: 1
    

    cluster.initial_master_nodes: es-node1 这个配置不要忘记不然启动后会因为没有matser节点,无法组成集群,第二台ES配置:

    #集群名称
    cluster.name: elasticsearch-cluster
     
    # 节点名称
    node.name: es-node2
     
    # 设置绑定的ip地址,可以使ipv4或者ipv6
    # 绑定这台机器的任何一个ip
    network.bind_host: 172.18.0.3
     
    # 设置其他节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真是的ip地址
    network.publish_host: 172.18.0.3
     
    # 设置对外服务的http端口,默认为9200
    http.port: 9200
     
    # 设置节点之间的tcp端口,默认是9300
    transport.tcp.port: 9300
     
    # 是否允许跨域REST请求
    http.cors.enabled: true
     
    # 允许REST请求来自何处
    http.cors.allow-origin: "*"
     
    # 节点角色设置
    node.master: true 
    node.data: true  
     
    # 集群的节点列表
    discovery.zen.ping.unicast.hosts: ["172.18.0.2","172.18.0.3"]
     
    # 集群中一直正常运行的,有成为master节点资格的最少节点数,默认为1
    # (total number of master-eligible nodes / 2 + 1)
    discovery.zen.minimum_master_nodes: 1
    
  3. 启动

    # 启动第一台
    docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v E:/docker/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v E:/docker/data/data1:/usr/share/elasticsearch/data --network=esnet --ip 172.18.0.2 --name ES01 elasticsearch:7.4.2
    
    #启动第二台
    docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9200 -p 9301:9300 -v E:/docker/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v E:/docker/data/data2:/usr/share/elasticsearch/data --network=esnet --ip 172.18.0.3 --name ES02 elasticsearch:7.4.2
    

    参数解释

    • -e: 设置环境变量参数
    • -d: 后台运行
    • -p: 9200:9200, 宿主机和容器端口映射,分别是 宿主机port:容器port
    • -v: 目录挂载 -v E:/docker/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml 把宿主机的E:/docker/config/es1.yml挂载到容器的/usr/share/elasticsearch/config/elasticsearch.yml
    • –network: 指定子网
    • –ip: 指定静态ip
    • –name: 指定容器名
    5. 验证

    启动之后http://127.0.0.1:9200/_cat/nodes?v 链接可以查看节点信息

    我的是这样的,*代表master节点,如果你的信息是这样,那么恭喜你,成功了。
    在这里插入图片描述
    文章首发地址:IkanのBolg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值