Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Haproxy好。
本次实验配置;
服务器主机 IP 安装软件 系统
Haproxy调度服务器 192.168.30.55 haproxy-1.5.19.tar.gz CentOS7
Nginx节点服务器web1 192.168.30.15 nginx-1.12.0.tar.gz RedHat6.5
Nginx节点服务器web2 192.168.30.99 nginx-1.12.0.tar.gz RedHat6.5
测试客户端 192.168.30.20 IE浏览器用于测试结果 windows7
百度云盘免费源码包:
https://pan.baidu.com/s/1NKKuqYQDiQBxrbRA39H9-w
https://pan.baidu.com/s/1k2VyWSpZ7D4D-PLwUZPFLA
简单实验拓扑图;
实验步骤;
安装配置Nginx节点服务器(两台节点服务器安装基本相同,需编辑不同测试网页文档便于检测实验结果)
yum -y install gcc gcc-c++ pcre-devel zlib-devel #安装编译环境依赖包
tar xzvf nginx-1.12.0.tar.gz -C /opt #将事先准备的nginx源码包解压到/opt目录下
cd /opt/nginx-1.12.0/
useradd -M -s /sbin/nologin nginx #为nginx服务创建独立用户
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install #配置编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin #创建软链接方便管理nginx服务
nginx #启动nginx服务
编辑节点服务器web1测试页面
echo “<h1>this is web 1</h1>”>/usr/local/nginx/html/index.html
编辑节点服务器web2测试页面
echo “<h1>this is web 2</h1>”>/usr/local/nginx/html/index.html
service iptables stop
setenforce 0
安装配置haproxy调度服务器
yum -y install gcc gcc-c++ bzip2-devel pcre-devel #安装haproxy编译环境依赖包
systemctl stop firewalld.service
setenforce 0
tar zxvf haproxy-1.5.19.tar.gz -C /opt #将事先准备的源码包解压到/opt目录下
cd /opt/haproxy-1.5.19/
make TARGET=linux26 #64位系统
make install
mkdir /etc/haproxy #创建haproxy配置文件
cp examples/haproxy.cfg /etc/haproxy/
vim /etc/haproxy/haproxy.cfg
............
# chroot /usr/share/haproxy #行首加“#”注释掉这行参数设定,
........
# redispatch #行首加“#”注释掉这行参数设定,
用下面的listen配置项替换掉配置文件里原来所有的listen配置项。
listen webcluster 0.0.0.0:80 #定义一个webcluster应用,允许任意客户端进行访问80端口
option httpchk GET /index.html #检查web服务器的index.html文档
balance roundrobin #负载均衡调度使用轮询机制
server inst1 192.168.30.15:80 check inter 2000 fall 3 #加入节点服务器web1
server inst2 192.168.30.99:80 check inter 2000 fall 3 #加入节点服务器web2
优化操作, 使用系统服务管理,创建自启动
cp examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
chkconfig --add haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start
测试Haprox y负载均衡功能
通过上面的步骤,已经搭建完成Haproxy的web群集,接下来需要验证群集是否工作正常,一个群集一般需要具备两个特性;(1)高性能;(2)高可用
(1)测试 高性能
在客户端浏览器输入http://192.168.30.55/进行访问,不断刷新,可以看到两个web服务的测试页面不断进行转换。说明web群集的负载均衡调度已经生效,已经满足了群集的高性能需求。
(2)测试高可用
现在将节点服务器web1的nginx服务关掉,在客户端使用浏览器打开http://192.168.30.55/进行访问,只能看到节点服务器web2的测试网页,
由此可以看出,当一台节点出现故障,不会影响群集的使用,这样就满足了群集的可用性。
Haproxy的日志分离
Haproxy的日志默认输出到系统的syslog中,查看起来不是很方便,为了更好地管理haproxy的日志,我们在生产环境中一般单独定义出来,定义的方法如下所述。
(1)修改haproxy配置文件中关于日志配置的选项,加入下面的配置
vim /etc/haproxy/haproxy.cfg
log /dev/log local0 info
log /dev/log local0 notice
将这两行 配置加入到haproxy配置文件的global配置项目中,主要是将haproxy的info及notice日志分别记录到不同的日志文件中
service haproxy restart #重启服务
(2)修改rsyslog配置
为了便于管理,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d目录下,rsyslog启动时会自动加载此目录下的所有配置文件
touch /etc/rsyslog.d/haproxy.conf
vim /etc/rsyslog.d/haproxy.conf
加入下面内容
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
& ~这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下,其中“&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。这里配置的语法是使用rainerscript脚本语言写的
systemctl restart rsyslog.service #重启rsyslog服务,完成rsyslog配置
(3)测试日志信息
在客户端访问http://192.168.30.55/后,查看/var/log/haproxy/haproxy-info.log内容,可以即时查看haproxy的访问请求日志信息
cd /var/log/haproxy
cat haproxy-info.log
转载于:https://blog.51cto.com/13728740/2164213