架构师成长之路-docker 搭建es集群

Docker:是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

Elasticsearch:

Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内存储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。

docker常用命令:

docker run
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

拉取容器指定版本
  docker pull elasticsearch:6.4.3
进入容器:
docker exec -it elasticsearch /bin/bash
 查询容器宿主机内网地址:
docker inspect --format='{{.NetworkSettings.IPAddress}}'  37279d8cf528
查询日志:
docker logs  容器id/名称
docker logs --since 5m  容器id/名称 (查询最新5分钟日志)
把虚拟机复制文件:
docker cp /data/elasticsearch/plugins/ik elasticsearch:/usr/share/elasticsearch/plugins/
/usr/share/ 目录代表容器的 cd .. 目录
查看容器版本:
docker image inspect 0b25d6b747c2|grep -i version
查看正在运行的容器
docker ps 
查看所有的容器
docker ps –a 
停止掉当前容器
docker stop 容器id 或者 容器名称
删除当前容器
docker rm 容器id 或者 容器名称
删除当前镜像
docker rmi 镜像id
查看完整容器id
docker ps --no-trunc

开始搭建集群:

Docker 要求 CentOS 系统的内核版本在 3.10以上。

三台虚拟机:

安装一台克隆2台

安装es的内存一定要设置大一点,复制多台虚拟机完全看你电脑性能,如果8g的运行内存就不要尝试了,是很卡的。上个我的cpu图。

拉取容器指定版本

  docker pull elasticsearch:6.4.3

修改系统参数:

vi /etc/sysctl.conf
vm.max_map_count=262144

sysctl -p

创建ES配置文件:

mkdir -p /data/elasticsearch/{data,logs,config}
vi /data/elasticsearch/config/elasticsearch.yml

cluster.name: elasticsearch-cluster   #集群名称必须一致
node.name: es-node2                     #节点名称可以不一样
network.bind_host: 0.0.0.0       #设置0.0.0.0 表示都可以访问,设置固定ip不能通讯
network.publish_host: 192.168.192.130
http.port: 9200 
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
discovery.zen.ping.unicast.hosts: ["192.168.192.130:9200","192.168.192.131:9200"]
discovery.zen.minimum_master_nodes: 1
## 上面是6.4.3的es集群配置。7.0版本不一样

启动容器:

docker run -d --name=elasticsearch \
  --restart=always \
  -p 9200:9200 -p 9300:9300 \
  -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
  -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
  -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  elasticsearch:6.4.3

命令解释

  • -p 9200:9200端口映射:前表示主机部分,:后表示容器部分。
  • --name elasticsearch指定该容器名称,查看和进行操作都比较方便。
  • -v 挂载目录,规则与端口映射相同。
  • -d elasticsearch表示后台启动elasticsearch
  • plugins表示插件目录,logs表示日志,data表示节点数据

查看最新5分钟日志

docker logs --since 5m  32def08f7a25

看到这里我们es启动成功了,一定要看日志,es虽然启动了,但是状态没有成功,还是失败。启动的时候一定要把es的插件放在plugins里面。以免下次重新停止再重启。

其他两台虚拟机一样只需要修改/elasticsearch.yml配置文件

vi /data/elasticsearch/config/elasticsearch.yml

同样启动2台.....

进入到容器:

docker exec -it elasticsearch /bin/bash

/usr/share/elasticsearch 表示root目录

容器的插件:

可以用命令实现,把虚拟机的文件复制到容器内部

docker cp /data/elasticsearch/plugins/ik elasticsearch:/usr/share/elasticsearch/plugins/

三台es启动成功了,那我们看看集群是否成功了?

我这里成功了

节点信息不同步怎么处理?

删除es目录的data节点,重新启动,三台一定都要删除,重启容器搞定节点信息不同步问题。

总结:搭建es集群的核心。

1,节点信息数据不同步,一定要删除data数据的nodes节点。

2,通过docker logs 查看日志

创作不易转载注明地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨互联网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值