标签:
HAProxy: 实现了一种事件驱动,单一进程模型,支持数万计的并发连接,用于为tcp和http应用程序提供高可用,负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点
代理(http):
正向代理:
反向代理:
代理作用:web缓存(加速)、反向代理、内容路由(根据流量及内容类型等将请求转发至特定服务器)、转码器;
在代理服务器上添加Via首部;
缓存的作用:
减少冗余内容传输;
节省带宽、缓解网络瓶颈;
降低了对原始服务器的请求压力;
降低了传输延迟
yum -y install haproxy,安装haproxy rpm -ql haproxy,查看安装了哪些包,找到主配置文件/etc/haproxy/haproxy.cfg
全局配置段:
除去全局配置段,其他的都是代理配置段
chroot 切换根目录,将haproxy都运行在/var/lib/haproxy 这样做是为了增加haproxy的安全
pidfile 指定主进程文件 maxconn 默认最大连接数 user 以哪个用户运行haproxy group 以哪个组运行haproxy daemon 运行位守护进程 stats socket 图中有解释(这样做是为了基于共享内存访问数据,而不需要通过tcp连接以提高运行性能)
第一项log 指所有日志都记录到本机, 通过local2设备输出,因此还得去/etc/rsyslog.conf中添加和修改必要参数vim /etc/rsyslog.conf (在全局配置段log 最多可以指定两个)
开启日志监听 tcp和udp的端口都开启
、
local2.* 定义haproxy的日志记录位置,service rsyslog restart 重启日志服务
跳过defaults配置段去配置一台简单的负载均衡服务器
frontend 指的是代理的前端, main是名字 *:80 所有地址都监听在80端口,default_backend:为frontend指明使用的默认后端,使用use_backend:指明使用哪个后端
bind 可以用来指定监听多个端口
backend 指的是代理的后端, 叫做webservers
server 指定后端服务器 web1指定名字后面是该server的ip地址 check 健康检测单位为毫秒默认2秒检测一次, weight 权重默认为1, backup指其他服务器都不可用时启用此server
balance: 指明调度算法;
动态:权重可动态调整
静态:调整权重不会实时生效
roundrobin: 轮询,动态算法,每个后端主机最多支持4128个连接
static-rr: 轮询,静态算法,每个后端主机支持的数量无上限
leastconn: 根据后端主机的负载数量进行调度;仅适用长连接的会话;动态
source :将客户端源地址hash,并由后端服务器的权重相除后发送至匹配的服务器,这使得同一个ip地址总会被发送给同一台服务器,默认为静态
uri :将uri hash 此算法常用后端是代理缓存或反病毒代理以提高缓存命中率,默认为静态
url_param: 根据url中的指定的参数的值进行调度;把值做hash计算,并除以总权重
hdr(<name>) :根据请求报文中指定的header(如use_agent, referer, hostname)进行调度;把指定的header的值做hash计算
在hash算法中 map-based是取模法,静态 consistent是一致性哈希法,动态
如何启用haproxy的状态监控页配置如下
listen 它代表既是前端,又是后端,enable激活监控页面,hide-version隐藏haproxy的版本,auth 用户密码认证 if TRUE 只有admin用户认证成功了才能打开该页面
haproxy实现另一个功能:基于浏览器cookie实现session sticky
加入了这几条指令: cookie serverid insert(在响应报文中插入serverid) cookie websrv1 当响应报文是web1发送回给haproxy,haproxy重新构建响应首部时在Cookie首部插入serverid=websrv1,当客户端再次请求时,haproxy就会根据首部中刚插入的serverid再次将请求调度到同一台服务器上
介绍defaults配置段的参数,defaults中的参数如果frotend和backend段都没有定义默认就是用defaults段的参数
mode 定义haproxy工作在哪种模式http | tcp log global 表示日志就使用全句段中定义的记录日志方法
httplog 丰富日志记录格式, dontlognull 不记录健康检测日志
forwardfor if-none execpt x.x.x.x/mask 允许在发往后端服务器的请求首部中添加X-Forwarded-For首部 except排除哪些网段, if-none 仅在X-Forwarded-For这个首部不存在时才添加,如果不指定if-none那么回覆盖原来X-Forwarded-For,代理如果有多级这个if-none参数就必须了,这样做只是为了后端server记录真实的客户端ip地址
redispatch 是否允许将session重新分配到健康的后端服务器上(在与后端服务器session建立失败时) redispatch表示允许 http-server-close 允许haproxy端主动断开客户端的连接(客户端建立了server连接但没发起请求的情况下)
3 表示3次与后端服务器连接失败就认定服务器不可用 queue 设定请求队列的超时时长 http-request http请求超时时长 http-keep-alive 指定客户端与haproxy的持久连接超时时长
未完待续
标签:
原文地址:http://www.cnblogs.com/linuxboke/p/5425914.html