通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备过程:
keepalived的工作原理是VRRP虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。
当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
两台物理服务器和一个虚拟服务器(vip):master:redhat2.6.18-53.el5192.168.8.4;backup:redhat2.6.18-53.el5192.168.8.6;vip:192.168.8.100。
节点A192.168.8.4(主节点),节点B192.168.8.6(备用节点),虚拟IP(对外提供服务的IP192.168.8.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点A网卡的MAC地址
其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点B网卡的MAC地址
其它电脑如客户端会更新自己的ARP表,对应192.168.8.100的MAC地址=节点B网卡的MAC地址。
扩展资料:
双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器执行写 *** 作,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。
当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
Keepalived的运行原理是基于VRRP(虚拟路由冗余协议)机制,在VRRP中有两个重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是一种实体路由器设备,而虚拟路由器则是基于VRRP协议构建的虚拟路由器,是软性的虚拟概念,一组VRRP路由器协同工作,共同构造一台虚拟服务器。
VRRP协议支持一种选举机制,主要用来选出用来提供服务的路由即主控路由,其它的就是备份路由了,当主控路由失效之后,备份路由中重新选出一个主控路由(往往按照设置好的优先级别重新分配),接管主控服务,继续工作,来保证不间断的提供服务。
参考资料:百度百科-双机热备
FYI
/dev/mapper/mpathXX
如果使用了 多路径方案, 可以直接使用multipath 绑定设备名 不需要用到 asmlib或UDEV
请直接参考 文档:Configuring non-raw multipath devices for Oracle Clusterware 11g (11.1.0, 11.2.0) on RHEL5/OL5 [ID 605828.1]
[root@vrh1 ~]# for i in `cat /proc/partitions | awk '{print $4}' |grep sd | grep [a-z]$` do echo "### $i: `scsi_id -g -u -s /block/$i`" done### sda: SATA_VBOX_HARDDISK_VB83d4445f-b8790695_
### sdb: SATA_VBOX_HARDDISK_VB0db2f233-269850e0_
### sdc: SATA_VBOX_HARDDISK_VBa56f2571-0dd27b33_
### sdd: SATA_VBOX_HARDDISK_VBf6b74ff7-871d1de8_
### sde: SATA_VBOX_HARDDISK_VB5a531910-25f4eb9a_
### sdf: SATA_VBOX_HARDDISK_VB4915e6e3-737b312e_
### sdg: SATA_VBOX_HARDDISK_VB512c8f75-37f4a0e9_
### sdh: SATA_VBOX_HARDDISK_VBc0115ef6-a48bc15d_
### sdi: SATA_VBOX_HARDDISK_VB3a556907-2b72391d_
### sdj: SATA_VBOX_HARDDISK_VB7ec8476c-08641bd4_
### sdk: SATA_VBOX_HARDDISK_VB743e1567-d0009678_
[root@vrh1 ~]# grep -v ^# /etc/multipath.conf
defaults {
user_friendly_names yes
}
defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy failover
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout /bin/true
path_checker readsector0
rr_min_io 100
rr_weight priorities
failback immediate
#no_path_retry fail
user_friendly_name yes
}
devnode_blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
devnode "^cciss!c[0-9]d[0-9]*"
}
multipaths {
multipath {
wwid SATA_VBOX_HARDDISK_VB0db2f233-269850e0_
alias voting1
path_grouping_policy failover
}
multipath {
wwid SATA_VBOX_HARDDISK_VBa56f2571-0dd27b33_
alias voting2
path_grouping_policy failover
}
multipath {
wwid SATA_VBOX_HARDDISK_VBf6b74ff7-871d1de8_
alias voting3
path_grouping_policy failover
}
multipath {
wwid SATA_VBOX_HARDDISK_VB5a531910-25f4eb9a_
alias ocr1
path_grouping_policy failover
}
multipath {
wwid SATA_VBOX_HARDDISK_VB4915e6e3-737b312e_
alias ocr2
path_grouping_policy failover
}
multipath {
wwid SATA_VBOX_HARDDISK_VB512c8f75-37f4a0e9_
alias ocr3
path_grouping_policy failover
}
}
[root@vrh1 ~]# multipath
[root@vrh1 ~]# multipath -ll
mpath2 (SATA_VBOX_HARDDISK_VB3a556907-2b72391d_) dm-9 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 8:0:0:0 sdi 8:128 active ready running
mpath1 (SATA_VBOX_HARDDISK_VBc0115ef6-a48bc15d_) dm-8 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 7:0:0:0 sdh 8:112 active ready running
ocr3 (SATA_VBOX_HARDDISK_VB512c8f75-37f4a0e9_) dm-7 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 6:0:0:0 sdg 8:96 active ready running
ocr2 (SATA_VBOX_HARDDISK_VB4915e6e3-737b312e_) dm-6 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 5:0:0:0 sdf 8:80 active ready running
ocr1 (SATA_VBOX_HARDDISK_VB5a531910-25f4eb9a_) dm-5 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:0 sde 8:64 active ready running
voting3 (SATA_VBOX_HARDDISK_VBf6b74ff7-871d1de8_) dm-4 ATA,VBOX HARDDISK
size=40G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 3:0:0:0 sdd 8:48 active ready running
voting2 (SATA_VBOX_HARDDISK_VBa56f2571-0dd27b33_) dm-3 ATA,VBOX HARDDISK
size=40G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 2:0:0:0 sdc 8:32 active ready running
voting1 (SATA_VBOX_HARDDISK_VB0db2f233-269850e0_) dm-2 ATA,VBOX HARDDISK
size=40G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 1:0:0:0 sdb 8:16 active ready running
mpath4 (SATA_VBOX_HARDDISK_VB743e1567-d0009678_) dm-11 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 10:0:0:0 sdk 8:160 active ready running
mpath3 (SATA_VBOX_HARDDISK_VB7ec8476c-08641bd4_) dm-10 ATA,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 9:0:0:0 sdj 8:144 active ready running
[root@vrh1 ~]# dmsetup ls | sort
mpath1 (253, 8)
mpath2 (253, 9)
mpath3 (253, 10)
mpath4 (253, 11)
ocr1 (253, 5)
ocr2 (253, 6)
ocr3 (253, 7)
VolGroup00-LogVol00 (253, 0)
VolGroup00-LogVol01 (253, 1)
voting1 (253, 2)
voting2 (253, 3)
voting3 (253, 4)
[root@vrh1 ~]# ls -l /dev/mapper/*
crw------- 1 root root 10, 62 Oct 17 09:58 /dev/mapper/control
brw-rw---- 1 root disk 253, 8 Oct 19 00:11 /dev/mapper/mpath1
brw-rw---- 1 root disk 253, 9 Oct 19 00:11 /dev/mapper/mpath2
brw-rw---- 1 root disk 253, 10 Oct 19 00:11 /dev/mapper/mpath3
brw-rw---- 1 root disk 253, 11 Oct 19 00:11 /dev/mapper/mpath4
brw-rw---- 1 root disk 253, 5 Oct 19 00:11 /dev/mapper/ocr1
brw-rw---- 1 root disk 253, 6 Oct 19 00:11 /dev/mapper/ocr2
brw-rw---- 1 root disk 253, 7 Oct 19 00:11 /dev/mapper/ocr3
brw-rw---- 1 root disk 253, 0 Oct 17 09:58 /dev/mapper/VolGroup00-LogVol00
brw-rw---- 1 root disk 253, 1 Oct 17 09:58 /dev/mapper/VolGroup00-LogVol01
brw-rw---- 1 root disk 253, 2 Oct 19 00:11 /dev/mapper/voting1
brw-rw---- 1 root disk 253, 3 Oct 19 00:11 /dev/mapper/voting2
brw-rw---- 1 root disk 253, 4 Oct 19 00:11 /dev/mapper/voting3
[root@vrh1 ~]# ls -l /dev/dm*
brw-rw---- 1 root root 253, 0 Oct 17 09:58 /dev/dm-0
brw-rw---- 1 root root 253, 1 Oct 17 09:58 /dev/dm-1
brw-rw---- 1 root root 253, 10 Oct 19 00:11 /dev/dm-10
brw-rw---- 1 root root 253, 11 Oct 19 00:11 /dev/dm-11
brw-rw---- 1 root root 253, 2 Oct 19 00:11 /dev/dm-2
brw-rw---- 1 root root 253, 3 Oct 19 00:11 /dev/dm-3
brw-rw---- 1 root root 253, 4 Oct 19 00:11 /dev/dm-4
brw-rw---- 1 root root 253, 5 Oct 19 00:11 /dev/dm-5
brw-rw---- 1 root root 253, 6 Oct 19 00:11 /dev/dm-6
brw-rw---- 1 root root 253, 7 Oct 19 00:11 /dev/dm-7
brw-rw---- 1 root root 253, 8 Oct 19 00:11 /dev/dm-8
brw-rw---- 1 root root 253, 9 Oct 19 00:11 /dev/dm-9
[root@vrh1 ~]# ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB0db2f233-269850e0 -> ../../asm-diskb
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB3a556907-2b72391d -> ../../asm-diski
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB4915e6e3-737b312e -> ../../asm-diskf
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB512c8f75-37f4a0e9 -> ../../asm-diskg
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB5a531910-25f4eb9a -> ../../asm-diske
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB743e1567-d0009678 -> ../../asm-diskk
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB7ec8476c-08641bd4 -> ../../asm-diskj
lrwxrwxrwx 1 root root 9 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB83d4445f-b8790695 -> ../../sda
lrwxrwxrwx 1 root root 10 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB83d4445f-b8790695-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VB83d4445f-b8790695-part2 -> ../../sda2
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VBa56f2571-0dd27b33 -> ../../asm-diskc
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VBc0115ef6-a48bc15d -> ../../asm-diskh
lrwxrwxrwx 1 root root 15 Oct 17 09:58 scsi-SATA_VBOX_HARDDISK_VBf6b74ff7-871d1de8 -> ../../asm-diskd
Report Abuse Like (0)
2. Re: asm磁盘使用链路聚合设备名,IO性能只有非聚合设备的1/6!
LiuMaclean(刘相兵)
Expert
LiuMaclean(刘相兵) Jul 21, 2013 11:09 AM (in response to 13628)
step 1:
[oracle@vrh8 mapper]$ cat /etc/multipath.conf
multipaths {
multipath {
wwid SATA_VBOX_HARDDISK_VBf6b74ff7-871d1de8_
alias asm-disk1
mode 660
uid 501
gid 503
}
multipath {
wwid SATA_VBOX_HARDDISK_VB0db2f233-269850e0_
alias asm-disk2
mode 660
uid 501
gid 503
}
multipath {
wwid SATA_VBOX_HARDDISK_VBa56f2571-0dd27b33_
alias asm-disk3
mode 660
uid 501
gid 503
}
}
step 2:
reboot or service multipathd restart
step 3:
[oracle@vrh8 mapper]$ ls -l /dev/mapper/asm-disk*
brw-rw---- 1 grid asmadmin 253, 4 Jul 21 07:02 /dev/mapper/asm-disk1
brw-rw---- 1 grid asmadmin 253, 2 Jul 21 07:02 /dev/mapper/asm-disk2
brw-rw---- 1 grid asmadmin 253, 3 Jul 21 07:02 /dev/mapper/asm-disk3
bridge就是用和主机一个地址段的,比如你主机是192.168.1.101,那就随便在这个段找四个没有人用的ip给它。host-only作心跳线用,不知道你用的是什么宿主虚拟机,比如qemu的默认是192.168.122.1,如果你的宿主是win下面的vmware或者vbox,记不清楚了,可以去查看网络连接里面的对应host-only那个连接,比如192.168.33.1,你就配两个和这同一个网段的地址然后试一下能不能ping通主机和ping通对方。
如果这样说还搞不明白建议先学学网络基础知识
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)