ELK集群搭建最佳实践

      我们的需求是存储全国上万多家电厂的海量日志,所以一开始我们调研elasticsearch在海量日志收集、处理、存储、分析方面有着独一无二的优势,比如部署简单、架构简单又是分布式、可以水平伸缩扩展。所以我们毫不犹豫选择了elk来搭建我们的海量日志架构。接下怎么做就相对简单了,我就分享一下我们在搭建ELK集群的实践经验。 

  •  安装镜像准备

elasticsearch的安装包有tar包、rpm包,就开箱即用原则、tar包的二次手动配置工作较多,有一定的门槛,rpm包相对简单,但是我们选择了另外一种方式,开源入侵检测系统SELKS系统,SELKS以及集成elasticsearch、kibana、logstash,可以这样说装个系统,顺便就把elk安装了,极大简化了工作量,类似于docker镜像,可以实现块扩展部署。

  • 物理机配置

elastic官网上提到,es可以运行在廉价的普通物理机上,我们决定试一试,正好生产上有一批退下来的组装服务器,我们把内存扩展到64GB,磁盘使用机械硬盘,这里有个点,就是我们没有做raid5阵列,而是raid0,这是因为es的副本机制和故障转移能够很好的解决磁盘引起的故障问题,后续会讲到运维中我们是如何碰到这种问题并解决的,总之如果你对es足够了解,甚至都不用做raid0,只需将磁盘直接挂在到es的多个数据存储路径下的,但是当时我们没有足够的时间去尝试验证(技术不成熟)

  • 集群搭建

如果你搭建过hadoop的大数据平台,你真的会觉得,es的集群搭建真是简单的不得了,只需在他的yml文件将必要的选项更改一下,具体的配置你可在官网或者技术博客中找到,这里我只说一下版本7.0之前,要注意脑裂的问题,7.0之后就不需要了,另外一个特色就是我们集群之间通信用的是一个IP地址,对外通信用的是另外一个IP,这里通过network.bind_host:对外IP地址和network.publish_host:集群之间通信地址两个地方来实现,还有一个问题集群角色划分问题,当时由于每个集群五个节点,所以没有划分单一职责的master节点,如果你集群规模在5台以上,建议配置专属master节点(配置性能一般的服务器就行)

就这样从物理机准备、系统安装、集群配置、服务器上架、综合布线、网络调试到集群上线运行,人手只有两人的情况下,五天全部搞定。实际集群搭建过程仅仅不到一个小时,剩下的时间都是准备工作

  • 后期维护

前面讲到,我们没有做磁盘raid5阵列,而是raid0 ,虽然充分压榨了磁盘空间,但是万一有块硬盘出现故障,不就凉凉,其实集群上线后,真就碰到过这种情况,还是两次,一块硬盘莫名其妙坏了,整个服务器系统都瘫了,但是由于采用selks系统,所以更换硬盘,直接重做系统,把备份好的配置文件直接远程发过来覆盖,重启elk,等待十几秒,自动加入集群,集群十来分恢复正常(由黄变绿,这要更数据量大小有关,数据量越大,后期恢复的过程也很漫长)整个过程我们最快曾在30分内搞定。

总结

一开始因为人手有限,技术有限,我们追求的架构就是越简单越好,开箱即用最好,而elasticsearch恰恰符合我们的需求,我们在对es做了大量准备工作后(不断看官网官网官网)对es的性能有了些了解,所以我们也大胆尝试,从底层存储、网络配置以及集群配置等,另外就是为了实现出现故障快速恢复,优先保证生产需要,后期慢慢研究的原则,我们选用selks系统,并把集群的配置文件做了备份,这样出现故障,通过重做系统(这里很像docker的设计思想,一个实例故障了,可以抛弃,马上重启一个一模一样的实例)直接将备份好的配置文件复制过来,就能短时间内回复正常,现在我们的集群以这样的方式连续运行廉价的组装服务器上已经持续了一年有半,数据累计已经到达百TB级别。

 

 

      

 

 

   

 

你可能感兴趣的:(ELK,elk,elasticsearch,es,经验分享,大数据)