上一篇文章 通过 Haproxy 负载均衡实现 Logstash 集群高可用 里介绍了单个 Haproxy 对 Logstash 集群的负载,在 haproxy 单台机的情况下,如果 haproxy 服务挂掉了,整个应用也将不可用,针对这一问题,加入了 Keepalive 对 Haproxy 进行控制管理。
1. Windows 日志采集系统部署架构
本文将以下面的部署架构为基,搭建 nxlog + Keepalive+Haproxy+ Logstash集群+ES集群+Kibana
高可用的 Windows 日志采集系统。
2. 集群规划以及环境
准备一台 Windows 虚拟机,安装 nxlog,启动 nxlog 服务,可查看博主前几篇文章有涉及 nxlog 的安装启动方式,根据表格配置将机器绑定静态IP,并在虚拟机上安装相应的软件。
3. 安装 Haproxy
在 192.168.96.128
和 192.168.96.129
两台机器分别安装 haproxy,安装步骤一样。先安装 192.168.96.129
。
下载 haproxy
[root@elktest1 home]# wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.3.4.tar.gz/sha512/b6db7f6c573f700ce5e2f533c6b60c5e5cb15fbc31057f3e98c03144c52b87612420e962e5e8ba63176eb1b7459a956c80a0403e9189cb3fde1dcef5bfa64ac5/haproxy-2.3.4.tar.gz
[root@elktest1 home]# tar zxvf haproxy-2.3.4.tar.gz -C /usr/local/elk/
[root@elktest1 home]# cd /usr/local/elk/haproxy-2.3.4/
查看 Linux 内核版本
[root@elktest1 home]# uname -a
Linux elktest1 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
指定内核和安装路径并进行编译
# 通过 uname 得知 Linux elktest1 3.10.0-1127, 则可命名为 linux310
[root@elktest1 home]# make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/elk/haproxy-2.3.4
[root@elktest1 home]# make install PREFIX=/usr/local/elk/haproxy-2.3.4
[root@elktest1 home]# vim /etc/profile
# 在文章尾部添加
export PATH=$PATH:/usr/local/elk/haproxy-2.3.4/sbin
[root@elktest1 home]# source /etc/profile
查看 haproxy 安装情况
[root@elktest1 home]# haproxy -v
HA-Proxy version 2.3.4-10189c9 2021/01/13 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2022.
Known bugs: http://www.haproxy.org/bugs/bugs-2.3.4.html
Running on: Linux 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64
添加 haproxy 用户,和创建日志数据目录
[root@elktest1 ~]# useradd haproxy
[root@elktest1 ~]# mkdir -p /usr/local/elk/haproxy-2.3.4/{etc,logs}
修改 rsyslog 配置
[root@elktest1 ~]# vim /etc/rsyslog.conf
#haproxy
#$ModLoad imudp
#$UDPServerRun 514
#local3.* /usr/local/haproxy/logs/haproxy.log
# 配置为当前 haproxy 的日志地址
local3.* /usr/local/elk/haproxy-2.3.4/logs/haproxy.log
[root@elktest1 ~]# service rsyslog restart
没有配置文件,手动生成 haproxy.cfg
[root@elktest1 ~]# cd /usr/local/elk/haproxy-2.3.4/
[root@elktest1 haproxy-2.3.4]# mkdir conf
[root@elktest1 haproxy-2.3.4]# cd conf/
[root@elktest1 haproxy-2.3.4]# vim haproxy.cfg