###################################################
cluster 集群与存储
day 03
F5硬件--10万几十万
价格-低,服务要求访问量-中,负载均衡、高可用,技术,LVS nginx
HAproxy高可用代理
一、HAProxy概述 调度器
它是免费、快速并且可靠的一种解决方案
适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理
提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
衡量负责均衡器性能的因素
Session rate会话率 -- 每秒钟产生的会话数
Session concurrency 并发会话数 -- 服务器处理会话的时间越长,并发会话数越多
Date rate数据速率 --以MB/s或Mbps衡量;大的对象导致并发会话数增加;高会话数、高数据速率要求更多的内存
HAProxy工作模式
Mode http --客户端请求被深度分析后再发往服务器
Mode tcp --客户端与服务器之间建立会话,不检查第七层信息
Mode health --仅做健康状态检查,已经不建议使用
HTTP解析
当HAProxy运行在HTTP模式下,HTTP请求(request)和响应(response)均被完全分析和索引,这样便于创建和恰当的匹配规则;理解http请求和响应,对于更好的创建匹配规则至关重要
HTTP事物模型
HTTP协议是事物驱动的
每个请求request仅能对应一个响应response
常见模型:HTTP close 客户端向服务器建立一个TCP连接,客 发送请求给 服 ,服响应请求后立即断开,如果客请求不只一个,那就要不断去建立连接;TCP三次握手消耗相对较大的系统资源,同时延迟较大;
Keep-alive 一次连接可以传输多个请求;客户端需要知道传输内容的长度,以避免无限期的等待传输结束;降低两个HTTP事务间的延迟;需要相对较少的服务器资源;
Pipelining(流水线) 仍然使用keep-alive;在发送后续请求前,不用等前面的请求已经得到回应;适用于有大量图片的页面;降低的多次请求之间的网络延迟;
HTTP头部信息:请求头部信息-方法:GET -URI:/serv/login.php?lang=en&profile=2版本:HTTP/1.1
请求头部信息包含许多有关的客户端环境和请求正文的有用信息,如浏览器所使用的语言、请求正文的长度等
响应头部信息:版本:HTTP/1.1 状态码:200 原因:OK
http协议的状态码
200:OK
3xx:重定向 z.cn-->亚马逊 301、302临时重定向
4xx:错误 用户的访问路径有问题,目录权限问题
5xx: 服务器内部错误,代码问题
二、配置HAProxy高可用代理负载平衡集群
配置文件说明
HAProxy配置参数来源
命令行:总是具有最高优先级 global部分:全局设置进程级别参数
代理声明部分 :来自于 default 为后续的其他部分设置缺省参数,缺省参数可被后续部分重置
Listen 把frontend和backend结合到一起的完整声明
Frontend 描述接受客户端侦听套接字socket集
Backend描述转发链接的服务集
准备三台Linux服务器,两台做Web服务器,一台安装HAProxy,实现如下功能:
客户端访问HAProxy,HAProxy分发请求到后端Real Server
要求HAProxy可以根据Cookie为客户端分配固定后端服务器
开启HAProxy监控页面,及时查看调度器状态
设置HAProxy为开机启动
步骤一:配置后端Web服务器 httpd
步骤二:部署HAProxy服务器
1、安装、配置
[root@vh02/3]# yum install -y httpd;systemctl start httpd
[root@vh04 bin]# yum install -y haproxy
[root@vh04 bin]# vim /etc/haproxy/haproxy.cfg
将frontend和backend删除,添加以下内容:
listen stats
bind 0.0.0.0:1080 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
#stats hide-version #隐藏统计页面上HAProxy的版本信息
listen websrv 0.0.0.0:80 //配置调度
cookie SERVERID rewrite //
balance roundrobin
server web1 192.168.4.2:80 cookie a1i1 check inter 2000 rise 2 fall
5 //健康检查2000次,连续2次-健康
server web2 192.168.4.3:80 cookie a1i1 check inter 2000 rise 2 fall 5
2、起服务并验证
[root@vh04 bin]# systemctl start haproxy.service
[root@vh04 bin]# netstat -antpu | grep haproxy
[root@room8pc205 桌面]# firefox http://192.168.4.1
[root@room8pc205 桌面]# firefox http://192.168.4.1:1080/stats
Queue队列 越小越好 ; 会话率 会话数
3、 配置vh04接收网络日志
3.1将haproxy的日志记录到/var/log/haproxy中
修改日志服务,接收网络日志,将local2记录到/var/log/haproxy
[root@vh04 bin]# vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp