HAProxy反向代理相关配置

何谓代理?

所谓的代理一般分为两种,即正向代理和反向代理。正向代理可以实现让不同的主机通过代理服务器使用同一个地址和Internet上的其他主机通信,通常在一个局域网内只有一个公网IP时都需要用到正向代理,而反向代理则实现的是将来自不同主机的请求发送给后端的其他服务器就行处理,而自己不负责具体如何去处理。

HAProxy介绍

HAProxy是一款基于Linux平台且开源的反向代理实现软件,同时支持虚拟主机,可以提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。HAProxy特别适用于负载特别大的web站点,这些站点通常又需要回话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数万计的并发连接。

并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

HAProxy实现反向代理的一些配置实例

接下来将通过配置HAProxy的形式介绍HAProxy的配置。

实验地址规划


主机


IP


用途


A


192.168.2.240/24


安装HAProxy


B


192.168.2.241/24


安装HTTPD


B


192.168.2.242/24


安装HTTPD

准备工作:

在主机A上安装好HAProxy,主机B上安装好HTTPD,

配置好yum源后可直接使用yum安装,并为主机B配置两个地址,在此就不再赘述

例1:将来自客户端的请求反向代理至后端两个不同的web-server

(1)配置虚拟主机

注释主配置文件/etc/http/conf/httpd.conf中的DocumentRoot项,然后在/etc/http/conf.d/中新建文件virtual.conf文件,并添加如下内容

<VirtualHost 192.168.2.241:80>

DocumentRoot /var/www/test1

ServerName www.test1.com

</VirtualHost>

<VirtualHost 192.168.2.242:80>

DocumentRoot /var/www/test2

ServerName www.test2.com

</VirtualHost>

新建虚拟主机目录,并提供虚拟主机主页面文件

[[email protected] ~]# mkdir /var/www/test1

[[email protected] ~]# mkdir /var/www/test2

[[email protected] ~]# echo "this is test1" >/var/www/test1/index.html

[[email protected] ~]# echo "this is test2" >/var/www/test2/index.html

(2)配置主机A,编辑HAProxy主配置文件如下

frontend testservers *:80

use_backend web1

backend web1

balance     roundrobin

server     web1 192.168.2.241:80

server     web2 192.168.2.242:80

注释:配置项说明

frontend :用于定义前端监听的套接字,用户访问服务器时就是通过这些套接字与服务器通信

use_backend:指定使用哪个后端作为响应,通常后端会通过backend来配置一个或者一组服务器,用来响应前端代理过来的请求

backend:定义后端一系列服务器,通常可以通过名字引用,当前端的frontend接收进请求后就会把客户端的请求发给响应的backend

balance:指定调度算法,调度算法有以下几类

roundrobin:和lvs中的rr类似,不过该调度算法可在server后面加上相应的权重,加上权重后则成为基于权重的轮询调度算法,类似于wrr

static-rr:该算法和roundrobin一样,可基于权重做轮询,但是roundrobin是动态调度算法,可动态更新服务器的权重,并实时应用,而static-rr则是静态的,不会实时应用服务器权重。

leastconn:最少连接调度算法,该算法会把客户端的请求发给后端负载最小的服务器,该算法是动态算法,会实时根据每台服务器权重进行计算,然后动态判断请求的去向。

source:该算法根会据请求的源地址进行hash计算的结果,把请求转发给后端服务器,基于该调度算法,来自同一客户端IP的请求会始终被发往后端的同一台服务器。不过,当后端服务器宕机或添加了新的服务器时,许多的请求可能会被发往与之间请求不同的服务器,常用语负载均衡无cookie功能的基于TCP的协议,默认为动态,可通过hash-type修改

hash-type:指定hash算法的类型,后可跟如下两个选项

map-based:取模算法(静态)

constraint:一致性hash算法(动态)

uri:对uri的左半部分(“?”标记之前的部分)进行hash运算。并由服务器的总权重相除后派发至某匹配的服务器。

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

params:参数,

query:如何向数据库发起查询请求

frag:片段

url_param:通过<argument>为URL指定的参数在每个HTTP GET请求中将会被索引,通过找到了指定的参数且其通过等于号“=”被赋予一个值。那么此值将被执行hash运算并被服务器的总权重相除后派发至某匹配的服务器,可以使用hash_type指定hash算法类型

her(<name>):对于每个HTTP请求,通过<name>指定的HTTP首部将会被检索,如果对于那个的首部没有出现或其没有有效值,则使用轮询算法对其想用请求进行调度。此算法默认为静态,可以使用hash_type修改此特性。

例2:开启haproxy状态页,并要求基于用户认证后才能访问

编辑配置文件/etc/haproxy/haproxy.cfg,在backend段内添加如下配置项:

stats enable

stats uri /haproxy-stats

stats realm Haproxy Statistics

stats hide-version

stats scope .

stats auth zhangsan:adminadmin

stats auth lisi:adminadmin

重启或重读配置文件测试

注释:

stats enable #:启用状态页功能

stats uri /haproxy-stats  #:设定状态页的访问路径

stats realm please-input-secreate #:显示认证提示信息

stats hide-version #:影藏首部信息

stats scope . #:启用统计报告,并限制统计报告的区域

stats auth zhangsan:adminadmin #:添加认证用户

stats auth lisi:adminadmin #:添加认证用户

例3:开启HAProxy日志记录功能

编辑配置文件在frontend段内添加如下参数

log       127.0.0.1:514 local2

编辑rsyslog配置文件把如下两项的前面#去掉

$ModLoad imudp

$UDPServerRun 514

重启rsyslog和haproxy服务即可

注释:

log:记录日志,可以放在不同frontend或者backend中,用于记录不同实例的日志

格式:log <address><facility>[<level>[<minlevel>]]

adrress:使用的日志服务器的地址

facility:指定某个日志设施,用于后端日志服务器记录日志时调用

level:定义日志级别,对日志信息进行过滤

minlevel:定义所需记录日志的最小级别

其他选项都是围绕其后端代理设置展开,可参考官方文档:http://cbonte.github.io/haproxy-dconv/configuration-1.4.html

时间: 2024-11-07 16:57:21

HAProxy反向代理相关配置的相关文章

haproxy反向代理功能配置

使用场景 假如要实现这样的环境:haproxy反向代理4个nginx节点,nginx1和nginx2结合php提供动态web服务,nginx3和nginx4提供静态web服务.如下图: 由于默认配置文件中和超时时间相关的设置比较不合理,所以建议修改这些时间.另外还有些建议开启或关闭的的项也尽量开启或关闭. haproxy配置说明 关于 haproxy 安装与配置,可详见HaProxy安装和常用命令 haproxy 默认配置说明 #查看默认 haproxy.cfg 配置文件 cat /usr/lo

46.Haproxy反向代理

Haproxy反向代理 haproxy的作用:反向代理服务器,当公网用户来访问web服务器时,由haproxy服务器来指定交给那个web服务器处理,以实现高可用性和群集的负载均衡. 案例实施步骤: v 编译安装niginx服务器 # yum -y install pcre-devel zlib-devel # useradd -M -s /sbin/nologin nginx # tar xzvf nginx-1.6.0.tar.gz # cd nginx-1.6.0 #./configure

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再

nginx web+反向代理 的配置介绍

user  www;   #定义Nginx运行的用户和用户组 worker_processes  2;  #nginx进程数,建议设置为等于CPU总核心数. #error_log  logs/error.log;     全局错误日志定义类型 #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid;    进程文件 events {  工作模式与连接数上限 w

haproxy反向代理环境部署

之前介绍过nginx反向代理和负载均衡的部署,今天这里介绍下haproxy反向代理的部署过程. 背景:前方有一台haproxy代理机器(有公网ip),后方两台realserver机器(没有公网ip,部署了很多站点)将域名解析到haproxy代理机器的公网ip,在haproxy配置文件里,根据域名转发至后端realserver上. haproxy代理:根据域名进行转发(直接是域名对域名)nginx代理:根据端口进行转发(一个域名对于后端realserver的一个端口,多个域名就对于多个端口)

【转】Nginx服务器的反向代理proxy_pass配置方法讲解

[转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的,如: location ~ /* { proxy_pass http://127.0.0.1:8008; } 或者可以 location / { proxy_pass http://127.0.0.1:8008; } Apache2的反向代理的配置是: ProxyPass /ysz/ http://

nginx的反向代理和配置

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一  概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接

Nginx专题(1):Nginx之反向代理及配置

摘要:本文从Nginx的概念出发,分别从反向代理的概念.优势.配置代码3个方面介绍了Nginx的特性之一反向代理. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒<Nginx的细枝末节> 分享者:宜信支付结算八方数据团队高级技术经理 周恒 原文首发于支付结算技术团队公号:野指针 一.Nginx概念解读 对于新事物的理解,最好的方式就是从概念入手,本文作为<Nginx专题>系列文章的第一篇,先从Nginx的名称开始来分解

HAProxy介绍和相关配置演示

HAProxy提供高可用性(体现在可以对后端RS的健康检查).负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.