大数据

零门槛!基于Docker快速部署ES集群

自从接触Docker之后,对Docker简直是爱不释手,做什么都是行云流水。遇到部署开源软件需求,第一时间想到的都是有没有现成的Docker镜像?能不能直接拉起来使用? 所以,这次网平的ES集群的重建,全部使用DockerHub已有镜像完成部署,整个过程变得非常简单!本文将分享详细的部署过程,希望对ES感兴趣或即将入坑ES的同学带来一些帮助。 一、整体架构 这里,我先给出本文最终的整体架构,让大家有一个清晰的部署思路: 角色分离:本文分享的ES架构中,特意将Master和Client独立出来,后续节点的重启维护都能快速完成,对用户几乎没有影响。另外将这些角色独立出来的以后,对应的计算资源消耗也就从Data节点剥离了出来,更容易掌握Data节点资源消耗与写入量和查询量之间的联系,非常有利于集群后续的容量管理和规划,算是一个比较成熟的中小型方案,准备正儿八经开搞的同学可以参考部署。 Ps:详细的ES角色职责说明可以查看官方文档。 数据流向:Beats或自研系统上报日志到Kafka,然后Logstash从Kafka读取数据写入ES.Client,最终数据存放到ES.Data节点。用户可以通过Kibana或ES.Client的Restful接口查询数据。 本文涉及的IP的角色属性清单: 名称 服务器IP 角色 备注 Docker仓库 192.168.1.111 Docker/registry 内网私有仓库,需要外网 Kafka Cluster 192.168.1.100 Kafka/Zookeeper 192.168.1.101 Kafka/Zookeeper 192.168.1.102 Kafka/Zookeeper ES Cluster 192.168.2.100 ES: Master/Client/Kibana 128Gx35核 192.168.2.101 ES: Master/Client/Kibana 192.168.2.102 ES: Master/Client/Kibana 192.168.3.100 ES: DATA    64Gx32核 2TBx12 Ps:预算充足的强烈推荐上SSD硬盘,可以极大的提高集群性能! 192.168.3.101 ES: DATA 192.168.3.102 ES: DATA 192.168.3.103 ES: DATA  本文涉及的部分参数简单解释(更多详细解释请咨询搜索引擎): 本文涉及的部分参数简单解释(更多详细解释请咨询搜索引擎): 二、Docker资源 1、Docker私有仓库搭建(针对内网环境) ①、在有外网的服务器 192.168.1.111 上进行如下操作: Ps:若内部没有外网服务器,可以使用离线导出导入(save/load)的方案来做本地仓库,具体参考我之前整理的Docker入门教程-->传送门 ②、docker启动后,开始拉取所需镜像: 以下镜像均位于dockerHub,拉取龟速,这里可以使用阿里云的dockerHub加速服务(腾讯云的仅支持腾讯云服务器内网使用) zookeeper 镜像主页:https://hub.docker.com/_/zookeeper/ kafka 镜像主页: https://hub.docker.com/r/wurstmeister/kafka/ Elastic 镜像主页:https://www.docker.elastic.co/ Ps:6.X版本强制启用了content-type头部请求,比较烦,本文选择5.X的最后一个版本,实际使用请自行抉择。 完成以上步骤,我们就在192.168.1.111上建立了一个Docker私有仓库,地址是 192.168.1.111:5000。 2、所有服务器节点都安装要docker,并开启私有仓库支持 vim /etc/sysconfig/docker 添加兼容私有仓库非https协议配置: 启动Docker: 完成这一步之后,Docker环境已准备完毕。 三、部署Kafka集群 Ps:若只是单纯部署ES集群,而不需要用到kafka,可以跳过本步骤 1、部署zookeeper ①、部署节点1 ②、部署节点2 ③、部署节点3 2、部署kafka ①、部署节点1 ②、部署节点2 只需要修改如下参数,其他和节点1代码一样: ③、部署节点3 同上所述,只需要修改如下参数: 完成之后,我们就使用纯Docker搭建了一个Kafka集群。 四、部署ES集群 1、内核参数优化 vim /etc/sysctl.conf 最后,执行 sysctl -p 生效 3、创建挂载目录 Master节点:...
阅读全文