如何在haproxy https 代理配置可以正向代理https

haproxy实现tcp代理 - 博客频道 - CSDN.NET
yanggd1987的专栏
当才华还撑不起野心时,那就应该静下心来学习。
分类:haproxy
haproxy大多数情况下在http(七层)代理,如apache,tomcat等,下面我们就来讲下haproxy的tcp(四层)代理,可以用于ssh、mysql、mongodb等多种场合。
10.10.10.15
10.10.10.16
10.10.10.17
haproxy代理mongodb,实现主从读写分离。
unzip haproxy-1.6.4.zip
cd haproxy-1.6.4
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
1.添加haproxy用户并创建相关目录
useradd haproxy
mkdir -p /usr/local/haproxy/{etc,logs}
2.配置日志输出
vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local3.* /usr/local/haproxy/logs/haproxy.log
service rsyslog restart
3.配置文件
127.0.0.1 local3
/var/empty
/var/run/haproxy.pid
log global
timeout connect 5s
timeout client 30s
timeout server 30s
option redispatch
no option dontlognull
option log-separate-errors
listen admin_stats
bind 0.0.0.0:26000
bind-process 1
log 127.0.0.1 local3 err
stats refresh 30s
stats uri /haproxy_status
stats realm welcome login\ Haproxy
stats auth admin:admin
stats hide-version
stats admin if TRUE
frontend mongodb_read
10.10.10.15:27000
default_backend db_read
frontend mongodb_write
10.10.10.15:27001
default_backend db_write
backend db_read
balance roundrobin
server db1 10.10.10.16:27017 check inter 1500 rise 3 fall 3 weight 2
server db2 10.10.10.17:27017 check inter 1500 rise 3 fall 3 weight 2
backend db_write
server db1 10.10.10.16:27017
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
日志格式分析
为方便理解,请查看以下博客:
yanggd1987
排名:第12625名
(5)(2)(18)(4)(14)(6)(27)(2)(6)(12)(2)(7)(3)(5)(10)(19)(5)中国领先的IT技术网站
51CTO旗下网站
如何在Linux上使用HAProxy配置HTTP负载均衡系统?
如今对基于互联网的应用和服务的要求越来越大,这给广大的IT管理员施加了越来越大的压力。面对突如其来的流量猛增、自生的流量增加或者是内部挑战(比如硬件故障和紧急维护),不管怎样,你的互联网应用都必须保持随时可用。
作者:布加迪编译来源:51CTO| 14:35
如今对基于互联网的应用和服务的要求越来越大,这给广大的IT管理员施加了越来越大的压力。面对突如其来的流量猛增、自生的流量增加或者是内部挑战(比如硬件故障和紧急维护),不管怎样,你的互联网应用都必须保持随时可用。连现代化的开发运营和持续交付做法也会危及互联网服务的可靠性和一贯表现。
无法预测或缺乏一贯的表现是你所无法承受的。那么,我们如何能消除这些缺点呢?在大多数情况下,一套合适的负载均衡解决方案有望满足这个要求。今天我将为各位介绍如何使用HAProxy搭建一套HTTP负载均衡系统。
HTTP负载均衡简介
HTTP负载均衡是一种网络解决方案,负责在托管相同应用内容的几台服务器之间分配进入的HTTP或HTTPS流量。由于在多台可用服务器之间均衡了应用请求,负载均衡系统就能防止任何应用服务器变成单一故障点,因而提高了整体的应用可用性和响应能力。它还让你可以随着不断变化的工作负载,轻松地缩小/扩大部署的应用系统的规模,只需添加或删除额外的应用服务器。
哪里使用负载均衡、何时使用?
由于负载均衡系统改进了服务器的利用率,最大限度地提高了可用性,只要你的服务器开始面临繁重负载,或者正为一个较庞大的项目规划架构,就应该使用它。事先规划好负载均衡系统的用途是个好习惯。那样,未来你需要扩展环境规模时,它会证明其用途。
HAProxy是什么东东?
HAProxy是一种流行的开源负载均衡和代理系统,面向GNU/Linux平台上的TCP/HTTP服务器。HAProxy采用了单一线程的事件驱动型架构而设计,它能够轻松地处理10G网卡线路速度,现广泛应用于许多生产环境中。其功能特性包括:自动检查健康状况、可定制的负载均衡算法、支持HTTPS/SSL以及会话速率限制等。
我们在本教程中要达到什么样的目的?
在本教程中,我们将逐步介绍为HTTP网站服务器配置基于HAProxy的负载均衡系统这个过程。
你至少需要一台(最好是两台)网站服务器来证实所搭建负载均衡系统的功能。我们假设,后端HTTP网站服务器已经搭建并运行起来。
将HAProxy安装到Linux上
就大多数发行版而言,我们可以使用你所用发行版的软件包管理器来安装HAProxy。
将HAProxy安装到Debian上
在Debian中,我们需要为Wheezy添加向后移植功能。为此,请在/etc/apt/sources.list.d中创建一个名为&backports.list&的新文件,其内容如下:
deb&http://cdn.debian.net/debian&wheezy&backports&main&
更新你的软件库数据,并安装HAProxy。
#&apt&&get&update &#&apt&&get&install&haproxy&
将HAProxy安装到Ubuntu上
#&apt&&get&install&haproxy&
将HAProxy安装到CentOS和RHEL上
#&yum&install&haproxy&
配置HAProxy
在本教程中,我们假设有两台HTTP网站服务器已搭建并运行起来,其IP地址分别为192.168.100.2和192.168.100.3。我们还假设,负载均衡系统将在IP地址为192.168.100.4的那台服务器处进行配置。
为了让HAProxy发挥功用,你需要更改/etc/haproxy/haproxy.cfg中的几个项目。这些变更在本章节中予以描述。万一某个配置对不同的GNU/Linux发行版而言有所不同,会在相应段落中加以注明。
1. 配置日志功能
你首先要做的工作之一就是,为你的HAProxy建立合适的日志功能,这对将来进行调试大有用处。日志配置内容位于/etc/haproxy/haproxy.cfg的global部分。下面这些是针对特定发行版的指令,用于为HAProxy配置日志。
CentOS或RHEL:
要想在CentOS/RHEL上启用日志功能,把:
log 127.0.0.1 local2
log 127.0.0.1 local0
下一步,在/var/log中为HAProxy创建单独的日志文件。为此,我们需要改动当前的rsyslog配置。为了让配置简单而清楚,我们将在/etc/rsyslog.d/中创建一个名为haproxy.conf的新文件,其内容如下。
$ModLoad&imudp& &$UDPServerRun&514&& &$template&Haproxy,&%msg%\n&& &local0.=info&&/var/log/haproxy.Haproxy& &local0.notice&&/var/log/haproxy&status.Haproxy& &local0.*&~& &
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
#&service&rsyslog&restart&
Debian或Ubuntu:
要想在Debian或Ubuntu上为HAProxy启用日志功能,把:
log&/dev/log&local0 &log&/dev/log&local1&notice&
log&127.0.0.1&local0&
下一步,为HAProxy配置单独的日志文件,编辑/etc/rsyslog.d/中一个名为haproxy.conf的文件(或者Debian中的49-haproxy.conf),其内容如下。
$ModLoad&imudp& &$UDPServerRun&514&& &$template&Haproxy,&%msg%\n&& &local0.=info&&/var/log/haproxy.Haproxy& &local0.notice&&/var/log/haproxy&status.Haproxy& &local0.*&~& &
该配置将把基于$template的所有HAProxy消息隔离到/var/log中的日志文件。现在,重启rsyslog,让变更内容生效。
#&service&rsyslog&restart&
2. 设置默认值
下一步是为HAProxy设置默认变量。找到/etc/haproxy/haproxy.cfg中的defaults部分,把它换成下列配置。
log&&&&&global& &mode&&&&http& &option&&httplog& &option&&dontlognull& &retries&3& &option&redispatch& &maxconn&20000& &contimeout&&&&&&5000& &clitimeout&&&&&&50000& &srvtimeout&&&&&&50000 &
上述配置推荐HTTP负载均衡器使用,但可能不是最适合你环境的解决方案。如果那样,请参阅HAProxy参考手册页,进行适当的改动和调整。
3. 网站服务器集群的配置
网站服务器集群(Webfarm)的配置定义了可用的HTTP服务器集群。我们所建负载均衡系统的大部分设置都将放在这里。现在,我们将创建一些基本的配置,我们的节点将在这里加以定义。把从frontend部分到文件末尾的所有配置换成下列代码:
listen&webfarm&*:80& &&&&&&mode&http& &&&&&&stats&enable& &&&&&&stats&uri&/haproxy?stats& &&&&&&stats&realm&Haproxy\&Statistics& &&&&&&stats&auth&haproxy:stats& &&&&&&balance&roundrobin& &&&&&&cookie&LBN&insert&indirect&nocache& &&&&&&option&httpclose& &&&&&&option&forwardfor& &&&&&&server&web01&192.168.100.2:80&cookie&node1&check& &&&&&&server&web02&192.168.100.3:80&cookie&node2&check&&
&listen webfarm *:80&这一行定义了我们的负载均衡系统将侦听哪些接口。出于本教程的需要,我将该值设为&*&,这让负载均衡系统侦听我们的所有接口。在实际场景下,这可能不合意,应该换成可从互联网来访问的某个接口。
stats&enable& &stats&uri&/haproxy?stats& &stats&realm&Haproxy\&Statistics& &stats&auth&haproxy:stats&&
上述设置声明,可以在http://&load-balancer-IP&/haproxy?stats处访问负载均衡系统的统计数字。这种访问由简单的HTTP验证以及登录名&haproxy&和密码&stats&来确保安全。这些设置应该换成你自己的登录信息。如果你不想让这些统计数字被人看到,那么可以完全禁用它们。
下面是HAProxy统计数字的一个例子。
&balance roundrobin&这一行定义了我们将使用哪种类型的负载均衡。在本教程中,我们将使用简单的轮叫调度算法,这对HTTP负载均衡来说完全绰绰有余。HAProxy还提供了其他类型的负载均衡:
&leastconn:连接数最少的服务器优先接收连接。
&source:对源IP地址进行哈希处理,用运行中服务器的总权重除以哈希值,即可决定哪台服务器将接收请求。
&uri:URI的左边部分(问号前面)经哈希处理,用运行中服务器的总权重除以哈希值。所得结果决定哪台服务器将接收请求。
&url_param:变量中指定的URL参数将在每个HTTP GET请求的查询串中进行查询。你基本上可以将使用蓄意制作的URL(crafted URL)的请求锁定于特定的负载均衡节点。
&hdr(name):HTTP头&name& 将在每个HTTP请求中进行查询,被定向到特定节点。
&cookie LBN insert indirect nocache&这一行让我们的负载均衡系统存储持久性cookie,这让我们得以准确查明集群中的哪个节点用于某一个会话。这些节点cookie将与指定的名称一并存储起来。在我们这个例子中,我使用了&LBN&,但你可以指定自己喜欢的任意名称。节点将为该cookie把字符串作为一个值而存储起来。
server&web01&192.168.100.2:80&cookie&node1&check& &server&web02&192.168.100.3:80&cookie&node2&check& &
上述部分对网站服务器节点集群进行了定义。每台服务器都用内部名称(比如web01和web02)、IP地址和独特的cookie串来表示。cookie串可以定义为你需要的任何名称。我使用了简单的node1、node2 ... node(n)。
启动HAProxy
你完成了配置工作后,可以启动HAProxy,验证一切按预期运行。
在Centos/RHEL上启动HAProxy
使用下列指令,让HAProxy能够在系统启动后启动,并打开它:
#&chkconfig&haproxy&on &#&service&haproxy&start &
当然,别忘了启用防火墙中的端口80,如下所示。
CentOS/RHEL 7上的防火墙:
#&firewall&cmd&&&permanent&&&zone=public&&&add&port=80/tcp &#&firewall&cmd&&&reload &
CentOS/RHEL 6上的防火墙:
把下面这一行添加到/etc/sysconfig/iptables中的这部分&:OUTPUT ACCEPT&:
A&INPUT&&m&state&&&state&NEW&&m&tcp&&p&tcp&&&dport&80&&j&ACCEPT&
然后重启iptables:
#&service&iptables&restart&
在Debian上启动HAProxy
使用下列指令启动HAProxy:
#&service&haproxy&start&
别忘了启用防火墙中的端口80,为此把下面这一行添加到/etc/iptables.up.rules:
A&INPUT&&p&tcp&&&dport&80&&j&ACCEPT&
在Ubuntu上启动HAProxy
让HAProxy能够在系统启动后启动,只要在/etc/default/haproxy中将&ENABLED&选项设为&1&:
ENABLED=1&
启动HAProxy:
#&service&haproxy&start&
然后启用防火墙中的端口80:
#&ufw&allow&80&
测试HAProxy
为了检查HAproxy是否在正常工作,我们可以执行下列步骤:
首先,用下列内容准备好test.php文件:
&header('Content-Type:&text/plain'); &echo&&Server&IP:&&.$_SERVER['SERVER_ADDR']; &echo&&\nX-Forwarded-for:&&.$_SERVER['HTTP_X_FORWARDED_FOR']; &&
该PHP文件将告诉我们哪台服务器(即负载均衡系统)转发请求,哪台后端网站服务器实际处理请求。
把该PHP文件放到这两台后端网站服务器的根目录下。现在,使用curl命令,从负载均衡系统(192.168.100.4)提取这个PHP文件。
$&curl&http://192.168.100.4/test.php&
我们多次运行这个命令时,应该会看到下面两个输出交替出现(由于轮叫调度算法)。
Server IP: 192.168.100.2
X-Forwarded-for: 192.168.100.4
Server IP: 192.168.100.3
X-Forwarded-for: 192.168.100.4
如果我们停止这两台后端网站服务器中的其中一台,curl命令应该仍会执行,将请求定向到另一台可用的网站服务器。
至此,你应该有了一套完全实用的负载均衡系统,能够在轮叫循环模式下为你的网站节点提供请求。与往常一样,你可以随意更改配置,让它更适合自己的基础设施。希望本教程帮助你让自己的网站项目具有更强的抗压力和更高的可用性。
正如大家已经注意到的那样,本教程所含的设置适用于仅仅一套负载均衡系统。这意味着,我们把一个单一故障点换成了另一个单一故障点。在实际场景下,你应该部署至少两套或三套负载均衡系统,以防范可能出现的任何故障,但这不在本教程的讨论范围之内。
要是你有什么问题或建议,欢迎留言。
英文:【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条外电头条外电
24H热文一周话题本月最赞
讲师:0人学习过
讲师:0人学习过
讲师:5人学习过
精选博文论坛热帖下载排行
本书全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linu...
订阅51CTO邮刊##使用haproxy+squid构建正向代理服务
#####正向代理的业务场景
- 假设在局域网内存在6台主机,其中只有一台主机可以上外网,那么其余5台主机就需要通过那一台可以上外网的主机上网,即所谓代理(正向代理)。代理服务器启动后,不能上网的主机只需在IE中配置代理服务器即可。IE中的代理服务器设置为 “Internet选项-&连接-&局域网设置-&代理服务器” 中设置代理服务器的IP和代理服务器的端口。
#####问题来了,如何构建一个代理服务呢?
- 如上述假设,在那一台可以出外网的主机上安装代理软件squid,并进行适当配置即可。应该说明的是,代理软件很多,如果那一台能出外网的主机是Windows系统的话,可以选择ccproxy。这里主要是指在Linux环境下的代理,其他代理软件还有nginx,不过貌似大家都用它做反向代理,做正向代理这里还是用squid吧。
#####squid的安装,配置,运行
sudo apt-get install squid
- 配置, 打开/etc/squid3/squid.conf文件,注意修改如下的配置项
http_port 3128
#代理服务器的端口
##http_access deny !Safe_ports #注释掉此项
##http_access deny manager
#注释掉此项
##http_access deny to_localhost#注释掉此项
##http_access deny all
#注释掉此项
#添加下面两项,设置哪些网段可以访问本代理服务器
acl our_networks src 192.168.29.0/24 192.168.17.0/24
http_access allow our_networks
- 重启服务,使代理服务生效
sudo service squid3 restart
#####用haproxy的目的
- haproxy是负载均衡器,它可以将网络请求按一定算法均匀分布到各个代理服务器(这里指正向代理)上,防止压力都集中在某一个节点上,提高整体的服务的负载能力。
#####此处使用haproxy的场景
- 假设有103台主机需要出外网,其中只有2台能直接访问外网,那么我们接着假设这两台主机的IP分别是192.168.29.210, 192.168.29.211,且已经在上面安装好squid代理服务。 还有一台主机我们将其选做负载均衡所在的机器,假设其IP为192.168.29.212。
- 按上述做法,在其余100台主机上可以设置代理(IE “Internet选项-&连接-&局域网设置-&代理服务器” )为192.168.29.212,haproxy负载均衡器会将网络请求按一定算法均匀打到192.168.29.210, 192.168.29.211两台代理服务器上。
#####haproxy的安装,配置,运行
sudo apt-get install haproxy
- 配置,配置文件位于/etc/haproxy/haproxy.cfg
maxconn 1024
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend secure
bind *:8888
stats enable
stats uri /admin?admin
stats auth admin:admin
stats admin if TRUE
stats refresh 10s
frontend httpproxy
bind 0.0.0.0:4567
default_backend servers
backend servers
balance leastconn
server squid1 192.168.29.210:3128 maxconn 512 weight 1
server squid2 192.168.29.211:3128 maxconn 512 weight 1
- 配置解释
- 内部的“frontend secure”区块表示的是haproxy的web控制台,可以使用[http://192.168.29.212/admin?admin](http://192.168.29.212/admin?admin)来访问,用户名密码这里设置的都是admin,并设置10秒刷新一次。
- 内部的“frontend httpproxy”区块绑定了4567端口,那么那些(100台主机)就可以在IE中设置代理服务器为192.168.29.212,端口4567。
- 内部的“backend servers”区块使用了“leastconn”算法,指的是最少连接者优先(哪一台代理服务器上请求最少,就把请求往这一台代理服务器上打)。“server squid1 192.168.29.210:3128 maxconn 512 weight 1”和“server squid2 192.168.29.211:3128 maxconn 512 weight 1”指的是两台squid的代理服务器。
sudo haproxy -f /etc/haproxy/haproxy.cfg
- 停止运行
sudo killall -9 haproxyhaproxy反向代理详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
haproxy反向代理详解
上传于||文档简介
&&h​a​p​r​o​x​y​配​置​详​解
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩48页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 squid https 正向代理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信