一负载均衡的分层结构
第一层: 负载调度器, 这是访问整个集群系统的唯一入口, 对外使用所有服务器共有的 VIP 地址通常会配置主备两台调度器实现热备份
第二层: 服务器池, 集群所提供的应用服务由服务器池承担, 其中的每个节点具有独立的 RIP 地址, 只处理调度器分发过来的客户机请求当某个节点暂时失效时, 负载均衡器的容错机制会将其隔离, 等待错误排除后再重新纳入服务器池
第三层: 共享存储, 为服务器池中的所有节点提供稳定一致的文件存取服务, 确保整个集群的统一性
二负载均衡的工作模式
1NAT 模式 (网络地址转换): 这是一种外网和内网地址映射的技术, 在这种工作模式下, 数据的进出都要经过 LVS 负载均衡器 LVS 需要作为真实服务器(Real Server) 的网关当数据包到达 LVS 时, LVS 要做目标地址转换 (DNAT), 将目标 IP 改为真实服务器(Real Server) 的 IP 真实服务器接到数据包后进行处理, 在响应时, 源 IP 地址是真实服务器自身 IP, 而目标地址则直接定义为客户端的 IP 然后真实服务器把响应数据包发送给 LVS 进行中转, LVS 会做源地址转换 (SNAT), 把数据包的源 IP 地址改为 VIP 在客户端看来, 这个数据包就是 LVS 直接发送给它的, 客户端感知不到真实服务器(Real Server) 的存在
2Tunnel 模式 (IP 隧道模式): 隧道模式就是, 把客户端发来的数据包, 封装一个新的 IP 头标记(仅目的 IP) 发给 RS,RS 收到后, 先把数据包的头解开, 还原数据包, 处理后, 直接返回给客户端, 不需要再经过负载均衡器? 注意, 由于 RS 需要对负载均衡器发过来的数据包进行还原, 所以说必须支持 IPTUNNEL 协议? 所以, 在 RS 的内核中, 必须编译支持 IPTUNNEL 这个选项
3DR 模式(直接路由模式): 这种模式下客户端发来的请求也是由 LVS 接收, 但是真实服务器在返回响应数据包时直接返回给客户端, 不经过 LVS 当用户发送请求时, 源 IP 是 client_IP, 目标地址是 LVS_VIP, 当 LVS 将数据包转发给真实服务器处理后, 返回时的源 IP 是 Real_IP, 目标 IP 是 client_IP, 因为客户端没有请求 Real_IP, 这样直接返回的数据包是不被客户端接收的, 所以还是需要使用 VIP 来响应请求 DR 模式下, LVS 服务器需要配置一个 VIP 和 DIP, 真实服务器需要配置 RIP 和 VIP(和调度服务器的 VIP 一致), 但是真实服务器的 VIP 是隐藏的(因为会造成地址冲突), 不会应答广播, 只在响应客户端的时候作为源地址使用当请求到达 LVS 服务器时, LVS 会将目标的 MAC 地址改为某台真实服务器的 MAC 地址, 该请求数据包就会被转发到相应的真实服务器来处理, 此时的源 IP 和目标 IP 都没变当真实服务器发送响应数据包时, 只需要直接返回到客户端即可(因为此时源地址是 VIP, 目标地址是 client_IP), 不需要再经过 LVS 服务器
三 LVS 的负载调度算法(举四个比较常用的算法)
1 轮询: 将收到的请求访问按照顺序轮流分配给集群中的各节点, 均等地对待每一台服务器, 而不管服务器实际的连接数和负载
2 加权轮询: 根据实际服务器的处理能力轮流分配收到的访问请求, 调度器可以自动查询各节点的负载情况, 并动态调整其权重这样可以保证处理能力强的服务器承担更多的访问流量
3 最少连接: 根据真实服务器已建立的连接数进行分配, 将收到的访问请求优先分配给连接数最少的节点如果所有的服务器节点性能差不多, 采用这种方式可以更好地负载均衡
4 加权最少连接: 在服务器节点性能差异较大的情况下, 可以为真实服务器自动调整权重, 权重较高的节点将承担更大比例的活动连接负载
来源: http://www.bubuko.com/infodetail-2509947.html