一. 企业互联网架构演进
单机架构
- 优点: 简单快速,易于开发,易于测试,易于部署
- 缺点:只适合早期项目, 变大后不易维护,且存在单点,升级需要停服
单机-数据分离
- 优点:资源分散,提高不同服务对硬件的利用率,方便维护
- 缺点:增加了资源消耗和网络开销,同时还存在单点
单机时代-缓存登场
- 优点:简单有效, 减少对DB的查询;显著提升用户体验
- 缺点:增加逻辑判断, 不适合存储大对象,此架构同样有单点
单机-读写分离
- 优点:降低数据库单台压力, 从机的数量可以灵活变更
- 缺点:架构开始变得复杂,维护难度加大
从服务器Salve可以有多台
集群时代-负载均衡
- 优点: 去除应用层单点, 可用性得到保证, 性能有所提高
- 缺点:这时要注意应用之间的一致性问题, 比如对缓存的访问, 对Session的存储
集群时代-动静分离
- 优点: 减轻应用服务器压力, 缓存静态文件, 加快响应速度, 前后端分离, 开发可以并行
- 缺点: 静态文件缓存更新失效问题, 前后端沟通成本提高
二. 四七层负载均衡使用场景及其优缺点
四七层负载均衡的定义
概念定义
四层: 所谓四层就是基于IP + 端口的负载均衡
七层: 所谓七层就是基于应用层(URL)信息的负载均衡
四层负载均衡 是在内核空间进行转发的
七层负载均衡 是在应用层转发的
四七层负载均衡区别
适用场景
四层: 七层:
大型站点 中小站点
接入层最前端 只使用七层负载均衡
结合四层+七层使用
四七层负载优缺点
优缺点:
- 四层比七层可以承载更大的并发亮, 适合大型站点
- 七层可以实现更为复杂的负载均衡控制,比四层有更多的功能, 比如基于URL、基于Session、动静分离等
- 七层会占用大量的CPU时间,承载的并发量相对较小
三. LVS原理及常见模型
LVS的定义
- LVS是Linux Virtual Server的简写, 是一个虚拟的服务器集群系统
LVS的组成
lpvs: 工作在内核空间, 实现集群服务的调度; 借鉴了iptables实现
lpvsadm: 工作在用户空间, 负责为ipvs内核框架编写规则, 定义谁是集群服务, 谁是后端服务器
LVS相关术语
DS: Director Server 目标服务器, 及负载均衡器
RS: Real Server 真实服务器, 及后端服务器
VIP: 直接面向用户的IP地址, 通常为公网IP地址
DIP: Director Server IP 主要用于和内部主机通信的IP地址
RIP: Real Server IP 后端真实服务器的IP地址
CIP: Client IP 客户端IP
LVS的类型
NAT: 修改目标IP地址为后端的RealServer的IP地址
DR: 修改目标MAC地址为后端的RealServer的MAC地址
TUNNEL: 较少使用, 常用于异地容灾
四. LVS NAT模型原理
NAT: Network Address Translation 网络地址转换
LVS NAT: 修改目标IP地址为挑选出新的RS的IP地址。 即请求进入负载均衡器时做DNAT, 响应出负载均衡器时做SNAT
LVS NAT的特性
- RS必须使用私有地址, 并且将网关指向DS的DIP
- RIP和DIP必须为同一网段内
- 支持端口映射
- RS可以使用任意操作系统。 如 Linux、Unix、Windows等
- 请求和响应报文都要经过DS, 高负载场景中, DS容易称为瓶颈(所以超过20态RS的情况下, NAT会较少使用)
五. LVS NAT模型 使用方法
ipvsadm用法
- LVS是依靠ipvs在内核生成一系列规则工作的
- ipvsadm是在用户空间管理ipvs规则的命令行工具
ipvsadm
集群服务相关:
-A 添加集群服务
-E 修改集群服务
-D 删除集群服务
-s 指定调度算法, 例如rr/wrr/lc/wlc
{
调度算法有:
轮询(Round Robin)
加权轮询(Weighted Round Robin)
最少链接(Least Connections)
加权最少链接(Weighted Least Connections)
基于局部性的最少链接(Locality-Based Least Connections)
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
目标地址散列(Destination Hashing)
源地址散列(Source Hashing)
}
RS相关:
-a 向指定的集群服务添加RS
-r 指明RS的IP地址, 包含IP:PORT
-g|-i|-m 指明LVS类型, 分别为DR|TUN|NAT
-w 指明RS权重
-e 修改指定RS属性
-d 删除RS
管理相关:
-C 清空集群服务
-L 查看ipvs规则
-Z 计数器清零
-S 使用ipvsadm -S保存规则至磁盘
-R 从磁盘载入规则
实例
定义集群服务, -t表示tcp协议 指定调度算法为rr
ipvsadm -A -t 1.1.1.1:3306 -s rr
添加RS RS的地址为2.2.2.2 模型为-m 即NAT
ipvsadm -a -t 1.1.1.1:3306 -r 2.2.2.2 -m
将配置保存至磁盘
ipvsadm -S > /etc/sysconfig/ipvsadm
清空集群服务
ipvsadm -C
从配置文件中读取集群服务配置
ipvsadm -R < /etc/sysconfig/ipvsadm