之前开发使用外部服务,都是在本地下载并运行,感觉有时候用的服务多了,第一每次去运行都很麻烦,第二感觉很占电脑内存。这两天接触了docker之后,感觉用起来贼方便,只要把各种服务都安装在docker上,使用的时候只需要把docker上的镜像 跑起来,感觉比较方便。具体运行逻辑我就不说了,下面主要讲一下window环境下使用docker安装ES并配置集群的步骤。

1.docker安装

  具体步骤https://www.runoob.com/docker/windows-docker-install.html这上面说的比较清楚,我就不多逼逼了,我是win7系统,和win10其实没太多区别,大家按着上面的步骤走,一般都没得啥问题。记得下载后配置下docker的环境变量就行了。

  docker安装完成后,  双击Docker Quickstart Terminal运行。

  看到这个小鲸鱼基本上就证明成功了。这里有个小问题,我发现这个控制台无法复制和粘贴数据,感觉手敲起来很慢。建议在本地安装Xshell,控制起来比较方便。

  这里主机IP就是上面小鲸鱼下面显示的那个ip,默认用户名为docker,密码为tcuser。

2.es下载

  用xshell连进去后,就可以操作docker了。

  下载es的话,首先执行“docker search elasticsearch”,具体作用就是查找在doucker hub中查找对应镜像(个人感觉其实也没啥用)

接着执行“docker pull elasticsearch”,这步的意思是将镜像从docker库中下载到本地。注意在镜像名后面加上“:版本名”,可以下载指定的版本。如果不指定版本,每次都会去下载当前镜像的最新版本。我这边一直使用的是5.2版本,所以我指定了版本。输完这个指令后回车等待下载,因为我本地下载好了,就不再去执行了。

  这里记得去把镜像地址换位国内的,如果用国外的,会非常慢,有时候下着下着就断流了,关于如何换镜像地址,请自行百度。国内比较常用的事阿里和网易云的镜像,请大家自行选择。

  等待es下载完成后,直接执行“docker images”,如果能在列表中看到刚才下载的es,证明成功。TAG表示版本号,我这边是5.2.0。

3.集群配置

  镜像完成之后,开始配置集群。“cd /.”进入根目录,然后在/home目录下建立一个存放配置文件的目录

新建es/config目录,并在目录下面新建三个配置文件es1.yml,es2.yml,es3.yml。下面贴上代码。

es1代码

 cluster.name : market
 node.name : master
 transport.tcp.port : 9300
 http.port : 9200
 network.bind_host : 0.0.0.0
 network.publish_host : 192.168.99.101
 discovery.zen.ping.unicast.hosts : ["192.168.99.101:9300"]
 node.master : true

es2代码

 cluster.name : market
 node.name : selver1
 transport.tcp.port : 9301
 http.port : 9201
 network.bind_host : 0.0.0.0
 network.publish_host : 192.168.99.101
 discovery.zen.ping.unicast.hosts : ["192.168.99.101:9300"]
 node.master : true
 

es3代码

 cluster.name : market
 node.name : selver2
 transport.tcp.port : 9302
 http.port : 9202
 network.bind_host : 0.0.0.0
 network.publish_host : 192.168.99.101
 discovery.zen.ping.unicast.hosts : ["192.168.99.101:9300"]
 node.master : true
 

4.启动容器

  写好配置文件之后,记好对应的路径。控制台输入“docker images”,复制es的“IMAGE_ID”。

  输入启动命令

docker run -d --name es1 -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /home/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml c9c606d302fb

docker run -d --name es2 -p 9201:9201 -p 9301:9301 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /home/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml c9c606d302fb

docker run -d --name es3 -p 9202:9202 -p 9302:9302 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /home/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml c9c606d302fb

-d: 后台启动

--name:启动的容器名称

-p:所绑定的端口

-e: 容器启动占用的内存大小

-v:自定义配置文件存放地址

 c9c606d302fb:容器的IMAGES_ID

上面这条命令,大家主要是更换下配置文件存放地址,也就是/home/es/config/es1.yml,冒号后面的不用修改。最后c9c606d302fb是IMAGES_ID,改为自己的就行了。

容器启动后,可以输入docker logs es1查看启动日志。我这边启动正常 没有什么问题。

 

使用ElasticSearch Head工具进行测试连接。

也可以在控制台输入"docker ps -a",查看当前运行的容器。STATUS如果为up表示正常运行。

5.遇到问题

1.遇见报错“max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

直接在控制台输入

sudo sysctl -w vm.max_map_count=262144

2.进入root用户

可以在容器启动后,输入“ docker exec -it es1 /bin/bash”,切换到root权限。上面的-v 冒号后面的值就是es配置文件默认的存放地址,可以切换root用户后查看。

上面就是docker在windows下配置es集群的全部,也是刚刚docker入坑,如果有什么错误的地方,还请大家指出。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐