集群-基础知识(2)

负载均衡集群实现方法:

1、硬件方式

F5,CITRX,NETSCALER,A10(价格逐渐降低,由于为了防止调度器成为单点故障,所以要配置一台备用设备,所以造价更高了)

2、软件方式

四层:LVS(根据请求的ip和端口来分发),性能好,但对高级特性支持不好。

七层(反向代理):Nginx(http,smtp,pop3,imap),Haproxy(主要是http,tcp(mysql,smtp)),能够精确解码请求的协议,并能做适当修改后向后转发,操作能力强,性能略差于LVS,更适应生产环境。

LVS:Linux virtual server

lvs工作于内核的tcp/ip协议栈的input链,不能和iptables同时工作。当调度器上定义一个集群服务后才会向后进行转发,当请求报文经过prerouting到达input时,经过input上定义的集群策略审查,若是集群服务则请求报文会被送至forward并通过postrouting向后转发。

Lvs也是两段式:ipvsadm(用户空间)和ipvs(内核的input)

内核2.4.23之前并没有ipvs代码,所以需要打补丁。

相关术语:

blob.png

Lvs的类型:

1、Nat模型

2、DR模型

3、TUN模型

Nat模型:工作机制和DNAT一样

blob.png

当客户端请求报文到达调度器时ip报文首部是CIP|VIP,从prerouting送至input发现为集群服务后,将报文转发至forward经postrouting向后转发,此时ip首部变为CIP|RIP1,后端realserver发现是目标地址是自己后进行拆解报文、响应报文、封装报文,此时ip首部为RIP1|CIP,然后经过调度器的源地址转换,ip首部变为VIP|CIP,通过路由设备回应给客户端。

NAT模型遵循的法则:

1、集群节点和调度器必须在一个网络中

2、RIP地址为私有地址,仅用于集群节点间的通信

3、调度器位于客户端和realserver之间,复制处理进出的所有通信

4、realserver网关必须指向DIP

5、调度器支持端口映射

6、realserver可以支持使用任何操作系统

较大规模场景中,调度器容易成为瓶颈,理想状况下后端能带10台主机。生产环境一般不用这种模型。

DR模型:(常用)

blob.png

调度器和realserver都连接在交换机上,并且调度器和RS都配置了VIP,只是RS的VIP被隐藏起来了,不用做通信,只是在响应时修改源地址而已。调度器的VIP配置在网卡上,而DIP配置在网卡别名上,RS的RIP配置在网卡上,VIP配置在网卡别名上。因为在一个网络中,所以调度器和RS的mac地址会通过arp解析得到其他人的mac地址。当请求报文发送至集群网络时ip报文首部为CIP|VIP,这时因为RS的VIP被隐藏起来了,所以只有调度器响应,而位于input链的策略发现是集群服务时,它不会拆解ip首部,而是把mac首部拆了,封装mac(源mac改为调度器的mac,目标mac改为调度器挑选的RS的mac),并向RS转发,报文传至RS时,RS发现目标地址是自己,然后进行响应,封装报文,源地址修改为VIP,目标地址为CIP,然后直接通过路由设备将报文发给客户端。

DR模型遵循的法则:

1、集群节点必须和调度器在同一物理网络中

2、RIP不用为私有地址了,实现了便捷的远程管理和监控

3、调度器只负责进站请求,响应保卫有RS直接发往客户端

4、集群节点不能将网关指向DIP

5、调度器不支持端口映射

6、大多数操作系统能支持RS,因为RS要求隐藏VIP

TUN模型:为了实现异地灾备(不常用)

blob.png

工作机制和DR模型近似。RS有两个IP:RIP、VIP(隐藏的),且RIP是公网地址,RS和调度器不再同一网络,RS可直接将响应报文发送给客户端。调度器也有两个ip:VIP、DIP(别名)。当请求报文发送到调度器时,ip报文首部为CIP|VIP,调度器发现是集群服务想外转发时在CIP|VIP前面封装一层首部DIP|RIP,RS接受报文并且拆分外面的首部后发现目标地址的确为自己,便开始响应并直接经过路由设备回传给客户端,不需要经过调度器。这种模型需要调度器和RS支持隧道机制。

TUN模型遵循的法则:

1、各集群节点可跨越互联网

2、RIP必须为公网地址

3、调度器仅处理入站请求,响应报文则由RS直接发往客户端

4、RS网关不能指向调度器

5、只有支持隧道功能的os才能用于RS

6、不支持端口映射


原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/9482

赞 (0)
黑白子黑白子
上一篇 2015-11-23 21:03
下一篇 2015-11-26 16:40

相关推荐

  • grep的使用和正则表达式

           grep作为Linux中的文本编辑的三剑客之一,它的功能很强大,并不是虚传,学会了grep在文本中找我们要找的的字符串总是能很轻易地找到,grep不仅仅就这一点功能,它在我们工作上也会对我们有很大的帮助。下面我来介绍一下grep的简单的功能。 grep :文本过滤( 模式:patter…

    Linux干货 2016-08-10
  • Linux文件管理命令和bash基础特性

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示  文件管理命令:mkdir,rmdir,cp,mv,rm,cat,tac,head,tail,more,less mkdir命令:   mkdir – make directories   mkdir [OPTION]… DIREC…

    2017-07-13
  • Linux运维初步—-Linux的基础(第一周)

    Linux运维入门初步—第一周 Linux 运维 Linux入门 写作:N27_李伟 2017-7-4 Linux入门之计算机硬件系统组成 Linux是一种计算机操作系统,操作系统简单讲是控制计算机硬件系统和人类进行交互、反馈的重要界面层。通过操作系统的处理,将人的信息通过操作系统界面转换为机器可以理解和执行的机器语言代码,然…

    Linux干货 2017-07-06
  • 编写服务脚本/root/bin/testsrv.sh和备份脚本/root/bin/copycmd.sh

    编写服务脚本/root/bin/testsrv.sh,完成如下要求 (1) 脚本可接受参数:start, stop, restart, status (2) 如果参数非此四者之一,提示使用格式后报错退出 (3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功” 考虑:如果事先已经启动过一次,该如何处理? (…

    Linux干货 2016-08-24
  • Linux软件包管理工具yum详解

    yum介绍 yum客户端的使用 配置文件项作说明: 案例repo配置文件。 创建yum源命令(yum-config-manager) yum list相关命令 yum安装 yum更新和升级 yum查找和显示 yum删除程序 查看仓库 实战演练本地yum仓库(光盘) YUM内置变量 创建YUM仓库(http) yum介绍 yum命令是在Fedora和RedHa…

    Linux干货 2016-09-07
  • 第二周总结(文件操作命令、用户及组权限管理、BASH命令行展开与执行命令返回值、命令别名使用、执行结果引用、通配符使用)

    1、常见文件管理命令分类         1)文件内容查看(cat、tca、more、less、head、tail)         2)文件字符替换(tr、sed、awk等)         3)文…

    Linux干货 2017-01-31