前言:最近项目组需要搭建一个高可用系统,用到的是keepalived+haproxy的架构技术,作为小白的我也是搜了很多资料,最终测试环境部署成功。虽然实现了应有的功能,但是对于haproxy的更多功能也是一直半解,通过该文章做一个系统的复习。
web架构
HAProxy:做负载均衡,将请求分配到 PHP A B C 三台服务器上。
但是当HA宕机时,就必须切换地址访问另一台HA服务器
过Keepalived共享Ip地址,只要有HA活着,就可以通过共享IP访问应用。
单机房架构
多机房架构
keepalived 解决共享Ip的问题。 多个机房的共享IP不同,怎么办? 这个问题其实是交给DNS服务器解决。
公有云架构
私有云架构
SLB技术原理浅析
SLB功能介绍
SLB(Server Load Balance)服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic Compute Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。
SLB服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,SLB服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。
SLB服务是ECS面向多机方案的一个配套服务,需要同ESC结合使用。
SLB技术架构
- 四层负载均衡,采用开源软件LVS(linux virtual server),并根据云计算需求对其进行了定制化;
- 七层负载均衡,采用开源软件Tengine;
- 控制系统,用于 配置和监控 负载均衡系统;
参考文章:https://developer.aliyun.com/article/1803
负载均衡
负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展。
为什么使用负载均衡
- Web服务器的动态水平扩展–>对用户无感知
- 增加业务并发访问及处理能力–>解决单服务器瓶颈问题
- 节约公网IP地址–>降低IT支出成本
- 隐藏内部服务器IP–>提高内部服务器安全性
- 配置简单–>固定格式的配置文件
- 功能丰富–>支持四层和七层,支持动态下线主机
- 性能较强–>并发数万甚至数十万
负载均衡类型
四层 通过端口做负载
- LVS:Linux Virtual Server
- HAProxy:High Availability Proxy
- Nginx:1.9版之后
七层 可以通过端口、url 做负载
硬件
- F5 https://f5.com/zh
- Netscaler https://www.citrix.com.cn/products/citrix-adc/
- Array https://www.arraynetworks.com.cn/
- 深信服 http://www.sangfor.com.cn/
- 北京灵州 http://www.lingzhou.com.cn/cpzx/llfzjh/
应用场景
- 四层:Redis、Mysql、RabbitMQ、Memcache等
- 七层:Nginx、Tomcat、Apache、PHP、图片、动静分离、API等
HAProxy功能
HAProxy功能
支持功能
- TCP 和 HTTP反向代理
- SSL/TSL服务器
- 可以针对HTTP请求添加cookie,进行路由后端服务器
- 可平衡负载至后端服务器,并支持持久连接
- 支持所有主服务器故障切换至备用服务器
- 支持专用端口实现监控服务
- 支持停止接受新连接请求,而不影响现有连接
- 可以在双向添加,修改或删除HTTP报文首部
- 响应报文压缩
- 支持基于pattern实现连接请求的访问控制
- 通过特定的URI为授权用户提供详细的状态信息
- 支持http反向代理
- 支持动态程序的反向代理
- 支持基于数据库的反向代理
|