[network] IPVS / Load balancer / Linux Virtual Server
IPVS: http://kb.linuxvirtualserver.org/wiki/IPVS
NAT: http://kb.linuxvirtualserver.org/wiki/LVS/NAT
VIP: http://kb.linuxvirtualserver.org/wiki/VIP
ARP: http://kb.linuxvirtualserver.org/wiki/ARP_Issues_in_LVS/DR_and_LVS/TUN_Clusters
TUN: http://kb.linuxvirtualserver.org/wiki/LVS/TUN
http://www.linuxvirtualserver.org/VS-IPTunneling.html
DR:http://kb.linuxvirtualserver.org/wiki/LVS/DR
http://www.linuxvirtualserver.org/VS-DRouting.html
FNAT: <<LVS_FULLNAT概要设计.docx>> 可以从下面的链接里download。
中文资料:http://linuxvirtualserver.org/zh/index.html
LVS集群的通用体系结构
负载调度器(load balancer)
服务器池(server pool)
共享存储(shared storage)
分布式锁管理器(Distributed Lock Manager)
高可用性
一般来说,调度器的可靠性较高,因为调度器上运行的程序较少而且大部分程序早已经遍历过,但我们不能排除硬件老化、网络线路或者人为误 操作等主要故障。为了避免调度器失效而导致整个系统不能工作,
我们需要设立一个从调度器作为主调度器的备份。两个心跳(Heartbeat)进程[]分 别在主、从调度器上运行,它们通过串口线和UDP等心跳线来相互定时地汇报各自的健康状况。
当从调度器不能听得主调度器的心跳时,从调度器通过ARP欺骗 (Gratuitous ARP)来接管集群对外的Virtual IP Address,同时接管主调度器的工作来提供负载调度服务。
当主调度器恢复时,这里有两种方法,一是主调度器自动变成从调度器,二是从调度器释放 Virtual IP Address,主调度器收回Virtual IP Address并提供负载调度服务。
这里,多条心跳线可以使得因心跳线故障导致误判(即从调度器认为主调度器已经失效,其实主调度器还在正常工作)的概论 降到最低。 通常,当主调度器失效时,主调度器上所有已建立连接的状态信息将丢失,已有的连接会中断。客户需要向重新连接,从调度器才会将新连接调 度到各个服务器上,这对客户会造成一定的不便。
为此,IPVS调度器在Linux 内核中实现一种高效状态同步机制,将主调度器的状态信息及时地同步到从调度器。当从调度器接管时,绝大部分已建立的连接会持续下去。
负载均衡的发展历史,以及NAT、TUN、DR三种方式优缺点的比较
http://linuxvirtualserver.org/zh/lvs3.html
PrivateLink是啥
https://docs.aws.amazon.com/aws-technical-content/latest/aws-vpc-connectivity-options/aws-privatelink.html
在支持fullnat的基础上,可以通过配置实现 PrivateLink
LVS集群的负载调度
http://linuxvirtualserver.org/zh/lvs4.html
LVS项目下的软件,包括:http://www.linuxvirtualserver.org/software/index.html
IPVS: http://www.linuxvirtualserver.org/software/ipvs.html
包括,内核模块: /linux-4.18-rc2/net/netfilter/ipvs
管理工具:ipvsadm https://mirrors.edge.kernel.org/pub/linux/utils/kernel/ipvsadm/
看代码:
/linux-4.18-rc2/net/netfilter/ipvs
入口:
module_init(ip_vs_init);
hook
static const struct nf_hook_ops ip_vs_ops[] = {
/* After packet filtering, change source only for VS/NAT */
{
.hook = ip_vs_reply4,
.pf = NFPROTO_IPV4,
.hooknum = NF_INET_LOCAL_IN,
.priority = NF_IP_PRI_NAT_SRC - ,
},
/* After packet filtering, forward packet through VS/DR, VS/TUN,
2125 * or VS/NAT(change destination), so that filtering rules can be
2126 * applied to IPVS. */
{
.hook = ip_vs_remote_request4,
.pf = NFPROTO_IPV4,
.hooknum = NF_INET_LOCAL_IN,
.priority = NF_IP_PRI_NAT_SRC - ,
。。。 。。。
为了清楚 hook点的进入条件和场景:
阅读 netfilter相关内容: 跳转至
[network] netfilter
[network] IPVS / Load balancer / Linux Virtual Server的更多相关文章
- LVS(Linux Virtual Server)
LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我国的章文嵩博士的一个开源项目.在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需 ...
- LVS : Linux Virtual Server 负载均衡,集群,高并发,robust
1 LVS : Linux Virtual Server http://www.linuxvirtualserver.org/ http://www.linuxvirtualserver.org/zh ...
- LVS (Linux Virtual Server) 负载均衡
[大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服 ...
- 服务器负载均衡lvs(Linux Virtual Server)
服务器负载均衡lvs(Linux Virtual Server) 一.总结 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. 三.Linu ...
- LVS (Linux Virtual Server) - 负载均衡集群 - keepalived
今天稍微了解了LVS 的原理和使用,在网络上找到不少好文章,稍微加以处理并在这里备份: 原理介绍:Linux Virtual Server 关于:http://www.linuxvirtualserv ...
- Linux Virtual Server技术
1 LVS简单介绍 Linux VirtualServer是一个高扩展和高可用性server,在一个真正server的集群中构建而成,包括Linux操作系统中的负载均衡. server的架构对于终端用 ...
- LVS (Linux Virtual Server) 思维导图笔记
- 数据链路层负载均衡 Linux Virtual Server
w 李智慧
- Data Center手册(3): Load Balancer
Load Balancer的类型 DNS Round-Robin 这是一种很常见的分流的方式,具体配置如下: name server有一个zone文件,对于同一个domain,有多个IP www.ex ...
随机推荐
- Linux判断文件是否为空,不为空则打印该文件的大小
Linux判断文件是否为空,不为空则打印该文件的大小,使用到的命令是-s + filename -s filename 如果文件大小大于0,则返回true. 例如: 查看当前目录 # ls -l to ...
- ssh的tunnel隧道打洞
分正向和反向. 假设,本地机器可以ssh连上远程机器.本地机器在下面叫做SSHClient, 远程机器叫做SSHServer. 一. 正向代理(本地转发) 在SSHClient机上执行: : SSHS ...
- IOS开发之Storyboard应用
制作一个Tab类型的应用 制作一个表格视图 原型表格单元 设计自定义的原型单元格 为原型单元格设置子类 故事版(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明 ...
- Asp.Net 隐藏手机号中间四位为*方法
需求:15088881234 > 150****1234 方法1: "; , ) + , ); 方法2: "; string p2= Regex.Replace(phone ...
- java实现栈-使用LinkedList
import java.util.LinkedList; public class LinkedListStack { public static void main(String[] args) { ...
- git初始化本地项目并推送到git服务器
1.创建本地项目,在项目根目录执行git init命令 git init 2.在git服务器上创建一个仓库,这里使用GitHub创建一个仓库. 3.执行git remote add origin &l ...
- Ubuntu上查内存情况
free -h
- SSM框架整合搭建教程
自己配置了一个SSM框架,打算做个小网站,这里把SSM的配置流程详细的写了出来,方便很少接触这个框架的朋友使用,文中各个资源均免费提供! 一. 创建web项目(eclipse) File-->n ...
- windows命令行(DOS批处理)添加任务计划
自动创建每周运行一次的计划任务 创建计划任务可用at,schtasks命令,schtasks提供了很多参数 命令schtasks SCHTASKS /Create [/S system [/U use ...
- Git 学习笔记--拉取远程分支到本地
1.查看远程分支,和上面的第一步相同2. 从远程获取最新版本到本地 git fetch origin master:temp git fetch origin master:temp 这句命令的意思是 ...