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

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

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

为什么要迁移到Docker?

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

  2. 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/

关键字:elasticsearch, docker, cluster


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部