先堆这,有空再整理
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() 中有一个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.
分享到:
相关推荐
### LVS 实现负载均衡详解 #### 一、LVS简介与重要性 LVS (Linux Virtual Server) 是一种在 Linux 平台上实现负载均衡的技术。它可以有效地将大量的网络请求分发到多个后端服务器上处理,从而提高系统的整体响应...
LVS(Layout vs Schematic)是这个过程中不可或缺的一环,它确保了电路布局与电路原理图的一致性。在这个流程中,LVS 主要是比较电路的布局与对应的逻辑网表,确保在物理实现阶段没有引入任何错误或不匹配。现在,...
Lvs抗负载能力强,因为 lvs 工作方式的逻辑是非常之简单,而且工作在网络 4 层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。 有完整的双机热备方案,当节点出现故障时,lvs 会自动判别,所以系统...
### Linux LVS的DR模式详解 #### 一、概述 Linux Virtual Server (LVS) 是一个基于 Linux 内核的高性能负载均衡解决方案,它能够通过调度算法将客户端请求分发到多个后端服务器(Real Server),从而实现负载均衡...
LVS安装与配置入门与详解 LVS(Linux Virtual Server)是一种开源的负载均衡器,可以将多个服务器组成一个虚拟服务器,提供高可用性和高性能的服务。LVS的安装与配置是一个复杂的过程,本文将详细介绍LVS的安装与...
### LVS集群环境搭建详解 #### 一、LVS简介及应用场景 **LVS**(Linux Virtual Server)是一种基于Linux内核的虚拟服务器集群系统,它能够实现高效的负载均衡和服务高可用性。对于需要处理大量并发连接和高流量的...
### LVS原理与Linux+LVS+Keepalived负载均衡详解 #### LVS概念与原理 LVS(Linux Virtual Server)是一种开源的负载均衡技术,主要用于处理大规模的网络请求,通过构建一个虚拟服务器集群,将任务分发到多个后端的...
### Keepalived+LVS+Nginx 架构深度解析 #### 一、体系架构概述 在现代互联网架构中,为了提升系统的可用性和扩展性,采用Keepalived、LVS和Nginx组合构建的高可用性负载均衡体系是常见且高效的做法。此架构主要由...
Calibre经典教程和看LVS的错误报告的方法 Calibre经典教程和看LVS的错误报告的方法是指在使用Calibre进行集成电路设计和验证时,如何正确地解析和处理LVS(Layout Versus Schematic)错误报告。LVS错误报告是...
LVS(Linux Virtual Server)是基于Linux操作系统的高性能负载均衡解决方案,由章文嵩博士在1998年创建。它的设计目标是提供一个高可用、高性能的服务器集群系统,使得用户可以透明地访问服务器群集,而无需关心背后...
LVS和keepalived详细 LVS(Linux Virtual Server)是一种开源的IP负载均衡解决方案,能够将来自Internet的访问请求分配到多个后端服务器上,以提高整个系统的可用性和性能。_keepalived_是LVS的配套软件,用于监控...
**LVS(Linux Virtual Server)相关资料包** LVS,全称为Linux Virtual Server,是基于Linux操作系统的高性能、高可用的网络服务器群集技术。它通过将多台物理服务器虚拟化为一个整体,实现了网络层的负载均衡,...
LVS
集群及LVS简介、LVS-NAT集群、LVS-DR集群 本文档主要讲解了Linux虚拟服务器(LVS)的基本概念和实现方法,涵盖了LVS的集群模式、LVS-NAT集群、LVS-DR集群等内容。同时,文档还提供了一些实际的案例,包括使用...
Schematic (LVS) 和 Extraction (XRC) 是至关重要的步骤。这些技术确保了芯片设计的准确性和可制造性。以下是对这些概念的详细解释,以及如何在Virtuoso和Calibre工具中进行操作。 **Virtuoso** 是Cadence公司推出...
在构建大型、高可用性的FTP(File Transfer Protocol)服务时,使用LVS(Linux Virtual Server)、Keepalived和VSFTPd的组合是一个常见的解决方案。LVS提供负载均衡,Keepalived确保服务高可用,而VSFTPd是常用的FTP...