高可用高性能日志收集系统平台搭建
在传统的访问日志分析系统中, 数据采集效率较低且日志采集目录不能被递归监听, 存储 系统及计算系统缺乏高可用性,构建基于分布式集群的高可用日志采集系统,以减少服务中断时间为目的的服务器集群技术. 由 Flume 核心角色 Agent 将 Nginx 服务器与 HDFS 连接起来, 这一过程由内部有三个组件之一 Source 与 Nginx 服务器下日志文件对接获取数据,Channel 传输给 Sink,由 Sink 上传到 HDFS.而这一过程需要在 Hadoop集群基础上完成,本项目使用 LVS+Keepalived+Nginx 高可用负载均衡搭建日志服务器集群。
涉及技术:Hadoop集群、LVS+Keepalived+Nginx、Flume
一、项目包含的模块
1、Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的 系统。 下图为Flume运行机制 2、项目流程图如下:
二、Hadoop 安装部署
(一)hadoop集群规划图
(二)实现过程
1、 将上传好的 Hadoop 解压到/opa/apps,根据上文的集群规划部署集群 2、编辑六个主要文件,分别是 hadoop-env.sh, core-site.xml, mapred-site.xml, yarn-site.xml, workers 3、将配置好的 Hadoop 目录整个复制到 mini2 和 mini3 上 4、Hadoop 集群第一次启动需要在 mini1 使用 hdfs namenode -format 命令 格式化集群,生成 hdfs 的存储数据的文件 5、格式化完成后启动 HDFS 集群和 YARN 集群会,各个节点出现以下进程 (1)mini1 的进程 (2)mini2 (3)mini3 (4)YARN 集群 web 界面: http://mini1:8088/ (5)浏览 HDFS web 界面: http://mini1:9870/ (6)HDFS 数据节点信息
三、 LVS+Keepalived+Nginx 安装
(一)系统环境准备
1、关闭防火墙 systemctl stop firewalld (临时关闭防火墙) systemctl disable firewalld (禁止firewall开机启动) systemctl status firewalld (查看防火墙状态) 2、禁用Selinux(安全权限管理模块) vi /etc/sysconfig/selinux SELINUX=disabled 3、配置免密登录 配置主机之间的免密ssh登陆
(1)假如 mini1 要登陆 mini2,mini3,mini4 在mini1上操作: 首先生成密钥对,命令如下: ssh-keygen (提示时,直接回车即可) (2)将生产的秘钥copy到【mini1,mini2,mini3】上,命令如下 ssh-copy-id mini1 ssh-copy-id mini2 ssh-copy-id mini3 ssh-copy-id mini4
(二)LVS+KeepAlived安装部署
1、LVS无需安装,安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive。ipvsadm是通过命令行管理,而keepalive读取配置文件管理。 (1)分别在mini1和mini2执行此操作:yum -y install ipvsadm (2)检车是否ipvsadm模块加载进系统: lsmod | grep ip_vs (3)把模块加载进系统 :modprobe ip_vs 2、keepalived安装 (1)分别在mini1和mini2执行如下操作:yum -y install keepalived (2)mini1的keepalived配置如下图 (3)mini2keepalived配置如下图
(三)Nginx安装部署
1、安装c++依赖: yum -y install gcc pcre-devel openssl openssl-devel(必须执行)。 2、解压Nginx安装包, 进入解压好的目录检查安装环境,并指定安装目录./configure --prefix=/opt/apps/nginx. 3、执行make && make install安装成功后有以下四个目录: conf目录:存放配置文件 html目录:存放静态资源 logs目录:存放日志信息 sbin目录:存放nginx的启动命令
4、修改配置文件。 将默认端口已修改为81,配置如下图
(四)realserver.sh配置
1、此脚本用于节点服务器绑定 VIP ,并抑制响应 VIP 的 ARP 请求。这样做的目的是为了不让关于 VIP 的 ARP 广播时,节点服务器应答( 因为节点服务器都绑定了 VIP ,如果不做设置它们会应答,就会乱套 ),配置完后要赋予可执行权限。
2、详细配置,如下图所示
四、负载均衡及高可用测试
1、启动Keepalived 2、启动nginx 3、运行realserver.sh脚本: sh realserver.sh start 4、页面访问http://192.168.80.100:81/ 5、 mini1上执行:ipvsadm -ln, 检查连接情况,结果如图所示便搭建成功
五、面向日志服务器集群的高可用日志采集服务部署
(一)Flume 安装
flume安装非常简单,解压即可使用,但前提是已有 hadoop 环境上传安装包到数据源所在节点上
(二)Flume 测试
1、先用一个最简单的例子来测试一下程序环境是否正常 2、测试结果通过,过程如下图
(三) 高可用日志采集服务器部署
1、实际生产环境中 mini3 和 mini4 其中一个有可能会因为某种原因宕机,因此 我们需要将日志文件进行多层冗余,以防止可能的宕机带来的数据损失 2、第一层 agent 采集配置(mini3、mini4 )
3、 第二层 agent 采集配置
六、 高可用高性能日志收集系统平台整体测试
目前为止, 高可用高性能日志收集系统平台搭建完毕,下一步进行性能测试 1、mini1,mini2 启动第二层 agent 采集程序,出现新进程
2、在 mini3,mini4 启动第一层 agent 采集程序,出现一下新进程
3、将提前写好的主页部署到 Nginx 服务器上,模拟用户进入主页产生日志 (1) 查看 Nginx 服务器时间
(2)进入主页,反复刷新,产生足够多的日志
(3)查看 hdfs 目录下是否存在上传的日志
(4)日志存在,上传成功, 高可用高性能日志收集系统平台,测试完毕,搭建成功。
七、高可用高性能日志收集系统平台故障测试
(一)故障测试
- 在mini2查找到Flume的进程
- 用kill命令结束进程
- 为了区分mini3h和mini4的日志,这里直接往nginx服务器的日志文件追加写入
- 然后进入hdfs的Web端查看日志上传情况
- 可以看日志文件上传成功,接下来下载日志
- 下载完成后解压打开第一和第二个日志文件
- 打开第三个日志文件
- 日志完整,故障测试通过。
八、项目结语
日志内容有时会包含敏感信息,特别是error日志,直接把系统的具体错误抛出来,所以日志除了查看方便,还需要确保日志文件的安全,本文构建了基于分布式集群的高可用日志分析系统,通过实现安全地日志采集服务。 Nginx直连Flume, 自定义Source组件的Flume对访问日志的采集环节做出改进,采用高可用分布式存储系统HDFS、分析访问日志,为企业提供可靠的日志采集服务。实验分别测试了本系统的实时数据采集、监听、存储系统和分析系统的高可用性。 由实验结果表明,相比传统的访问日志分析系统,本系统在数据采集安全性大大提高,且分布式存储系统HDFS及分布式计算系统均满足高可用行。综合分析可得,本文平台可以更加安全地,稳定地完成访问日志的离线和实时分析所需要的日志需求,已完成本次项目部署。
(注:本项目由团队6人合作完成 成员名单:Aisen,康康,飞飞,诗诗,翁翁,升升)
|