lvs

先堆这,有空再整理

 

 

lvs用daemon同步???怎么弄的

vrrp能不能不让它工作

persistent 的设置

,timeout, time_fin

 

 

est();  //注册统计时钟

ctl();  //注册netlink

protocol(); //注册tcp,udp

app();      //初始化app列表

conn();     //分配连接链表   

register_hook(); //注册ipvs钩子


==================================
keepalived


thread_make_master();
start_check_child();
start_vrrp_check();



用了netfilter的nf_register_sockopts();   不是netlink, 但是用了netlink的通信协议。搞死了
lvs提供两种通信机制:netlink和set/get sockopt

DR 模式要求 真实服务器与虚拟服务器的端口一致,否则,它会自动修改。
===================
对于ipvasdm中的 更改
(1)ip_vs.h  添加    IPVS_DEST_ATTR_FACTOR

libipvs.c  ipvs_nl_fill_dest_attr  用的 是  ipvs_dest_t


=======================
LVS

netlink 协议里用的是 ip_vs_genl_parse_dest ()用的结构体为: ip_vs_dest_user_kern


net/ip_vs.h   修改   ip_vs_dest_user_kern  添加  u32  factor


ip_vs_in( )     --> check conn_tab
ip_vs_header_check( )
ip_vs_conn_in_get( ) ->ip_vs_conn_tab
conn_schedule()
ip_vs_schedule
调用ip_vs_schedule( )分配新的连接。


度一个RS并创建一个新的连接,如果调度失败则调用ip_vs_leave( )继续传递或者丢弃数据报
ip_vs_in()调用的函数ip_vs_schedule( )为虚拟服务器调度可用的RS并建立相应连接。它将根据虚拟服务器绑定的调度算法分配一个RS,如果成功,则调用ip_vs_conn_new( )建立连接。ip_vs_conn_new( )将进行一系列初始化操作:设置连接的协议、ip地址、端口号、协议超时信息,绑定application helper、RS和数据报传输函数,最后调用ip_vs_conn_hash( )将这个连接插入哈希表ip_vs_conn_tab中。一个连接绑定的数据报传输函数,依据IPVS工作方式可分为ip_vs_nat_xmit( )、ip_vs_tunnel_xmit( )、ip_vs_dr_xmit( )


内核中的一个疑问:

对于模块的引用计数,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()  中有一个timer2秒钟运行一次处理函数,记录一下统计信息。统计信息的统计还不太理解。

 

 

Keepalived  实现了主备切换:

 

VRRP协议:  Virtual Router Redundancy Protocol 虚拟路由冗余协议

 

 

 

ipvsadm中有一个  --start-daemon  选项,开启同步开关,会在内核每隔一段时间将tcp的链接情况发送到备份机器上,观察了一下,貌似是广播形式发送的。可以设定广播所在的网卡interface

 

通过广播的方式进行通信,这种方式不错。反正都是占用信道。最大化传输信息。

 

《空谷幽兰》终南山隐士生活

 

 

N个数字,最多会有sqrtN+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_networkwiki cdn

 edns-client-subnet 修改现有的DNS协议,因为现在的DNS协议不能在CDN中很好的解决用户就近分配问题。

 

 

关于lvsactiveconn超级大的问题

2010-09-16 20:43:39

标签:lvs keepalived ActiveConn 休闲 InActConn

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://rainbird.blog.51cto.com/211214/392844

      lvsactiveconn是个一直让我很迷惑的东东.每次看到这个数巨大而真实机上的活动连接数并不是很高的时候,我都忍不住网上搜索一番,虽然大多时候总是无功而返,但是渐渐的总结出来了以下理论.
      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很高你会发现这个数值会很快降下来,直到降到和你用nginxstatus看当前连接数的时候差不多.你可以继续增加或者减小5这个数值,直到真实机的status连接数和lvs里的ActiveConn一致.
      that's all.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值