群集和ipvs初探(一)

看到这张图也许你感到诧异,但是你如果你把客户端想象图中的两个日本军人,服务器想象成八路军。当一对一的时候,八路军应付的绰绰有余,当一对2的时候八路军就显得有点吃力,那么同时一对三或者一对更多呢,结果大家可想而知。

群集就是把多个服务器(也就是八路军)组合起来,来处理客户端(日本军人挑战)请求的一套系统。当然战士组合起来叫军队。

一、衡量一个集群有以下方面:

1、 可用性:系统保证业务多久没有故障,始终给客户端提供服务,也就是一个军队面临战斗时能支持多久不撤退,不崩溃。

2、可扩展:当敌人来一个团,你是派普通两个团上,还是派厉害的一个特种营上;也就是当业务增长时,你是向上升级服务器的配置,还是在购买同当前服务器相同配置的一台服务器。(注:新增加的一台服务器或者你新升级的服务器不一定能完全满足业务需要,当敌人也就是业务量足够多时,你不得不多增加高配置服务器(特种营))。

3、性能:一个集群系统在某个特定时间单位有效客户请求的吞吐量,也就是一个军队在一次战斗中有效杀敌数!

4、容量:群集系统在一定时间内完成的工作量,也就是一个根据地在一段时间内的发展进度。

系统运维:可用 --> 标准化 --> 自动化

5、这里提到一点如果战争中你只有一个指挥中心,它被摧毁了你所有军队失灵,而群集系统中的调度器(director)就是你这个群集的指挥中心,被摧毁的可能性我们称之为单点故障(SPOF: Single Point Of Failure)。

二、(Linux Cluster)群集类型:

1、负载均衡集群:Load Balancing,当一个团的敌军来进攻你的根据地时,你用两个团或者更多来抵挡他们,简称LB。

2、高可用集群:High Availability,当一个旅的敌人来进攻时,面对他们的冲锋攻击你的两个团守住阵地的频率。简称HA。

3、高性能集群:High Performance 敌人来了一个师,你用一个团在半个月时间内消灭了他们。单位时间内有效处理客户端请求,命中率极高,我们称之为高可用集群,简称HP。

4、分布式系统:随着根据地的发展,管理机构也就从县到乡分割多段管理。

NoSQL: HBase, Redis
            存储:MogileFS
            文件系统:Ceph

5、 构建高可扩展(GSLB: Global Service Load Balancing)的系统,应该遵循的一个基本原则:在系统内部尽量避免串行化和交互;

思路:
        分层:接入层 --> 应用层 --> 服务层 --> 数据层
        分割:化整为零,切割大业务为多个小业务
        分布式:
            分布式应用
            分布式静态资源
            分布式数据和存储
            分布式计算

三、LB集群调度器的实现方式(你的指挥中心也因地点和作战方式不同称之为空军还是海军):

1、工作在协议层来划分:
                tcp:根据请求报文中的目标地址和端口进行调度;
                应用层:根据请求的内容或者应用程序的本身进行调度,而且此种调度为“代理”方式;

2、软件:
                tcp: lvs (Linux Virtual Server), haproxy, nginx
                http: haproxy, nginx, apache(proxy module, balancer module), ats(apache traffic server), squid, varnish
                mysql: mysql-proxy
        3、硬件:
                F5:Big-IP
                Citrix: NetScaler
                A10: A10
                Array:
                RedWare

四 、LVS基础

1、 LVS的全称叫:Linux Virtual Server, 作者章文嵩。也可以把它理解为工作在传输层上的路由器和交换机,根据目标地址和端口作出转发与否的决策,根据调度方法作出转发至哪一个后端的决策。

2、LVS由IPVS和IPVSADM组成,IPVS通过netfilter中(INPUT、OUTPUT、FORWORD、PREROUTEING、POSTROUTING)的INPUT链来实现集群功能;IPVSADM就跟iptables一样编写规则传递给IPVS的管理工具。

3、支持的协议:TCP, UDP, SCTP, AH, ESP, AH_ESP

4、lvs中的常用术语约定:
                Host:
                    Director:调度器
                    Real Server: RS,后端提供服务的主机
                IP:
                    Client: CIP
                    Director Virtual IP: VIP
                    Directory IP: DIP
                    Real IP: RIP

五、lvs的类型也就是作战中的阵形:

一)、 lvs-nat(masquerade)地址伪装:

1、类似于iptables中的NAT,但支持多目标转发; 它通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发。

2、架构特性:1) RS应该使用私有地址,即RIP应该为私有地址;各RS的网关必须指向DIP;
                  (2) 请求和响应报文都经由Director转发;高负载场景中,Director易于成为系统瓶颈;
                   (3) 支持端口映射;
                   (4) RS可以使用任意类型的OS; 
                   (5) RS的RIP必须与Director的DIP在同一网络;

二)、lvs-dr(direct routing)直接路由:
      1、Director在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MAC是Director根据调度方法挑选出某RS的MAC地址;拓扑结构有别有NAT类型;

2、架构特性:
       (1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director
       解决方案:
           静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址;
           arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求;
           内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIP的ARP广播请求;
        (2) RS的RIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作;
        (3) 请求报文必须经由Director调度,但响应报文必须不能经由Director;
        (4) 各RIP必须与DIP在同一个物理网络中;
        (5) 不支持端口映射;
        (6) RS可以使用大多数的OS;
        (7) RS的网关一定不能指向Director;

三)、lvs-tun(tunneling,隧道):

1、不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部,经由互联网把请求报文交给选定的RS。

发给RS报文:源IP等于DIP+(CIP;VIP),目标IP为RIP。

2、架构特性:
        1) RIP, DIP, VIP都是公网地址;
        2) RS的网关不能,也不可能指向DIP; 
        3) 请求报文由Director分发,但响应报文直接由RS响应给Client;
        4) 不支持端口映射;
        5) RS的OS必须得支持IP隧道;

四)、lvs-fullnat:在章文嵩的领导下,淘宝开发。

1、通过请求报文的源地址为DIP,目标为RIP来实现转发;对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发;可跨内部多层路由。

2、架构特性:
        1) RIP,DIP可以使用私有地址;
        2) RIP和DIP可以不在同一个网络中,且RIP的网关未必需要指向DIP;
        3) 支持端口映射;
        4) RS的OS可以使用任意类型;
        5) 请求报文经由Director,响应报文经由Director;

六、lvs scheduler,也就是阵形中敌人来犯时的应对策略。

1、 找出你当前系统苏所支持 的IPVS SCHEDULER:
             grep -i ‘IPVS SCHEDULER‘ -A 10 /boot/config-2.6.32-504.e16.x86_64

2、静态方法:仅根据算法本身实现调度;
            RR: round-robin, 轮询;轮叫、轮调、轮流;
            WRR:weighted round-robin, 加权轮询;
            SH:Source ip Hashing,源地址哈希;把来自同一个地址请求,统统定向至此前选定的RS;
            DH:Destination ip Hashing, 目标地址哈希;把访问同一个目标地址的请求,统统定向至此前选定的某RS

3、动态方法:根据算法及后端RS当前的负载状况实现调度;
            LC: least connection 最少连接
                Overhead=Active*256+Inactive
            WLC: weighted least connection
                Overhead=(Active*256+Inactive)/weight
            SED:Shorted Expection Delay 最短切网延迟
                Overhead=(Active+1)*256/weight
            NQ:Never Queue 永不排队
            LBLC:Local-Based Least Connection,动态方式的DH算法;基于本地的最少连接
            LBLCR:Replicated LBLC

4、Session保持,当敌人历次来犯时,作为指挥员你肯定派时常跟敌人作战的部队去防守,这种对应惯性思维就叫会话保持:

1)Session Sticky策略:是不复制,一个用户访问了一次后,同一个session周期内,所有的请求都定向到这个服务器,down了session就丢了。

2)Session Replication Cluste策略:则是复制会话,即一个用户访问了一次就把session复制到所有的服务器或这一部分服务器。这样的好处是如果正访问的服务器down了
用户可以自动被转到别的服务器session不丢失。缺点当然是效率低。

3)Session Server策略:把会话存储在后端单独针对会话的服务器系统中,这样即时前端损坏,后端会话依然存在。

七、ipvsadm命令的用法:

一)、管理集群服务:

1、创建或修改:

ipvsadm -A|E -t|u|f service-address [-s scheduler]

-A: 添加
         -E:修改

-t: 承载的应用层协议为基于TCP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:80”;
         -u: 承载的应用层协议为基于UDP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:53”;
         -f:承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即为防火墙标记;其service-address的格式为“FWM”,例如“10”;

-s scheduler: 指明调度方法;默认为wlc;

2、删除:

ipvsadm -D -t|u|f service-address

二)、管理集群服务上的RS

1、添加或修改:

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

-r server-address: 指明RS,server-address格式一般为“IP[:PORT]”;注意,只支持端口映射的lvs类型中才应该显式定义此处端口
           例如:-r 192.168.10.7:80
        [-g|i|m]: 指明lvs类型
            -g: gateway, 意为dr类型;
            -i: ipip, 意为tun类型;
            -m: masquerade, 意为nat类型;
            [-w weight]:当前RS的权重;
            注意:仅对于支持加权调度的scheduler,权重才有意义;

2、删除:
         ipvsadm -d -t|u|f service-address -r server-address

三)、清空所有集群服务的定义:ipvsadm –C

四)、保存及恢复集群服务与RS的定义:

1、保存:

ipvsadm -S > /etc/sysconfig/ipvsadm
            ipvsadm-save > /etc/sysconfig/ipvsadm
            service ipvsadm save

2、恢复:

ipvsadm -R < /etc/sysconfig/ipvsadm
            ipvsadm-restore < /etc/sysconfig/ipvsadm
            service ipvsadm restart

五)、查看规则:
            ipvsadm -L|l [options]
                -c: 列出当前所有connection;
                --stats: 列出统计数据
                --rate: 列出速率
                -n, --numeric: 数字格式显示IP及端口;
                --exact: 精确值;

六)、清空计数器:

ipvsadm -Z [-t|u|f service-address]

八、练习

如图所示,要求访问192.168.3.55的23号端口时分别访问telnet服务器的23端口和SSH服务器的22号端口?

一)、安装设置telnet服务,并设置ip。

vi /etc/sysconfig/network-scirpts/ifcfg-eth0

IPADDR=192.168.9.2

NETMASK= 255.255.255.0

GATEWAY=192.168.9.1

yum install telnet-server.x86_64 –y

vim /etc/xinetd.d/telnet


servcie xinetd restart

二)、设置SSH服务器IP

vi /etc/sysconfig/network-scirpts/ifcfg-eth0

IPADDR=192.168.9.3

NETMASK= 255.255.255.0

GATEWAY=192.168.9.1

因SSH服务自带并启动所以不必安装。

三)、设置DIP和VIP

设置DIP为:192.168.9.1

设置VIP为:192.168.3.55

四)、安装IPVSADM 并建立IPVS-nat、测试效果

yum install ipvsadm –y

ipvsadm -A -t 192.168.3.55:23 -s rr

ipvsadm -a -t 192.168.3.55:23 -r 192.168.9.3:22 -m -w 5

ipvsadm -a -t 192.168.3.55:23 -r 192.168.9.2:23 -m -w 2

cat /proc/sys/net/ipv4/ip_forward

ipvsadm -l -n --stats

时间: 2024-10-20 10:08:17

群集和ipvs初探(一)的相关文章

【win Server】 那些天建立群集和SQL AlwaysOn踩到的雷……

这是一篇悲伤的博 因为前几天一直在折腾群集配置和AlwaysOn,踩雷有数,但是死到现在没成功... 搭建AlwaysOn环境需要: 1. windows Server2012 DataCenter版本(因为支持故障转移群集) 2. 每个服务节点加域,似乎AlwaysOn最大支持3个节点,按照小成本的考虑,两台服务器吧.这里我选的Dell R730,双E5 3. 共享存储(用于做群集的仲裁见证),如果是奇数的节点配置,需要共享存储,偶数的话共享文件夹即可.这里选择使用一台普通Dell 3010单

InnoDB和NDB,MySQL群集和InnoDB群集之间有什么区别?

像任何不断发展的成熟技术一样,MySQL积累了自己的术语.某些术语有时会引起混淆,尤其是当两个术语相似但实际上是指两个完全不同的事物时.对于两个存储引擎InnoDB和NDB(读音听起来很相似),以及两个"群集"技术:InnoDB Cluster和MySQL Cluster尤其如此.     让我们看看是否可以消除这种混乱. InnoDB 是一种存储引擎-数据库用来读取,写入,更新和删除数据以及执行其他基本操作的软件组件. InnoDB在2010年用5.5版(主要是因为它支持事务和外键)

LVS负载均衡集群

防伪码:出淤泥而不染,濯清涟而不妖 第五章 LVS负载均衡群集 前言:在各种互联网应用中,随着站点对硬件性能.相应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器将难以承担所有的访问,除了使用价格昂贵的大型机.专用负载分流设备以外,企业还有另外一种选择来解决难题,那就是构建集群服务器--通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务.本章我们将学习企业中常用的群集技术--LVS. 一. 群集技术概述 1. 群集的类型 1) 负载均衡群集:主要的功能将来自客户机的访问请求分

Linux集群-负载均衡lvs介绍及lvs-nat实现https

一.Linux集群 Linux集群系统保护集群管理器和集群节点两部分组成.集群节点简称为节点.服务器或服务器节点,是用来提供资源,进行集群的实际工作.一般来说,它必须进行配置后才能称为集群的一部分,同时也要运行集群用到的应用程序.Linux集群管理器再将各节点捆绑在一起,它用于将任务分解到所有的节点.简单的说,就是按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力. scale on 在单台主机上提高服务器性能, scale out 增加服务器的数量来提高,负载均衡的集群. 二

为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制

4. 为CDH 5集群添加Kerberos身份验证4.1 安装sentry1.点击"操作","添加服务":2.选择sentry,并"继续": 3.选择一组依赖关系 4.确认新服务的主机分配 5.配置存储数据库:在mysql中创建对应用户和数据库: mysql>create database sentry default character set utf8 collate utf8_general_ci; mysql>grant al

lvs集群简介

LVS集群:开源免费,具有高可用性,高稳定性,高可靠性 高可用性:lvs的负载均衡集群具有很高的处理能力,real server组中的某台node节点出问题了,不会影响整个集群的正常工作:而且具有超高负荷的服务能力,可支持上百万个并发连接数 缺点:在LB上容易出现单点故障,若只有一台LB机,虽然LB机的负载不是很高,但是一旦出现问题整个集群将无法再正常工作:解决这个问题的方法是:对LB机做一个热备机(双机热备),正常情况下LB机工作,当LB机出现问题的时候由热备机接管,继续工作(备用LB机通过h

Docker1.12.1之swarm集群搭建与使用

1:前言 在docker1.12版本之前,众所周知dokcer本身只能单机上运行,而集群则要依赖mesos.kubernetes.swarm等集群管理方案.其中swarm是docker公司自己的容器集群管理工具,在当时的热度还是低于前两者.docker1.12.0版本发布中,Docker公司出于战略眼光,将swarm集成到docker-engine中,使docker内置了集群解决方案.于是swarm这个"亲儿子"的江湖地位迅速提升,在docker集群方案中与mesos,k8s形成三足鼎

SQL Server 2012 AlwaysOn集群配置指南

1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows Server FailOver Cluster),通过在同一个WSFC的不同Node上,安装独立的SQL Server实例,定义AlwaysOn Group,一个数据库最多可以部署4个镜像.当热备机出现故障时,可以手工或自动实现故障转移,交换主.辅数据库的角色. AlwaysOn的亮点在于镜像可读

高性能集群软件Keepalived之基础知识篇

一.Keepalived介绍 Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别:HeartBeat是一个专业的.功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,监测集群中的系统服务,在群集节点间转移共享IP地址的所有者等,HeartBeat功能强大,但是部署和使用相对比较麻烦:与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功