资讯专栏INFORMATION COLUMN

市长信箱邮件查询服务: 在Docker上安装Elasticsearch集群作为服务

why_rookie / 1165人阅读

摘要:市长信箱邮件查询服务在上安装作为一个服务在上一章我完成了替换的工作按照之前的计划现在是该把迁移到的时候了为什么要迁移到为后续展示的弹性做准备使用可以方便的部署多节点很火我开发机是要在上使用需要安装的原理就是在上安装一台虚拟机作为容器的宿

市长信箱邮件查询服务: 在Docker上安装Elasticsearch作为一个服务

在上一章,我完成了Elasticsearch替换Mysql的工作. 按照之前的计划, 现在是该把ES迁移到Docker的时候了.

为什么要迁移到Docker?

为后续展示Elasticsearch的弹性做准备, 使用docker可以方便的部署多节点.

docker很火.


我开发机是Mac Pro, 要在mac上使用docker, 需要安装docker-machine.

docker-machine的原理就是在mac上安装一台Linux虚拟机(VisualBox),作为Docker容器的宿主机, 以此来在不同平台(Mac,Windows)支持docker容器的创建.
安装完成后, 执行以下命令, 就可以运行docker了.

docker-machine start
eval "$(docker-machine env default)"

通过执行:docker-machine ip 命令可以得到docker宿主机的ip. 后续访问ES服务将需要访问此IP, 一般为:192.168.99.100

Docker Hub官方有elasticsearch的镜像. 我们本地拉取运行即可

docker run -p 9200:9200 -p 9300:9300 -v "$home/.esdata/node1":/usr/share/elasticsearch/data elasticsearch:2.3.3 -Des.node.name="node1"

参数说明:
-p 宿主机端口:docker容器端口
-v "本地挂载路径":docker容器目录路径
-Des.node.name es节点名称

这里使用
-p将docker容器内部ES服务端口(开发机不能直接访问)映射到docker宿主机端口上(开发机可以直接访问),也就是: 192.168.99.100:9200和192.168.99.100:9300
-v本地挂载路径映射的目的是为了持久化ES的数据, 否则一旦docker容器重启,ES中的数据将会丢失.

然后在浏览器访问: http://192.168.99.100:9200/_cluster/health?pretty=true
可以从中看到ES的状态, 其中"number_of_nodes"的值为1,说明ES集群只有一个节点.

使用Docker可以方便的将单节点ES扩展为多节点ES集群.

这里我使用docker-compose来完成这个任务.
编写docker-compose.yml文件:

elasticsearch_master:
    image: elasticsearch:2.3.3
    command: "elasticsearch -Des.cluster.name=elasticsearch -Des.node.master=true"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - /.esdata/node1:/usr/share/elasticsearch/data

elasticsearch1:
    image: elasticsearch:2.3.3
    command: "elasticsearch -Des.cluster.name=elasticsearch -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
    links:
      - elasticsearch_master
    volumes:
      - /.esdata/node2:/usr/share/elasticsearch/data
      
elasticsearch2:
    image: elasticsearch:2.3.3
    command: "elasticsearch -Des.cluster.name=elasticsearch -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
    links:
      - elasticsearch_master
    volumes:
      - /.esdata/node3:/usr/share/elasticsearch/data

参数说明:
-Des.discovery.zen.ping.unicast.hosts=elasticsearch_master 指定ES的集群发现机制为查询elasticsearch_master主节点.(多播发现机制不被推荐用在生产环境)

集群启动了3个ES节点, 其中一个为主节点, 对外暴露服务端口. 启动集群只需要在docker-compose.yml的当前目录执行"docker-compose up"即可.

参考资料:
http://www.tuicool.com/articles/AnIVJn
http://stackoverflow.com/questions/28632977/elasticsearch-in-docker-container-cluster
https://docs.docker.com/compose/overview/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26597.html

相关文章

  • 市长信箱邮件查询服务: 使用SpringBoot构建工程

    摘要:市长信箱邮件查询服务使用构建工程一直想用做个微服务练练手为后续部署到打下基础今天比较空闲就开始把部分想法落地了概览用来练手的应用是一个市长信箱的内容抓取与检索页面鉴于我的八卦特质总想了解下周边的一些投诉信息而成都的市长信箱是一个绝好的信息来 市长信箱邮件查询服务: 使用SpringBoot构建工程 一直想用SpringBoot做个微服务,练练手, 为后续部署到docker打下基础. 今...

    supernavy 评论0 收藏0
  • 市长信箱邮件查询服务: 将SpringBoot应用部署到Docker

    摘要:市长信箱邮件查询服务将应用部署到在上一章我完成了将部署到的工作和都具有能快速启动的特性因此是一对用来部署微服务的黄金搭档在计划中基于的应用也将部署到之上那我们就开始行动吧将部署到上需要执行以下步骤保证打包后的可执行能正常启动在应用中编写镜像 市长信箱邮件查询服务: 将SpringBoot应用部署到Docker 在上一章, 我完成了将ES部署到Docker的工作. SpringBoot和...

    SKYZACK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<