先堆这,有空再整理
lvs用daemon同步???怎么弄的
vrrp能不能不让它工作
persistent 的设置
,timeout, time_fin
est(); //注册统计时钟
ctl(); //注册netlink
protocol(); //注册tcp,udp
app(); //初始化app列表
conn(); //分配连接链表
register_hook(); //注册ipvs钩子
内核中的一个疑问:
对于模块的引用计数,ip_vs_use_count_dec()。为什么要先inc呢?为神马不在最后快要结束的地方inc?是因为速度的原因吗?只要进入某个模块的使用,我们应该快速的使该模块的引用计数加1。
Lvs有三种工作模式,然后是在各个模式下的均衡算法,那三种模式是在哪搞定的?是svc结构体么?不太知道啊,这个整体的观念太差了。。。
Svc->flag 有对应的模式位。 Ipvsadmin 估计就是设置的这个地方。
其实lvs的统计量还是很多的,对于每个dest,也就是real server都有自己的包的统计量,
对于每个大的服务,可以说是一个服务端口吧,也有自己的统计量。还有一个是整个的lvs有所有服务的和在一起的统计量。
Active conn 和 inactive conn有什么区别。
Mac地址改写机制!! IP没改么?
动态反馈调度和基于Agent的负载调度。
负反馈理论貌似很牛叉的样子,要学一学啊!!!
由于一般网络服务应答比请求报文大许多。
ip_vs_init()
{
Ip_vs_estimator_init(); // 初始化统计模块 ip_vs_est.c
Ip_vs_control_init(); //
Ip_vs_protocol_init(); //
Ip_vs_app_init(); //
Ip_vs_conn_init(); //
nf_register_hooks(ip_vs_ops, ARRAY_SIZE());
}
Lvs挂载的几个钩子:
NF_INET_LOCAL_IN ip_vs_in
NF_INET_FORWARD ip_vs_out
NF_INET_FORWARD ip_vs_forward_icmp
NF_NET_POST_ROUTING ip_vs_post_routing
Ip_vs_estimator() 中有一个timer每2秒钟运行一次处理函数,记录一下统计信息。统计信息的统计还不太理解。
Keepalived 实现了主备切换:
VRRP协议: Virtual Router Redundancy Protocol 虚拟路由冗余协议
在 ipvsadm中有一个 --start-daemon 选项,开启同步开关,会在内核每隔一段时间将tcp的链接情况发送到备份机器上,观察了一下,貌似是广播形式发送的。可以设定广播所在的网卡interface。
通过广播的方式进行通信,这种方式不错。反正都是占用信道。最大化传输信息。
《空谷幽兰》终南山隐士生活
N个数字,最多会有sqrt(N)+1个增序列或者减序列。
《南极大冒险》 电影
《狼图腾》书
DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。 DNS负载均衡的一个问题是一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间保存了故障服务器地址的客户计算机将不能正常访问服务器。
尽管存在多种问题,然而它还是一种非常有效的做法,当前使用在包括Yahoo在内的很多Web站点上。
目录:
第一章 绪论
第二章
CDN的提出为了提高两个性能指标:(1) 应答时间(2)系统吞吐率 【
T h e E f f e c t i v e n e s s o f R e q u e s t R e d i r e c t i o n o n C D N R o b u s t n e s s 】
【http://en.wikipedia.org/wiki/Content_delivery_network】wiki cdn
: edns-client-subnet 修改现有的DNS协议,因为现在的DNS协议不能在CDN中很好的解决用户就近分配问题。
关于lvs的activeconn超级大的问题
2010-09-16 20:43:39
标签:lvs keepalived ActiveConn 休闲 InActConn
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://rainbird.blog.51cto.com/211214/392844
lvs的activeconn是个一直让我很迷惑的东东.每次看到这个数巨大而真实机上的活动连接数并不是很高的时候,我都忍不住网上搜索一番,虽然大多时候总是无功而返,但是渐渐的总结出来了以下理论.
ActiveConn是活动连接数,也就是tcp连接状态的ESTABLISHED;InActConn是指除了ESTABLISHED以外的,所有的其它状态的tcp连接.那既然这样,为什么从lvs里看的ActiveConn会比在真实机上通过netstats看到的ESTABLISHED高很多呢?问得好!这也是笔者一直迷惑而渐渐清晰的一个问题.原来lvs自身也有一个默认超时时间.可以用ipvsadm -L --timeout查看,默认是900 120 300,分别是TCP TCPFIN UDP的时间.也就是说一条tcp的连接经过lvs后,lvs会把这台记录保存15分钟,而不管这条连接是不是已经失效!所以如果你的服务器在15分钟以内有大量的并发请求连进来的时候,你就会看到这个数值直线上升.
其实很多时候,我们看lvs的这个连接数是想知道现在的每台机器的真实连接数吧?怎么样做到这一点呢?其实知道现在的ActiveConn是怎样产生的,做到这一点就简单了.举个例子:比如你的lvs是用来负载网站,用的模式是dr,后台的web server用的nginx.这时候一条请求过来,在程序没有问题的情况下,一条连接最多也就五秒就断开了.这时候你可以这样设置:ipvsadm --set 5 10 300.设置tcp连接只保持5秒中.如果现在ActiveConn很高你会发现这个数值会很快降下来,直到降到和你用nginx的status看当前连接数的时候差不多.你可以继续增加或者减小5这个数值,直到真实机的status连接数和lvs里的ActiveConn一致.
that's all.