docker部署elasticsearch集群

1、拉取镜像文件

 [root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker pull elasticsearch:6.7.1

2、创建配置文件

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# mkdir -p /ES/config/
 [root@iZ2zeir6vcnpz8qw3t455tZ config]# ls
 es1.yml es2.yml

es1.yml

 # es1.yml
 cluster.name: ELK-elasticsearch
 node.name: node-1
 network.host: 0.0.0.0
 network.publish_host: 123.56.83.80
 http.port: 9200# 设置对外服务的http端口,默认为9200
 transport.tcp.port: 9300# 设置节点之间交互的tcp端口,默认是9300。如我搭建多节点,可以配置9300、9302、9304
 # 以下两行是提供跨域访问的配置方法
 http.cors.enabled: true
 http.cors.allow-origin: "*"
 # 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
 node.master: true
 # 指定该节点是否存储索引数据,默认为true
 node.data: true
 # 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
 discovery.zen.ping.unicast.hosts: ["123.56.83.80:9300","123.56.83.80:9301"]
 # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
 discovery.zen.minimum_master_nodes: 1

es2.yml

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# cat es2.yml 
 cluster.name: ELK-elasticsearch
 node.name: node-1
 network.host: 0.0.0.0
 network.publish_host: 123.56.83.80
 http.port: 9201# 设置对外服务的http端口,默认为9200
 transport.tcp.port: 9301# 设置节点之间交互的tcp端口,默认是9300。如我搭建多节点,可以配置9300、9302、9304
 # 以下两行是提供跨域访问的配置方法
 http.cors.enabled: true
 http.cors.allow-origin: "*"
 # 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
 node.master: true
 # 指定该节点是否存储索引数据,默认为true
 node.data: true
 # 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
 discovery.zen.ping.unicast.hosts: ["123.56.83.80:9300","123.56.83.80:9301"]
 # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
 discovery.zen.minimum_master_nodes: 1

3、分别创建二个容器

 docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9200:9200 -p9300:9300 -v/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES01 e2667f5db289
 
 docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9201:9201 -p9301:9301 -v/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES02 e2667f5db289

4、查看容器状态

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker ps -a
 CONTAINER ID       IMAGE                 COMMAND                 CREATED             STATUS                           PORTS                   NAMES
 d87ec42b203b       e2667f5db289          "/usr/local/bin/dock…"  2minutes ago       Exited (78) About a minute ago                           ES02
 6d9c9931538a       e2667f5db289          "/usr/local/bin/dock…"  2minutes ago       Exited (78) About a minute ago                           ES01

发现没有启动起来:原因是es特别消耗内存,我的云主机是1G内存,资源太低,导致服务起不来。生产环境中不能使用root用户操作,这里只是为了方便:

查看日志

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker logs -f ES01
 ERROR: [1] bootstrap checks failed
 [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改配置文件

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# vim /etc/sysctl.conf 
 # 最后一行添加
 vm.max_map_count =655360

现在docker还没有生效,我们要把docker删除,重新建

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker ps -a
 CONTAINER ID       IMAGE                 COMMAND                 CREATED             STATUS                       PORTS                   NAMES
 d87ec42b203b       e2667f5db289          "/usr/local/bin/dock…"  14minutes ago     Exited (78) 13minutes ago                           ES02
 6d9c9931538a       e2667f5db289          "/usr/local/bin/dock…"  14minutes ago     Exited (78) 13minutes ago                           ES01
 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker rm ES01
 ES01
 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker rm ES02
 ES02
 [root@iZ2zeir6vcnpz8qw3t455tZ config]#
 docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9200:9200 -p9300:9300 -v/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES01 e2667f5db289
 [root@iZ2zeir6vcnpz8qw3t455tZ config]#
 docker run -eES_JAVA_OPTS="-Xms256m -Xmx256m"-d-p9201:9201 -p9301:9301 -v/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml --nameES02 e2667f5db289

5、安装管理界面

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker pull mobz/elasticsearch-head:5

6、创建容器

 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

7、查看容器

 [root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps 
 CONTAINER ID       IMAGE                       COMMAND                 CREATED             STATUS             PORTS                                                               NAMES
 22f2830b8cd1       mobz/elasticsearch-head:5   "/bin/sh -c 'grunt s…"  16hours ago       Up 16hours         0.0.0.0:9100->9100/tcp                                               es_admin
 fe62587fe232       e2667f5db289                "/usr/local/bin/dock…"  16hours ago       Up 16hours         9200/tcp, 0.0.0.0:9201->9201/tcp, 9300/tcp, 0.0.0.0:9301->9301/tcp   ES02
 6f39301f74af       e2667f5db289                "/usr/local/bin/dock…"  16hours ago       Up 16hours         0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                       ES01
 81f99fbc94de       portainer/portainer         "/portainer"            18hours ago       Up 17hours         0.0.0.0:9000->9000/tcp                                               portainer-arry

8、解决索引报错

参考:https://www.psvmc.cn/article/2019-11-27-elasticsearch.html

1.进入docker
 [root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it es_admin /bin/bash
 root@22f2830b8cd1:/usr/src/app# ls
 Dockerfile    grunt_fileSets.js
 Gruntfile.js    index.html
 LICENCE    node_modules
 README.textile    package.json
 _site    plugin-descriptor.properties
 elasticsearch-head.sublime-project   src
 elasticsearch-head.sublime-workspace test
 root@22f2830b8cd1:/usr/src/app# cd _site/
 root@22f2830b8cd1:/usr/src/app/_site# ls
 app.css app.js base fonts i18n.js index.html lang vendor.css vendor.js
 root@22f2830b8cd1:/usr/src/app/_site# vim vendor.js 
 bash: vim: command not found
2.安装vim
 root@22f2830b8cd1:/usr/src/app/_site# apt-get update
 root@22f2830b8cd1:/usr/src/app/_site# apt-get install vim
3.按ESC输入:6886跳转到6886行
 把contentType: "application/x-www-form-urlencoded"改为 contentType: "application/json"
4.退出容器
 root@22f2830b8cd1:/usr/src/app/_site# exit
5.重启容器
 [root@iZ2zeir6vcnpz8qw3t455tZ config]# docker restart es_admin
6.再次创建索引

如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家Orchis饰品店,喜欢的小伙伴欢迎????前来下单。

扫描二维码

获取更多精彩

运维猫公众号

有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:

扫描二维码

添加私人微信

运维猫博主

扫码加微信

最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。

点击阅读原文  查看更多精彩内容!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值