在传统的访问日志分析系统中, 数据采集效率较低且日志采集目录不能被递归监听, 存储 系统及计算系统缺乏高可用性,构建基于分布式集群的高可用日志采集系统,以减少服务中断时间为目的的服务器集群技术. 由 Flume 核心角色 Agent 将 Nginx 服务器与 HDFS 连接起来, 这一过程由内部有三个组件之一 Source 与 Nginx 服务器下日志文件对接获取数据,Channel 传输给 Sink,由 Sink 上传到 HDFS.而这一过程需要在 Hadoop集群基础上完成,本项目使用 LVS+Keepalived+Nginx 高可用负载均衡搭建日志服务器集群。
涉及技术:Hadoop集群、LVS+Keepalived+Nginx、Flume
- 高可用高性能日志收集系统平台搭建
- 一、项目包含的模块
- 二、Hadoop 安装部署
- (一)hadoop集群规划图
- (二)实现过程
- 三、 LVS+Keepalived+Nginx 安装
- (一)系统环境准备
- (二)LVS+KeepAlived安装部署
- (三)Nginx安装部署
- (四)realserver.sh配置
- 四、负载均衡及高可用测试
- 五、面向日志服务器集群的高可用日志采集服务部署
- (一)Flume 安装
- (二)Flume 测试
- (三) 高可用日志采集服务器部署
- 六、 高可用高性能日志收集系统平台整体测试
- 七、高可用高性能日志收集系统平台故障测试
- 八、项目结语
1、Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的 系统。
下图为Flume运行机制
2、项目流程图如下:
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 数据节点信息
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
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配置如下图
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,配置如下图
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安装非常简单,解压即可使用,但前提是已有 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,康康,飞飞,诗诗,翁翁,升升)



