单机使用docker建立elasticsearch集群开发环境进行测试
docker是什么
很小很轻可以只装一个一个应用的虚拟机,或者可以叫它容器
elasticsearch是什么
企业级全文搜索引擎
需求背景
长期在elasticsearch上做二次开发的工作,做搜索引擎方面的工作,本机无论如何肯定是会有一个elasticsearch的环境的。其实本来elasticsearch的安装已经很简单了。那么我这里可以先介绍下常规的安装方式:
- elasticsearch下载地址
- win直接启动 unix系请新开账号来访问,基于安全考虑es不允许使用root账号启动
- 访问localhsot:9200
其实没有多麻烦,但是有几个问题 - 难以管理,过几天可能我就忘了我程序下载到哪里去了?
- 只能启动单节点,而es的特点之一就在于在分布式上的便捷,不过估计这个其实通过改端口部署的方式应该也可以,但麻烦度绝对不低。
引入docker来解决上面的难点
通过docker可以集中的管理我的elasticsearch节点,甚至可以包括管理redis节点,mysql节点等等等等……我准备一步步把我装的乱七八糟的软件切换成用docker管理部署,在不影响目前工作的情况下。
以及通过docker我可以很轻松的部署出一个es集群出来,这也是我实践完以后的感慨,本来以为会遇到很多问题,但其实顺利的就像一套按部就班的流程一样。因为docker是隔离的虚拟机,所以我不需要多做一些端口的规划,也不需要考虑其他的细节。下面上细节。
使用docker建立elasticsearch集群
到这里默认机器已经安装完毕docker
-
docker pull docker.elastic.co/elasticsearch/elasticsearch:5.6.3
首先去拉取镜像,这次我拉取的是5.6.3的镜像 - 启动刚才拉取的镜像
docker run -d -p 9201:9200 -p 9301:9300 --name es1 -h es1\
-e cluster.name=meitu -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false\
docker.elastic.co/elasticsearch/elasticsearch:5.6.3
参数 | 作用 |
---|---|
-d | 程序后台运行 |
-p | 端口映射,比如虚拟机里面的9200端口映射到本机的9201端口,es有两个端口需要映射 |
--name | 启动的容器名字 |
-h | 容器主机名,其实就相当于配置到host的效果 |
-e | 环境参数 几个es的环境参数 也可以是任意环境参数 |
--link | 相当于在这一台容器中配置了link对象的host |
3.再启动第二个节点
docker run -d -p 9202:9200 -p 9302:9300 --link es1\
--name es2 -e cluster.name=meitu -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false\
-e discovery.zen.ping.unicast.hosts=es1 docker.elastic.co/elasticsearch/elasticsearch:5.6.3
4.分别访问localhost:9201和localhost:9202
curl localhost:9201
curl localhost:9202
看到You know for search说明启动成功
5.其实到第4步可以说已经结束了,但是作为开发人员不可能不使用图形界面管理工具的,那么我们安装elasticsearch-head
docker run -d -p 9100:9100 mobz/elasticsearch-head:5
……
咚咚咚,安装完毕。然后访问localhost:9200
最后我们看结果

可以看到熟悉的管理界面又回来了,带星号的为主节点,那么这一次集群搭建就完成了。
网友评论