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查看完整容器iddocker 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.130http.port: 9200 transport.tcp.port: 9300http.cors.enabled: truehttp.cors.allow-origin: "*"node.master: truenode.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配置文件

同样启动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 查看日志

创作不易转载注明地址。

举报/反馈

互联网小杨

179获赞 56粉丝
分享互联网软件知识技术心得谢谢你的关注
关注
0
0
收藏
分享