一、简介
高可用性网络的实质就是不出现单点故障。高可用性网络实现主要有以下几种:
1.服务器上实现高可用性,需要实现群集。
高可用性群集 可用性(availability)当集群中的一个系统发生故障时,集群软件迅速做出反映,将该系统的任务分配到集群中其它正在工作的系统上执行。 考虑到计算机硬件和软件的易错性,高可用性群集的的目的主要是为了使群集的整体服务尽可能可用。如果高可用性群集中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。高可用性(HA)群集致力于使服务器系统的运行速度和响应速度尽可能快。它们经常利用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,群集永远不会停机。 某些 HA 群集也可以维护节点间冗余应用程序。因此,用户的应用程序将继续运行,即使他或她使用的节点出了故障。正在运行的应用程序会在几秒之内迁移到另一个节点,而所有用户只会察觉到响应稍微慢了一点。但是,这种应用程序级冗余要求将软件设计成具有群集意识的,并且知道节点失败时应该做什么。HA 群集也可以执行负载均衡,但通常主服务器运行作业,而系统使辅助服务器保持闲置。辅助服务器通常是主服务器操作系统设置的镜像,尽管硬件本身稍有不同。辅助节点对主服务器进行活动监控或心跳观察,以查看它是否仍在运行。如果心跳计时器没有接收到主服务器的响应,则辅助节点将接管网络和系统身份。
2.路由节点上主要有两种协议实现高可用性:HSRP VRRP
VRRP 虚拟冗余路由协议 quidway网络设备
VRRP(虚拟路由器冗余协议)是这样一种协议,它允许一个多路访问链路上的几个路由器利用同一个虚拟IP地址。控制虚拟路由器IP地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟IP地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的IP地址可以作为终端主机的默认第一跳路由器。使用VRRP的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。 VRRP 包封装在 IP 包中发送。VRRP使路由器自动绕过故障而路由,从而确保了网络的不间断运行。
HSRP 热备份路由协议 cisco网络设备
是思科推出的用于建立容错默认网关的专有冗余协议,由RFC 2281进行描述。虚拟路由冗余协议(VRRP)是基于标准的HSRP替代协议,由IETF标准RFC 3768进行描述。这两种技术在概念上相似,但互不兼容。
HSRP在网络路由器之间建立默认网关的倒换框架,当主网关不可达时进行切换。此协议经常与快速会聚路由协议EIGRP或OSPF协同工作。HSRP使用多播地址224.0.0.2和UDP端口1985向其他启用HSRP协议的路由器发送HELLO报文,来交流路由器间的优先级。配置有最高优先级的主路由器将成为虚拟路由器,以预先配置好的网关IP和MAC地址0000.0c07.acXX(XX是组IP的十六进制值)回应局域网对网关的ARP的请求。如果主路由器宕机,次优先级路由器将接管网关IP并以同样的MAC地址回应ARP的请求,这样就实现了透明的默认网关自动倒换。
HSRP和VRRP都不是路由协议,因为它们不发布IP路由也不影响路由表。
3.网络链路
在局域网上主要是实现STP(生成树协议)或者聚合链路,以及VLAN通讯的高可用性:
STP(Spanning Tree Protocol,生成树协议)不能使端口状态快速迁移,即使是在
点对点链路或边缘端口,也必须等待2倍的Forwarddelay的时间延迟,端口才能
迁移到转发状态。
RSTP(Rapid Spanning Tree Protocol,快速生成树协议)可以快速收敛,但是和
TP一样存在以下缺陷:局域网内所有网桥共享一棵生成树,不能按VLAN阻塞冗
余链路,所有VLAN的报文都沿着一棵生成树进行转发。
MSTP(Multiple Spanning Tree Protocol,多生成树协议)将环路网络修剪成为一
个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据
转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
MSTP兼容STP和RSTP,并且可以弥补STP和RSTP的缺陷。它既可以快速收
敛,也能使不同VLAN的流量沿各自的路径分发,从而为冗余链路提供了更好的负
载分担机制。
链路聚合
链路聚合(LinkAggregation),是指将多个物理端口捆绑在一起,成为一个逻辑端口,以实现出/ 入流量在各成员端口中的负荷分担,交换机根据用户配置的端口负荷分担策略决定报文从哪一个成员端口发送到对端的交换机。当交换机检测到其中一个成员端口的链路发生故障时,就停止在此端口上发送报文,并根据负荷分担策略在剩下链路中重新计算报文发送的端口,故障端口恢复后再次重新计算报文发送端口。链路聚合在增加链路带宽、实现链路传输弹性和冗余等方面是一项很重要的技术。
1、交换机认为之间通讯的多条链路是一条链路
2、所有链路都工作实现负载均衡
3、一条链路失效之后,其他链路继续工作
VLAN之间通讯
vlan间通讯 ---》高层 {三层} ---》{路由器防火墙三层交换机}
在广域网上实现备份技术来保证网络的高可用性(对于广域网不做多应用)
4. 在磁盘上主要是实现raid。
主要有raid1 raid5 raid6 raid10
raid:容错式廉价磁盘阵列raid 可以透过一个技术(软件戒硬件),将多个较小的磁盘整合成为一个较大的磁盘装置;而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢。整个 raid 由于选择的等级 (level) 不同,而使得整合后的磁盘具有不同的功能。
二、各种方式高可用性的实现
1、路由节点上实验高高可用性
VRRP实验
实验设备主要是H3Csecpath F100C防火墙和quidway s2000h-hi交换机
拓扑结构:
拓扑图中vlan10 vlan20 是虚拟连接到备份组上,实际上vlan10连接上sw1交换机的e1/0/10上, vlan20连接上sw2交换机的e1/0/20上。
模拟链路故障可以直接拔掉r1防火墙上的网线即可。
配置文件如下:
R1防火墙:
<H3C>sys
[H3C]sysname r1
[r1]int eth0/0.1
[r1-Ethernet0/0.1]vlan-type dot1q vid 10
[r1-Ethernet0/0.1]ip add 192.168.10.1 24
[r1-Ethernet0/0.1]int eth0/0.2
[r1-Ethernet0/0.2]vlan-type dot1q vid 20
[r1-Ethernet0/0.2]ip add 192.168.20.1 24
[r1-Ethernet0/0.1]quit
[r1]undo insulate
[r1]firewall zone trust
[r1-zone-trust]add interface eth0/0
[r1-zone-trust]add interface eth0/0.1
[r1-zone-trust]add interface eth0/0.2
[r1-zone-trust]quit
[r1]firewall packet-filter default permit
[r1]vrrp ping-enable
[r1]int eth0/0.1
[r1-Ethernet0/0.1]vrrp vrid 10 virtual-ip 192.168.10.254
[r1-Ethernet0/0.1]vrrp vrid 10 priority 120
[r1-Ethernet0/0.1]int eth0/0.2
[r1-Ethernet0/0.2]vrrp vrid 20 virtual-ip 192.168.20.254
R2防火墙:
<H3C>sy
[H3C]sysname r2
[r2]int eth0/0.1
[r2-Ethernet0/0.1]vlan-type dot1q vid 10
[r2-Ethernet0/0.1]ip add 192.168.10.2 24
[r2-Ethernet0/0.1]int eth0/0.2
[r2-Ethernet0/0.2]ip add 192.168.20.2 24
[r2-Ethernet0/0.2]vlan-type dot1q vid 20
[r2-Ethernet0/0.2]quit
[r2]undo insulate
[r2]firewall zone trust
[r2-zone-trust]add interface eth0/0
[r2-zone-trust]add interface eth0/0.1
[r2-zone-trust]add interface eth0/0.2
[r2-zone-trust]quit
[r2]vrrp ping-enable
[r2]int eth0/0.1
[r2-Ethernet0/0.1]vrrp vrid 10 virtual-ip 192.168.10.254
[r2-Ethernet0/0.1]vrrp vrid 10 priority 120
[r2-Ethernet0/0.1]int eth0/0.2
[r2-Ethernet0/0.2]vrrp vrid 20 virtual-ip 192.168.20.254
Sw1交换机:
[sw1]vlan 10
[sw1-vlan10]port e1/0/10
[sw1-vlan10]vlan 20
[sw1-vlan20]port e1/0/20
[sw1-vlan20]int e1/0/1
[sw1-Ethernet1/0/1]port link-type trunk
[sw1-Ethernet1/0/1]port trunk permit vlan all
[sw1-Ethernet1/0/1]int e1/0/24
[sw1-Ethernet1/0/24]port link-type trunk
[sw1-Ethernet1/0/24]port trunk permit vlan all
Sw2交换机:
[Quidway]sys sw2
[sw2]vlan 10
[sw2-vlan10]port e1/0/10
[sw2-vlan10]vlan 20
[sw2-vlan20]port e1/0/20
[sw2-vlan20]int e1/0/1
[sw2-Ethernet1/0/1]port link-type trunk
[sw2-Ethernet1/0/1]port trunk permit vlan all
[sw2-Ethernet1/0/1]int e1/0/24
[sw2-Ethernet1/0/24]port link-type trunk
[sw2-Ethernet1/0/24]port trunk permit vlan all
2、网络链路实现高可用性
mstp(多生成树协议)实验
主要使用设备quidway s2000h-hi 交换机。
拓扑结构如下:
截
配置文件如下:
sw1交换机
[Quidway]syssw1
[sw1]vlan10
[sw1-vlan10]vlan20
[sw1-vlan20]vlan30
[sw1-vlan30]vlan30
[sw1-vlan30]inte1/0/22
[sw1-Ethernet1/0/22]portlink-type trunk
[sw1-Ethernet1/0/22]porttrunk permit vlan all
[sw1-Ethernet1/0/22]inte1/0/24
[sw1-Ethernet1/0/24]portlink-type trunk
[sw1-Ethernet1/0/24]porttrunk permit vlan all
[sw1-Ethernet1/0/24]inte1/0/1
[sw1-Ethernet1/0/1]portlink-type trunk
[sw1-Ethernet1/0/1]porttrunk permit vlan all
[sw1-Ethernet1/0/1]quit
[sw1]link-aggregationgroup 1 mode manual //配置聚合
[sw1]inte1/0/22
[sw1-Ethernet1/0/22]portlink-aggregation group 1 //将端口e1/0/22加入聚合组
[sw1-Ethernet1/0/22]inte1/0/24
[sw1-Ethernet1/0/24]portlink-aggregation group 1 //将端口e1/0/24加入聚合组
[sw1-Ethernet1/0/24]quit
[sw1]stpenable
[sw1]stpregion-configuration
[sw1-mst-region]region-nameabc //域名是必须填写的
[sw1-mst-region]instance1 vlan 10 20 //将VLAN10VLAN20 添加进域1
[sw1-mst-region]instance2 vlan 30 40 //将VLAN30VLAN40 添加进域2
[sw1-mst-region]quit
[sw1]stpinstance 1 root primary //将域1作为第一生成树
[sw1]stpinstance 2 root secondary //域2作为第二生成树
[sw1]stpregion-configuration
[sw1-mst-region]revision-level1
[sw1-mst-region]activeregion-configuration
[sw1-mst-region]checkregion-configuration // 检测
Admin configuration
Format selector :0
Region name :abc
Revision level :0
Instance Vlans Mapped
0 1 to 9, 11 to 19, 21 to 29, 31 to 39, 41 to 4094
1 10, 20
2 30, 40
Sw2 交换机
配置文件:
<Quidway>sys
[Quidway]syssw2
[sw2]vlan10
[sw2-vlan10]vlan20
[sw2-vlan20]vlan30
[sw2-vlan30]vlan40
[sw2-vlan40]inte1/0/2
[sw2-Ethernet1/0/2]portlink-type trunk
[sw2-Ethernet1/0/2]porttrunk permit vlan all
[sw2-Ethernet1/0/2]inte1/0/22
[sw2-Ethernet1/0/22]portlink-type trunk
[sw2-Ethernet1/0/22]porttrunk permit vlan all
[sw2-Ethernet1/0/22]inte1/0/24
[sw2-Ethernet1/0/24]portlink-type trunk
[sw2-Ethernet1/0/24]porttrunk permit vlan all
[sw2-Ethernet1/0/24]quit
[sw2]link-aggregationgroup 1 mode manual
[sw2]inte1/0/22
[sw2-Ethernet1/0/22]portlink-aggregation group 1
[sw2-Ethernet1/0/22]inte1/0/24
[sw2-Ethernet1/0/24]portlink-aggregation group 1
[sw2-Ethernet1/0/24]quit
[sw2]stpenable
[sw2]stpregion-configuration
[sw2-mst-region]region-nameabc //域sw1的域名保持一致
[sw2-mst-region]instance1 vlan 10 20
[sw2-mst-region]instance2 vlan 30 40
[sw2-mst-region]quit
[sw2]stpinstance 2 root primary
[sw2]stpinstance 1 root secondary
[sw2]stpregion-configuration
[sw2-mst-region]revision-level1
[sw2-mst-region]activeregion-configuration
[sw2-mst-region]checkregion-configuration
Admin configuration
Format selector :0
Region name :abc
Revision level :0
Instance Vlans Mapped
0 1 to 9, 11 to 19, 21 to 29, 31 to 39, 41 to 4094
1 10, 20
2 30, 40
Sw3交换机
配置文件如下:
<Quidway>sys
[Quidway]sysnamesw3
[sw3]vlan10
[sw3-vlan10]vlan20
[sw3-vlan20]vlan30
[sw3-vlan30]vlan40
[sw3-vlan40]inte1/0/1
[sw3-Ethernet1/0/1]portlink-type trunk
[sw3-Ethernet1/0/1]porttrunk permit vlan all
[sw3-Ethernet1/0/1]inte1/0/2
[sw3-Ethernet1/0/2]portlink-type trunk
[sw3-Ethernet1/0/2]porttrunk permit vlan all
[sw3-Ethernet1/0/2]quit
[sw3]stpenable
[sw3]stpregion-configuration
[sw3-mst-region]region-nameabc
[sw3-mst-region]instance1 vlan 10 20
[sw3-mst-region]instance2 vlan 30 40
[sw3-mst-region]revision-level1
[sw3-mst-region]activeregion-configuration
[sw3-mst-region]checkregion-configuration
Admin configuration
Format selector :0
Region name :abc
Revision level :1
Instance Vlans Mapped
0 1 to 9, 11 to 19, 21 to 29, 31 to 39, 41 to 4094
1 10, 20
2 30, 40
结果如下:
第一生成树:
[sw1]disstp instance 1 brief
MSTID Port Role STP State Protection
1 Ethernet1/0/1 DESI FORWARDING NONE
1 Ethernet1/0/22 DESI FORWARDING NONE
//DESI 指定端口 FORWARDING 转发状态
[sw2]disstp instance 1 brief
MSTID Port Role STP State Protection
1 Ethernet1/0/2 DESI FORWARDING NONE
1 Ethernet1/0/22 ROOT FORWARDING NONE
//ROOT 根端口
<sw3>disstp instance 1 brief
MSTID Port Role STP State Protection
1 Ethernet1/0/1 ROOT FORWARDING NONE
1 Ethernet1/0/2 ALTE DISCARDING NONE
//ALTE 阻塞端口 DISCARDING 阻塞状态
第二生成树
[sw1]disstp instance 2 brief
MSTID Port Role STP State Protection
2 Ethernet1/0/1 DESI FORWARDING NONE
2 Ethernet1/0/22 ROOT FORWARDING NONE
[sw2]disstp instance 2 brief
MSTID Port Role STP State Protection
2 Ethernet1/0/2 DESI FORWARDING NONE
2 Ethernet1/0/22 DESI FORWARDING NONE
<sw3>disstp instance 2 brief
MSTID Port Role STP State Protection
2 Ethernet1/0/1 ALTE DISCARDING NONE
2 Ethernet1/0/2 ROOT FORWARDING NONE
3、聚合链路实现高可用性
聚合链路的要求
聚合要求
端口类型要一致
1.类型(是access 还是 trunk)
2.速率(10/100 强制) speed 100
3.双工(全双工强制)duplex full
4.端口序号连续的主端口
实验:
(1)在quidways2403H-HI交换机上
1.手工聚合
2.端口序号无要求
3.双工速率无要求
配置命令:
stpenable //开启stp协议
link-aggregation group [组号] mode manual
int端口 //进入要聚合的端口
portlink-aggregation group [组号]
displaylink-aggregation summery //显示聚合端口
(2)在quidways2403h-ei与s3526s交换机上
这里就要严格按照聚合要求来做
1、首先是要开启stp // stp enable
2、在端口上配置speed(速率)为100秒,和duplex(双工模式)为full
3、配置完那些之后在进行聚合配置
link-aggregation [接口] to [接口] both
dis link-aggregation //查询聚合端口
4、磁盘上实现高可用性
Raid 技术
实现
硬件 raid卡(这里不做介绍)
os:软件raid (linux )
用户空间中的工具
mdadm
命令格式: mdadm[mode] <raiddevice> [options] <component-devices>
Assemble (装配模式)Assemble the components of a previously created arrayinto an active array. Components can beexplicitly givenor can be searched for. mdadm checks that the components do form a bona fide array, and can, onrequest, fiddlesuperblock information so as to assemble a faulty array.将之前创建的数组的组件组装成一个活跃的数组。组件可以明确givenor可以寻找。mdadm检查表单组件做一个真正的数组,并且可以在请求,超级块信息,装配错误的数组。
Create (创建模式)Createa new array with per-device metadata (superblocks). Appropriate metadata is written to eachdevice, andthen the array comprisingthose devices is activated. A 'resync'process is started to make sure that the arrayis consistent (e.g. both sides ofa mirror contain the same data) but the content of the device is left other-wise untouched. The arraycan be used as soon as it has been created. There is no need to wait for the initialresync to finish.创建一个新数组,用设备元数据(superblocks)。适当的元数据写入每个设备,然后该数组包含这些设备被激活。重新同步的过程开始确保数组是一致的(如双方镜子包含相同的数据),但不然不和设备发生的内容。可以使用数组就已经创建。没有必要等待最初的重新同步完成。
Follow or Monitor 遵循或监视Monitor one or more md devices and act on any state changes. This is only meaningful for RAID1, 4, 5, 6,10 or multipath arrays, as only these have interestingstate. RAID0 or Linear never havemissing, spare, or faileddrives, so there is nothing to monitor.监控一个或多个md设备在任何状态变化和行动。这是唯一有意义的RAID1、4、5、6、10或多路径数组,因为只有这些有趣的状态。恢复或线性从来没有失踪,备用,或失败的驱动器,所以没有监控。
Grow 增长模式Grow (orshrink) an array, or otherwise reshape it in some way. Currently supported growth options includingchanging the active size of component devices and changingthe number of active devices in Linear and RAID lev-els 0/1/4/5/6, changing theRAID level between 0, 1, 5, and 6, and between 0 and 10, changing the chunksize andlayout for RAID 0,4,5,6, as well as adding or removing a write-intentbitmap.增长(或减少)一个数组,或者重塑它在某种程度上。目前支持增长选项包括改变组件的活动规模设备和改变活动设备的数量在线性和RAID lev-els 0/1/4/5/6,改变之间的RAID级别0,1,5日和6日0和10之间,改变RAID 0的块大小和布局,4,5,6,以及添加或删除write-intent位图。
Manage 管理模式This is for doing things to specific components of an array such asadding new spares and removing faultydevices.这是给特定组件的数组,如添加新的备件和删除错误的设备。
Options for selecting a mode are:
-A, --assembleAssemble a pre-existingarray.
-B,--buildBuild a legacy array without superblocks.
-C,--createCreate a new array.
-F,--follow, --monitorSelect Monitor mode.
-G,--growChange the size or shape of an active array.
-I, --incrementalAdd/remove a single device to/from an appropriatearray, and possibly start the array.
--auto-detectRequest that the kernel starts any auto-detectedarrays. This can only work if md iscompiled into the kernel
--not if it isa module. Arrays can be auto-detected bythe kernel if all the components are in primary MS-DOSartitions with partitiontype FD, and all use v0.90 metadata. In-kernel autodetect is not recommended for newinstallations. Using mdadm to detect and assemble arrays --possibly in an initrd-- is substantially more flexi-ble and should bepreferred.
If a device isgiven before any options, or if the first option is --add, --fail, or --remove,then the MANAGE mode is assumed. Anything other than these will cause the Miscmode to be assumed.
-v, --verbose 表示详细信息
-l, --level= 指明raid等级
-N,--name= 命名
-n 要添加的磁盘数量
-f 失效
-r 删除
-a 增加
-x 备份
实例1:
eg:mdadm-Cv /dev/md0 -l 1 -n 2 /dev/sdc /dev/sdd //创建一个raid1
cat /proc/mdstat //查看
mkfs -t ext3 /dev/md0 //要格式化
mount /dev/md0 /mnt/raid1
mdadm /dev/md0 -f/dev/sdc //模拟失效
watch -n 1 ' cat /proc/mdstat' //记录查看raid的状态(在另一个连接页面中)
mdadm /dev/md0 -a /dev/sde //sdc失效之后要添加一个来维持raid1的正常运行 sde是另一块磁盘
//这种是知道一块磁盘失效之后才能安装,若是不能发现, raid1就会中断,信息丢失
eg:另一种良好的解决方案
mdadm -Cv/dev/md1 -l 1 -n 2 /dev/sdc dev/sdd -x 1 /dev/sde 在创建时就定义好一块备份的磁盘
之后要格式化 mkfs -t ext3 /dev/md0
挂载 mount /dev/md0 /mnt/raid1
查看raid的状态
cat /proc/mdstat
mdadm --detail --scan /dev/md0
mdadm --detail --scan >/etc/mdadm.conf
raid5 实现:以下指令
mdadm -Cv /dev/md0 -l 5 -n 3 /dev/sda /dev/sdc -x 1 /dev/sde
///dec/sda /dev/sdc 是已有的磁盘,/dev/sde是备用磁盘