以下笔记为看了8小时视频做的笔记,并且做了练习,现在将笔记总结如下,如需转载请注明出处,谢谢~
LB集群的实现:
硬件:
F5
软件:
lvs
haproxy
nginx
ats
基于工作的协议层次的划分:
传输层:
lvs,haproxy(mode tcp)
lvs能承担很高的并发,大多数公司用不到甚至不建议用,除了负载均衡之外。其他功能相对薄弱。当并发数达不到几万甚至几十万的时候,nginx与haproxy是首要选择。
但是要了解,lvs是入门级的负载均衡器,面试的时候大多数会问到,所以还是需要了解。
应用层:
haproxy,nginx,ats,perlbal
CDN:80%都是静态内容,通过DNS解析到最近的运营商cname别名服务器(缓存服务器)。如果缓存未命中,通过内容共享或者内容分发协议让其他缓存服务器响应,或者直接通过自己的机房响应请求。
lvs:
ipvsadm:用户空间的命令行工具,用于管理集群服务。
ipvs:工作内核中的netfilter,input钩子函数。
grep -i -A 10 'ipvs' /boot/config-2.6.32-431.el6.x86_64 查看主机是否支持lvs
支持TCP,UDP,AH,EST,AH_EST,SCTP等协议
lvs arch:
调度器:director,dispatcher,balancer
RS :real server
lvs type:
lvs-nat 伪装类型
lvs-dr(direct routing)网关类型
lvs-tun(ip tunning)IP隧道类型
lvs-fullnat
LVS的四种调度类型:
一、lvs-nat :
1、多目标的DNAT:它通过修改请求报文的目标IP地址,(同时可能会修改目标端口),再挑选出某real server的IP地址实现转发。
2、rs应该使用私有地址,rs的网关应该指向dip
3、请求和响应报文都要经由direactor转发,极高的负载情景中,director可能会成为系统瓶颈
4、支持端口映射
5、rs可以使用任意os
6、rs的rip和director的dip必须在同一IP网络
二、lvs-dr:director routing
它通过修改请求报文的目标mac地址实现转发
director:dip vip
RS :RIP,VIP
(1)保证前端路由器将目标IP为VIP的请求报文发送给director
解决方案:
静态绑定
arptables
(2)RS的RIP可以使用私有地址,也可以使用公网地址
(3)RS跟director必须在同一物理网络中
(4)请求报文经由director调度,响应报文不一定经过director
(5)不支持端口映射
(6)RS可以是大多数OS(操作系统)
(7)RS的网关不能指向DIP
三、lvs-tun
不修改请求报文的ip首部,而是通过在原有的IP首部之外(cip----vip),再封装一个IP首部(dip----rip)
(1)RIP/DIP/VIP全得是公网地址
(2)RS的网络类型不能指向DIP
(3)请求报文必须经由director调度,但响应报文不能经过director
(4)不支持端口映射
(5)RS的操作系统必须支持隧道功能
四、lvs-fullnat:
director通过同时修改请求报文的目标IP和源地址进行转发
(1)VIP是公网地址,RIP和DIP是私网地址,二者无须在同一网络中
(2)RS接收到的请求报文的源地址为DIP,因此要响应给DIP
(3)请求报文和响应报文都必须经由director
(4)支持端口映射
(5)RS可以使用任意操作系统
(6)没有编译进内核,需要进淘宝的开源地址进行下载。
很多大公司用的服务都是通过对源码进行二次优化的,拥有相当大的二次研发团队。
HTTP :stateless
session保持:
session绑定:将来自于同一个用的请求始终定向到特定的服务器来响应
source ip hash
cookie hash
session集群
session服务器
LVS scheduler: lvs调度算法
静态方法:仅根据算法本身进行调度
RR : round robin 轮询
WRR :weight rr 加权轮询
SH :source hash 实现session保持的机制,将来自于同一个IP的请求始终调度至同一个RS
DH :destination hash 源地址hash,将对同一个目标的请求始终发往同一个RS(不常用)
动态方法:根据算法及各RS的当前负载状态进行调度
LC :least connection 根据计算活动连接数来进行调度
overhead = active*256+inactive
WLC :weighted LC
overhead = active*256+inactive / weight 有缺陷
SED :shorttest expection delay
verhead = (active+1)*256/weight 依然有问题
NQ : nerver queue
SED算法的改进,先SED再进行SED。
LBLC:locality-based LC 动态的DH算法
正向代理的的cache server 调度
LBLCR 带复制功能的lblc算法
ipvs的集群服务 :
tcp、udp、ah、esp、sctp
(1)一个ipvs主机可以同时定义多个cluster service
tcp、udp
(2)一个cluster service 上至少应该有一个real server
定义时:指明lvs-type,以及lvs调度算法
ipvsadmin的常用的用法 :
管理集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler]
ipvsadm -D -t|u|f service-address
-s scheduler 指定调度器 默认是wlc
service-address 集群服务地址
tcp: -t ip:port
udp: -u ip: port
fwm: -f mark 防火墙标记
管理集群服务的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -C 清空服务和real server 类似iptables -F
service-address
ip+端口 大多数端口可以省略
lvs-type
-g:gateway,dr (默认)
-i:ipip,tun
-m;masquerade,nat
清空和查看
ipvsadm -L|l [options] 查看服务
ipvsadm -C 清空服务和real server 类似iptables -F
保存和重载
ipvsadm -R
ipvsadm -S [-n]
置零计数器
ipvsadm -Z [-t|u|f service-address]
LVS练习: 调度类型选择nat,算法选择rr
看下拓扑图:
LVS通过nat调度类型实现负载均衡:
lvs dip :192.168.209.131 centos6.5
lvs vip : 192.168.209.135 centos6.5
node1 :192.168.209.129 centos6.5 配置好web服务
node2 :192.168.209.128 centos6.5 配置好web服务 1、关闭iptables,并开启ip_forward转发 (不详细讲过程,网上很多)
2、lvs服务器安装ipvsadm yum install -y ipvsadm
3、ipvsadm -A -t 192.168.209.135:80 -s rr 添加负载均衡器vip 以及轮询策略
ipvsadm -a -t 192.168.209.135:80 -r 192.168.209.129 -m
ipvsadm -a -t 192.168.209.135:80 -r 192.168.209.128 -m 设置后端集群real server。 对ipvs来讲配置相对简单,但是要搞明白确实很难。
常用命令操作
ipvsadm -C 清空服务和real server 类似iptables -F
ipvsadm -E -t 192.168.209.135:80 -s sh 修改集群调度算法为sh
ipvsadm -L | options
-n : number 基于数字化显示地址和端口
-c : connection 显示ipvs连接
--stats:统计数据
--rate :速率
--exact: 精确值
实验结果:
您还未添加分享代码,请到主题选项中,添加百度分享代码!
您可以选择一种方式赞助本站
支付宝转账赞助
支付宝扫一扫赞助
微信钱包扫描赞助