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安装包进行编译安装

[[email protected] ~]# yum install gcc gcc-c++ pcre-devel zlib-devel make-y
[[email protected] ~]# useradd -M -s /sbin/nologin nginx                #创建运行用户
[[email protected] ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt/
[[email protected] ~]# cd /opt/nginx-1.12.0/
[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx         #配置相关参数
[[email protected] nginx-1.12.0]# make && make install   #安装

安装完后的默认信息如下

  • 默认安装目录:/usr/local/nginx
  • 默认日志:/usr/local/nginx/logs
  • 默认监听端口:80
  • 默认web目录:/usr/local/nginx

接下来设置测试页面并启动Nginx服务。

[[email protected] ~]# cd /usr/local/nginx/html
[[email protected] html]# echo "Server 172.16.10.10" > test.html
[[email protected] ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] ~]# nginx             #启动
[[email protected] ~]# systemctl stop firewalld.service    #关闭防火墙
[[email protected] ~]# setenforce 0

在客户端访问http://172.16.10.10/test.html,网页正常显示。

2.搭建Nginx2

编译安装的步骤与Nginx1相同,不同之处在于建立测试页面。

[[email protected] ~]# cd /usr/local/nginx/html
[[email protected] html]# echo "Server 172.16.10.20" > test.html

三、编译安装Haproxy

使用haproxy-1.5.19.tar.gz安装包进行编译安装

[[email protected] ~]# yum install gcc gcc-c++ pcre-devel bzip2-devel make -y #用yum安装一系列d的环境支持
[[email protected] ~]# tar zxvf haproxy-1.5.19.tar.gz -C /opt/ #解压haproxy软件包至/opt目录下
[[email protected] ~]# cd /opt/haproxy-1.5.19/
[[email protected] haproxy-1.5.19]# make TARGET=linux26  #64位系统
[[email protected] haproxy-1.5.19]# make install   #安装

四.创建Haproxy的配置文件

Haproxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑

[[email protected] haproxy-1.5.19]# mkdir /etc/haproxy    #创建配置文件目录
[[email protected] haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/  #将haproxy.cfg文件复制到配置文件目录下
[[email protected] haproxy-1.5.19]# cd /etc/haproxy/
[[email protected] 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 roundrobin
        server 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自启动脚本

[[email protected] haproxy]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[[email protected] haproxy]# chmod +x haproxy
[[email protected] haproxy]# chkconfig --add /etc/init.d/haproxy  #添加系统服务
[[email protected] haproxy]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[[email protected] haproxy]# service haproxy start      #启动Haproxy服务
[[email protected] 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的服务

[[email protected] ~]# service haproxy restart      #重新启动Haproxy服务

3.修改rsyslog配置

为了便于管理,将Haproxy的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。

[[email protected] ~]# touch /etc/rsyslog.d/haproxy.conf
[[email protected] ~]# 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服务

[[email protected] ~]# systemctl restart rsyslog.service

5.测试日志信息

在客户端访问http://172.16.10.30/test.html后,可以使用 tail -f /var/log/haproxy/haproxy-info.log 即时查看haproxy的访问请求日志。

[[email protected] ~]# 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"

原文地址:http://blog.51cto.com/11134648/2134644

时间: 2024-08-01 15:21:33

Haproxy+Nginx实现web负载均衡群集的相关文章

Haproxy结合Nginx实现Web负载均衡群集

简介 Haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. Haproxy调度算法原理 一.RR(Round Robin).轮询调度 理解举例:有三个节点A.B.C,

Haproxy+keepalied实现web负载均衡

一.实验拓扑图: keepalived: keepalived的主要目的是为ipvs提供高可用性,因此keepalived除了能够实现资源转移之外,自身能够调用ipvsadm命令来生成规则,而且还能够检测后端Rserver服务的健康状态检测.keepalived自身就是一个服务 ,启动之后工作在两个节点上(可以是多个节点),一个为当前活动节点,一个为备用节点简称为一主(master)一备(backup).master会不时的向backup传递通告信息(这种通告信息机制是基于vrrp协议),备用节

Nginx+Tomcat实现负载均衡群集实例,可跟做!!!

通常情况下一台Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独用于生产环境.所以我们就需要一套更可靠的解决方案来完善Web站点架构. Nginx是一款非常优秀的HTTP服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定.并且内存.CPU等系统资源消耗非常低.目前的很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力. 案例环境 案例实施 (1)安装部署Tomcat 1服

nginx实现web负载均衡

1.安装相关依赖包(开发包组"Development Tools"和 "Development Libraries",以及pcre-devel包) # yum -y groupinstall "Development Tools" # yum -y install pcre-devel 2.创建运行nginx服务的用户组 # groupadd -r nginx # useradd -r -g nginx nginx 3.接着开始编译和安装: #

CentOS 7搭建Haproxy+Nginx+Firewalld+DNS负载均衡

一.部署第一台Nginx网站 关于Nginx的原理概述及详细配置请参考博文:Centos 7部署Nginx网站服务 [[email protected] ~]# yum -y install prce-devel zlib-devel <!--安装Nginx依赖--> [[email protected] ~]# useradd -M -s /sbin/nologin nginx <!--创建管理Nginx账户--> [[email protected] ~]# umount /m

Haproxy+Nginx负载均衡群集及调度日志管理

关于负载均衡群集,在本文之前已经发表有关负载均衡群集的文章,如:Nginx+Tomcat负载均衡群集.LVS-NAT模式的负载均衡群集.LVS-DR+Keepalive高可用群集; 就性能而言,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强. LVS的两种模式性能较好,由于搭建过程较为复杂,后期维护也较为繁琐. haproxy是一种轻量级调度服务软件,HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数.且搭建配置较为简单. 常用负载均衡

基于HAProxy+Keepalived高可用负载均衡web服务的搭建

一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进当前的架构中, 同时可以保护web服务器不被暴露到网络上.2.KeepalivedKeepalived 是一个基于VRRP协议来实现的LVS服务高

Nginx + Tomcat 负载均衡群集 【内附源码包】

前言: 1·在之前都学习 Linux 的一些服务和搭建,都很熟悉 !这篇文章主要讲Nginx.Tomcat与 Nginx + Tomcat 负载均衡群集.2·在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件--Nginx,它是由俄罗斯 Lgor Sysoev(伊戈尔·赛索耶夫)开发. Nginx 的优点: 1·稳定性2·系统资源消耗低3·高并发链接的处理能力 (30000~50000 个并发请求),核心优点!4·反向代理服务器5·安装

Nginx+Tomcat负载均衡群集(实战可跟做!)

Nginx+Tomcat负载均衡群集 nginx处理静态 tomcat处理动态 合并为动静分离(前后端分离) Tomcat重要目录 bin:存放启动和关闭Tomcat脚本conf:存放Tomcat不同的配置文件doc:存放Tomcat文档lib/japser/common:存放Tomcat运行需要的库文件logs:存放Tomcat执行时的LOG文件src:存放Tomcat的源代码webapps:Tomcat的主要Web发布目录 Demo前置知识点: Nginx静态处理优势 1.Nginx处理静态