Haproxy+Nginx实现web负载均衡群集
Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx,相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Hapr oxy好。Haproxy的官方网站是http://haproxy.1wt.eu/。
本案例介绍使用Haproxy及Nginx搭建一套web群集。
一、案例环境
使用三台服务器模拟搭建一套web群集,具体的拓补图如下:
主机 | 系统 | IP地址 | 主要软件 |
---|---|---|---|
Haproxy服务器 | CentOS7.4 X86_64 | 172.16.10.30 | haproxy-1.5.19.tar.gz |
Nginx服务器1 | CentOS7.4 X86_64 | 172.16.10.10 | nginx-1.12.0.tar.gz |
Nginx服务器2 | CentOS7.4 X86_64 | 172.16.10.20 | nginx-1.12.0.tar.gz |
客户端 | Windows7 | 172.16.10.8 | IE浏览器 |
二.编译安装Nginx服务器
1.搭建Nginx1
使用nginx-1.12.0.tar.gz安装包进行编译安装
[root@localhost ~]# yum install gcc gcc-c++ pcre-devel zlib-devel make-y
[root@localhost ~]# useradd -M -s /sbin/nologin nginx #创建运行用户
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx #配置相关参数
[root@localhost nginx-1.12.0]# make && make install #安装
安装完后的默认信息如下
- 默认安装目录:/usr/local/nginx
- 默认日志:/usr/local/nginx/logs
- 默认监听端口:80
- 默认web目录:/usr/local/nginx
接下来设置测试页面并启动Nginx服务。
[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 172.16.10.10" > test.html
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost ~]# nginx #启动
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0
在客户端访问http://172.16.10.10/test.html,网页正常显示。
2.搭建Nginx2
编译安装的步骤与Nginx1相同,不同之处在于建立测试页面。
[root@localhost ~]# cd /usr/local/nginx/html
[root@localhost html]# echo "Server 172.16.10.20" > test.html
三、编译安装Haproxy
使用haproxy-1.5.19.tar.gz安装包进行编译安装
[root@localhost ~]# yum install gcc gcc-c++ pcre-devel bzip2-devel make -y #用yum安装一系列d的环境支持
[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz -C /opt/ #解压haproxy软件包至/opt目录下
[root@localhost ~]# cd /opt/haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux26 #64位系统
[root@localhost haproxy-1.5.19]# make install #安装
四.创建Haproxy的配置文件
Haproxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy #创建配置文件目录
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/ #将haproxy.cfg文件复制到配置文件目录下
[root@localhost haproxy-1.5.19]# cd /etc/haproxy/
[root@localhost haproxy]# vim haproxy.cfg
#删除以下语句
chroot /usr/share/haproxy #禁锢到haproxy的根目录下
redispatch #强制将请求发送到已经down掉的机器#添加
listen webcluster 0.0.0.0:80 #定义一个webcluster的应用option httpchk GET /test.html #访问服务器的test.html文件balance roundrobinserver inst1 172.16.10.10:80 check inter 2000 fall 3 #定义nginx节点服务器server inst2 172.16.10.20:80 check inter 2000 fall 3
五.创建Haproxy自启动脚本
[root@localhost haproxy]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy]# chmod +x haproxy
[root@localhost haproxy]# chkconfig --add /etc/init.d/haproxy #添加系统服务
[root@localhost haproxy]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy]# service haproxy start #启动Haproxy服务
[root@localhost haproxy]# systemctl stop firewalld.service #关闭防火墙
六、测试web群集
通过上面的步骤,已经搭建完成Haproxy的web群集,接下来验证群集是否正常工作。一个群集一般需要具备两个特性,第一个是高性能,第二个是高可用。
1.测试高性能
在客户端使用浏览器打开http://172.16.10.30/test.html, 浏览器显示信息如图所示:
刷新一下,显示信息如图所示:
可以看到群集的负载均衡调度生效,满足群集的高性能要求。
2.测试高可用
将172.16.10.10的Nginx服务器停用,在客户端使用浏览器打开http://172.16.10.30/test。html ,浏览器显示信息如图所示:
从中可以看出,当一台节点出现故障时,不会影响群集的使用,这样满足了群集的高可用性。
七、Haproxy的日志
Haproxy的日志默认输出系统的syslog中,查看不方便,在生产环境中可以单独定义出来。
1.修改haproxy配置文件中(/etc/haproxy/haproxy.cfg)关于日志配置的选项,加入下面的配置:
log /dev/log local0 info
log /dev/log local0 notice
将这两行配置放到global配置项目中,主要是将info及notice日志分别记录到不同的日志文件中。
2.然后重启Haproxy的服务
[root@localhost ~]# service haproxy restart #重新启动Haproxy服务
3.修改rsyslog配置
为了便于管理,将Haproxy的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
[root@localhost ~]# touch /etc/rsyslog.d/haproxy.conf
[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
加入下面的内容:
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log #info日志记录到/var/log/haproxy/haproxy-info.log下&~ #表示日志写入到日志文件后,rsyslog停止处理这个信息if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log #notice日志记录到/var/log/haproxy/haproxy-notice.log下&~
4.保存配置文件并重启rsyslog服务
[root@localhost ~]# systemctl restart rsyslog.service
5.测试日志信息
在客户端访问http://172.16.10.30/test.html后,可以使用 tail -f /var/log/haproxy/haproxy-info.log 即时查看haproxy的访问请求日志。
[root@localhost ~]# tail -f /var/log/haproxy/haproxy-info.log
Jun 30 21:20:48 localhost haproxy[4202]: 172.16.10.8:50352 [30/Jun/2018:21:20:48.466] webcluster webcluster/inst1 1/0/0/1/2 200 279 - - ---- 1/1/0/1/0 0/0 "GET /test.html HTTP/1.1"
Jun 30 21:21:58 localhost haproxy[4202]: 172.16.10.8:50353 [30/Jun/2018:21:21:58.114] webcluster webcluster/inst2 0/0/4/1/5 200 249 - - ---- 1/1/0/1/0 0/0 "GET /test.html HTTP/1.1"
转载于:https://blog.51cto.com/11134648/2134644
Haproxy+Nginx实现web负载均衡群集相关推荐
- nginx实现web负载均衡
1.安装相关依赖包(开发包组"Development Tools"和 "Development Libraries",以及pcre-devel包) # yum ...
- Nginx+Tomcat负载均衡群集
通常情况下,单个Tomcat站点由于可能出现单点故障而无法应付客户复杂多样的请求,所以需要结合Nginx强大的处理并发连接能力,将Nginx作为负载均衡器,用于调用Tomcat服务器,从而实现负载均衡 ...
- 基于HAProxy+Keepalived高可用负载均衡web服务的搭建
一 原理简介 1.HAProxy HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的we ...
- Web负载均衡解决方案 HAproxy
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保 ...
- 配置 Haproxy 负载均衡群集
配置 haproxy 负载均衡群集
- 集群(三)——haproxy+nginx搭建web集群
集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...
- LVS负载均衡群集—NAT模式实例
文章目录 前言 一.群集与分布式 1.1 群集的含义 1.2 系统性能扩展方式 1.3 群集的三种类型 1.4 LVS的负载调度算法 1.5 分布式系统 1.6 集群和分布式 1.7 负载均衡群集架构 ...
- Linux LVS 负载均衡群集
目录 Linux LVS 负载均衡群集 一.集群与分布式 集群的含义 LVS 模型 系统性能扩展方式 群集的三种类型 负载均衡群集 高可用群集 高性能运算群集 LVS 的负载调度算法 分布式系统 集群 ...
- LVS负载均衡群集 --NAT模式实战部署(图文详解)
目录 一.群集应用概述 1.1 群集的含义 1.2 应用场景出现高并发的解决方案 1.3 系统性能扩展方式 1.4 群集的三种分类 1.4.1 负载均衡群集 1.4.2 高可用群集 1.4.3 高性能 ...
最新文章
- 【必看】做了3年运维却不涨薪?那是你还没get这个技能
- php提交后清楚表单缓存,PHP提交表单后如何控制缓存 | 学步园
- 30是什么意思_“29+16”变“30+18”是什么意思?独立艺术院校有何优势?报考需要注意什么?...
- LeetCode题库整理【Java】—— 7整数反转
- oralcle中的性能统计基本用法statpack
- ubunut 安装 pyqt5
- PR-Place-performing Placement and Optimization-1
- 最新邮箱密码破解方法
- 世界互联网大会:马云演讲实录
- 建立一个电脑网络至少需要两台计算机,两台电脑见建立一个局域网方法介绍
- VOT数据集自动/手动下载
- Error: com.android.ide.common.process.ProcessException
- 拿到外卖后秒退单,一连12天吃霸王餐的女子栽了!
- CSS 中 a 标签为什么不能继承父类的颜色?
- Android9.0默认将开发者选项中的OEM锁开关打开
- 神马广告投放的展现样式有哪些?神马广告投放的优势
- 怎样才能做好SNS社区网站
- (附源码)node.js华联招聘网站011229
- C#程序发布时,一定要好好地保护,不然你会后悔的
- React Native BLE蓝牙通信 App开发