精华内容
下载资源
问答
  • 双机热备的概念

    千次阅读 2016-11-17 17:36:26
    对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说。 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,...

    转:http://yunnick.iteye.com/blog/1845301

    1.双机热备

    对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说。

    从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。

    从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(Primary Server),另一台主机为备份主机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。双机热备针对的是IT核心服务器、存储、网络路由交换的故障的高可用性解决方案。

    2.为什么要进行双机热备?

    双机热备服务针对的是服务器的故障。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。一般地讲,在技术人员在现场的情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。从实际经验上看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以上。而如果技术人员不在现场,则恢复服务的时间就更长了。

    而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服务。

    当然,决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以些决定是否使用双机热备。换句话说,就是你的用户能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。

    在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断,对业务的影响就可能会造成很严重的损失。

    3.双机热备技术与备份的概念区别

    热备份指的是:High Available(HA)即高可用,而备份指的是Backup,即数据备份的一种,这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备份主要保障业务的连续性,实现的方法是故障点的转移。而备份,主要目的是为了防止数据丢失,而做的一份拷贝,所以备份强调的是数据恢复而不是应用的故障转移。

    4.双机热备方案的主要两种组建方式

    双机热备方案在进行讨论的时候一定要考虑到很多的因素,其中在各种环境下应用的时候需要格外的引起注意。当然还是有主要的两方式可以借鉴考虑的。

    第一种,双机热备它的工作原理是使用两台服务器,一台作为主服务器(Active),运行应用系统来提供服务。另一台作为备机,安装完全一样的应用系统,但处于待机状态(Standby)。当Active服务器出现故障时,通过软件诊测将Standby机器激活,保证应用在短时间内完成恢复正常使用。

    第二种,双机互备方式则是在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,这种方式实际上是双机热备方案的一种应用。

    但目前使用最多的还是主从模式的双机热备方案。其大致表示可如下图所示:


    目前基于存储共享的双机热备是双机热备方案的最标准方案。对于这种方式,采用两台服务器,使用共享的存储设备(磁盘阵列柜或存储区域网SAN)。两台服务器可以采用主从、互备等不同的方式。在工作过程中,两台服务器将以下一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担。同时,服务器通过心跳线(目前往往采用建立私有网络的方式)侦测另一台服务器的工作状况。

    下图即为双机热备工作大致状况图,如下图所示:


    双机热备方案当一台服务器出现故障时,另一台服务器根据心跳侦测的情况做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很短时间内完成,从而不会对业务造成大的影响。由于使用共享的存储设备,因此两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。

    5.Mysql双机热备实现原理图

    有了上面对双机热备知识的讲解,对其实现原理就有了一个深入了解,那么我们要做mysql数据库的双机热备就清楚明了多了。

    Mysql双机热备系统的拓扑结构如下图所示:

     

     

     两台服务器通过以太网连接网络,通过网络对外提供服务、相互通信。

    两台服务器之间用com口直接互联,双机热备软件利用这个连接进行双机热备相关的通信、监控和控制等。

    两台服务器通过HBA卡连接FC网络,访问共同的磁盘阵列,实现双机热备系统必要的磁盘。

    6.Mysql双机热备实现的配置

    为了数据的安全,客户有两台机器作为互相备份,当一台机器出现故障时,自动切换到另一台服务器。大部分的软件是通过LifeKeeper来实现的,但是Mysql的双机备份在LifeKeeper里没有实现,所以只能自己手动来实现Mysql的双机备份了。

    其实,Mysql的双机备份有一个很简单的第三方软件可以实现,那就是SQLyog,他有一个功能叫sja(SQLyog Job Agent)可以轻松实现,但是却有一个不足之处,就是Mysql表里必须有一个primary key,即主键值,如果没有,则此表不能用sja来实现。

    第二种方法就是用Mysql自身的Replication机制来实现了。但是这个功能只有Mysql 3.23以上的版本才有。

    这里先说明下,由于我还没有通过实际的应用例子来检测这种双机热备方式是否能过通过,所以我会在我通过实例实现后在续写我后面的关于Mysql双机热备实现的配置部分。现在这部分内容主要讲的还是双机热备份的实现原理和意义。

    展开全文
  • 双机热备概念原理及实现步骤

    千次阅读 2017-09-13 10:39:59
    对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说。 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,...

    1.双机热备

    对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说。

    从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。

    从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(Primary Server),另一台主机为备份主机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。双机热备针对的是IT核心服务器、存储、网络路由交换的故障的高可用性解决方案。

    2.为什么要进行双机热备?

    双机热备服务针对的是服务器的故障。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。一般地讲,在技术人员在现场的情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。从实际经验上看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以上。而如果技术人员不在现场,则恢复服务的时间就更长了。

    而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服务。

    当然,决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以些决定是否使用双机热备。换句话说,就是你的用户能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。

    在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断,对业务的影响就可能会造成很严重的损失。

    3.双机热备技术与备份的概念区别

    热备份指的是:High Available(HA)即高可用,而备份指的是Backup,即数据备份的一种,这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备份主要保障业务的连续性,实现的方法是故障点的转移。而备份,主要目的是为了防止数据丢失,而做的一份拷贝,所以备份强调的是数据恢复而不是应用的故障转移。

    4.双机热备方案的主要两种组建方式

    双机热备方案在进行讨论的时候一定要考虑到很多的因素,其中在各种环境下应用的时候需要格外的引起注意。当然还是有主要的两方式可以借鉴考虑的。

    第一种,双机热备它的工作原理是使用两台服务器,一台作为主服务器(Active),运行应用系统来提供服务。另一台作为备机,安装完全一样的应用系统,但处于待机状态(Standby)。当Active服务器出现故障时,通过软件诊测将Standby机器激活,保证应用在短时间内完成恢复正常使用。

    第二种,双机互备方式则是在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,这种方式实际上是双机热备方案的一种应用。

    但目前使用最多的还是主从模式的双机热备方案。其大致表示可如下图所示:


    目前基于存储共享的双机热备是双机热备方案的最标准方案。对于这种方式,采用两台服务器,使用共享的存储设备(磁盘阵列柜或存储区域网SAN)。两台服务器可以采用主从、互备等不同的方式。在工作过程中,两台服务器将以下一个虚拟的IP地址对外提供服务,依工作方式的不同,将服务请求发送给其中一台服务器承担。同时,服务器通过心跳线(目前往往采用建立私有网络的方式)侦测另一台服务器的工作状况。

    下图即为双机热备工作大致状况图,如下图所示:


    双机热备方案当一台服务器出现故障时,另一台服务器根据心跳侦测的情况做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很短时间内完成,从而不会对业务造成大的影响。由于使用共享的存储设备,因此两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。

    5.Mysql双机热备实现原理图

    有了上面对双机热备知识的讲解,对其实现原理就有了一个深入了解,那么我们要做mysql数据库的双机热备就清楚明了多了。

    Mysql双机热备系统的拓扑结构如下图所示:

     

     

     两台服务器通过以太网连接网络,通过网络对外提供服务、相互通信。

    两台服务器之间用com口直接互联,双机热备软件利用这个连接进行双机热备相关的通信、监控和控制等。

    两台服务器通过HBA卡连接FC网络,访问共同的磁盘阵列,实现双机热备系统必要的磁盘。

    6.Mysql双机热备实现的配置

    为了数据的安全,客户有两台机器作为互相备份,当一台机器出现故障时,自动切换到另一台服务器。大部分的软件是通过LifeKeeper来实现的,但是Mysql的双机备份在LifeKeeper里没有实现,所以只能自己手动来实现Mysql的双机备份了。

    其实,Mysql的双机备份有一个很简单的第三方软件可以实现,那就是SQLyog,他有一个功能叫sja(SQLyog Job Agent)可以轻松实现,但是却有一个不足之处,就是Mysql表里必须有一个primary key,即主键值,如果没有,则此表不能用sja来实现。

    第二种方法就是用Mysql自身的Replication机制来实现了。但是这个功能只有Mysql 3.23以上的版本才有。

    这里先说明下,由于我还没有通过实际的应用例子来检测这种双机热备方式是否能过通过,所以我会在我通过实例实现后在续写我后面的关于Mysql双机热备实现的配置部分。现在这部分内容主要讲的还是双机热备份的实现原理和意义。

     

     

     

    ★mysql双机热备的实现  

    接续上一篇关于mysql双机热备实现原理分析,在本文经过深思熟虑和多次用不同的方式实测试后。最后在这篇文章中,用一个小例子来完成mysql双机热备的实现。

    Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份的数据库中。实现mysql数据库的热备份。 

    要想实现双机的热备,首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都高于3.2。还有一个基本的原则就是作为从数据库的数据版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

    当然要实现mysql双机热备,除了mysql本身自带的REPLICATION功能可以实现外,也可以用Heartbeat这个开源软件来实现。不过本文主要还是讲如何用mysql自带的REPLICATION来实现mysql双机热备的功能。

     

    1. 准备服务器

     

    由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。

    本次我用于测试的两台服务器版本都是Mysql-5.5.17。

    2. Mysql 建立主-从服务器双机热备配置步骤

     

    2.1环境描述

    A服务器(主服务器Master):59.151.15.36

    B服务器(从服务器Slave):218.206.70.146

    主从服务器的Mysql版本皆为5.5.17

    Linux环境下

    将主服务器需要同步的数据库内容进行备份一份,上传到从服务器上,保证始初时两服务器中数据库内容一致。

    不过这里说明下,由于我是利用Mysql在安装后就有的数据库test进行测试的,所以两台服务器里面是没有建立表的,只不分别在test里面建立了同样的一张空表tb_mobile;

    Sql语句如下:

    mysql> create table tb_mobile( mobile VARCHAR(20) comment'手机号码', time timestamp DEFAULT now() comment'时间' );

    2.2 主服务器Master配置

    2.2.1 创建同步用户

    进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。

    操作指令如下:

    mysql> grant replication slave on *.* to 'replicate'@'218.206.70.146' identified by '123456';

    mysql> flush privileges;

    创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。

    在从服务器(Slave)上输入如下指令:

    [root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456

    如果出现下面的结果,则表示能登录成功,说明可以对这两台服务器进行双机热备进行操作。

    2.2.2 修改mysql配置文件

    如果上面的准备工作做好,那边我们就可以进行对mysql配置文件进行修改了,首先找到mysql配置所有在目录,一般在安装好mysql服务后,都会将配置文件复制一一份出来放到/ect目录下面,并且配置文件命名为:my.cnf。即配置文件准确目录为/etc/my.cnf

    找到配置文件my.cnf打开后,在[mysqld]下修改即可:

    [mysqld]

    server-id = 1

    log-bin=mysql-bin                //其中这两行是本来就有的,可以不用动,添加下面两行即可

    binlog-do-db = test

    binlog-ignore-db = mysql

    2.2.3 重启mysql服务

    修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。

    2.2.4 查看主服务器状态

    进入mysql服务后,可通过指令查看Master状态,输入如下指令:

    注意看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到的。

    注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。


     

    2.3 从服务器Slave配置

    2.3.1修改配置文件

    因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.cnf进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样而已。如下:

    [mysqld]

    server-id = 2

    log-bin=mysql-bin

    replicate-do-db = test

    replicate-ignore-db = mysql,information_schema,performance_schema

    2.3.2重启mysql服务

    修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。


     2.3.3用change mster 语句指定同步位置

    这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:

    mysql>stop slave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。

    mysql>change master to

    >master_host='59.151.15.36',master_user='replicate',master_password='123456',

    > master_log_file=' mysql-bin.000016 ',master_log_pos=107;

    注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。

    遇到的问题,如果按上面步骤之后还出现如下情况:


     则要重新设置slave。指令如下

    mysql>stop slave;

    mysql>reset slave;

    之后停止slave线程重新开始。成功后,则可以开启slave线程了。

    mysql>start slave;

    2.3.4查看从服务器(Slave)状态

    用如下指令进行查看

    mysql> show slave status\G;

    查看下面两项值均为Yes,即表示设置从服务器成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    2.4 测试同步

    之前开始已经说过了在数据库test只有一个表tb_mobile没有数据,我们可以先查看下两服务器的数据库是否有数据:

    Master:59.151.15.36


     Slave:218.206.70.146


     好了,现在可以在Master服务器中插入数据看下是否能同步。

    Master:59.151.15.36



    Slave:218.206.70.146


     可以从上面两个截图上看出,在Master服务器上进行插入的数据在Slave服务器可以查到,这就表示双机热备配置成功了。

    3. Mysql 建立主-主服务器双机热备配置步骤

    服务器还是用回现在这两台服务器

    3.1创建同步用户

    同时在主从服务器建立一个连接帐户,该帐户必须授予REPLIATION SLAVE权限。这里因为服务器A和服务器B互为主从,所以都要分别建立一个同步用户。

    服务器A:

    mysql> grant replication slave on *.* to 'replicate'@'218.206.70.146' identified by '123456';

    mysql> flush privileges;

    服务器B:

    mysql> grant replication slave on *.* to 'replicate'@'59.151.15.36' identified by '123456';

    mysql> flush privileges;

    3.2修改配置文件my.cnf

    服务器A

    [mysqld]

           server-id = 1

    log-bin=mysql-bin 

    binlog-do-db = test

           binlog-ignore-db = mysql

    #主-主形式需要多添加的部分

           log-slave-updates

           sync_binlog = 1

           auto_increment_offset = 1

           auto_increment_increment = 2

           replicate-do-db = test

           replicate-ignore-db = mysql,information_schema

    服务器B:

    [mysqld]

    server-id = 2

    log-bin=mysql-bin 

    master-slave need

           replicate-do-db = test

           replicate-ignore-db = mysql,information_schema,performance_schema

          

    #主-主形式需要多添加的部分

           binlog-do-db = test

           binlog-ignore-db = mysql

           log-slave-updates

           sync_binlog = 1

           auto_increment_offset = 2

           auto_increment_increment = 2

    3.3分别重启A服务器和B服务器上的mysql服务

    重启服务器方式和上面的一样,这里就不做讲解了

    3.4分别查A服务器和B服务器作为主服务器的状态

    服务器A:



     服务器B:


     3.5分别在A服务器和B服务器上用change master to 指定同步位置

    服务器A:

    mysql>change master to

    >master_host='218.206.70.146',master_user='replicate',master_password='123456',

    > master_log_file=' mysql-bin.000011 ',master_log_pos=497;

    服务器B:

    mysql>change master to

    >master_host='59.151.15.36',master_user='replicate',master_password='123456',

    > master_log_file=' mysql-bin.000016 ',master_log_pos=107;

    3.6 分别在A和B服务器上重启从服务线程

    mysql>start slave;

    3.7 分别在A和B服务器上查看从服务器状态

    mysql>show slave status\G;

    查看下面两项值均为Yes,即表示设置从服务器成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    3.8 测试主-主同步例子

    测试服务器A:

    在服务器A上插入一条语句如下图所示:



     之后在服务器B上查看是否同步如下图所示:



     测试服务器B:

    在服务器B上插入一条语句如下图所示:


     然后在从服务器A上查看是否有同步数据如下图所示:


     

     最后从结果可以看出主-主形式的双机热备是能成功实现的。

    4. 配置参数说明

    Server-id

    ID值唯一的标识了复制群集中的主从服务器,因此它们必须各不相同。Master_id必须为1到232-1之间的一个正整数值,slave_id值必须为2到232-1之间的一个正整数值。

    Log-bin

    表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提。

    Binlog-do-db

    表示需要记录二进制日志的数据库。如果有多个数据可以用逗号分隔,或者使用多个binlog-do-dg选项。

    Binglog-ingore-db

    表示不需要记录二进制日志的数据库,如果有多个数据库可用逗号分隔,或者使用多binglog-ignore-db选项。

    Replicate-do-db

    表示需要同步的数据库,如果有多个数据可用逗号分隔,或者使用多个replicate-do-db选项。

    Replicate-ignore-db

    表示不需要同步的数据库,如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项。

    Master-connect-retry

    master-connect-retry=n表示从服务器与主服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从服务器存在mater.info文件,它将忽略些选项。

    Log-slave-updates

    配置从库上的更新操作是否写入二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步。

    Slave-skip-errors

    在复制过程,由于各种原因导致binglo中的sql出错,默认情况下,从库会停止复制,要用户介入。可以设置slave-skip-errors来定义错误号,如果复制过程中遇到的错误是定义的错误号,便可以路过。如果从库是用来做备份,设置这个参数会存在数据不一致,不要使用。如果是分担主库的查询压力,可以考虑。

    Sync_binlog=1 Or N

    Sync_binlog的默认值是0,这种模式下,MySQL不会同步到磁盘中去。这样的话,Mysql依赖操作系统来刷新二进制日志binary log,就像操作系统刷新其他文件的机制一样。因此如果操作系统或机器(不仅仅是Mysql服务器)崩溃,有可能binlog中最后的语句丢失了。要想防止这种情况,可以使用sync_binlog全局变量,使binlog在每N次binlog写入后与硬盘同步。当sync_binlog变量设置为1是最安全的,因为在crash崩溃的情况下,你的二进制日志binary log只有可能丢失最多一个语句或者一个事务。但是,这也是最慢的一种方式(除非磁盘有使用带蓄电池后备电源的缓存cache,使得同步到磁盘的操作非常快)。

    即使sync_binlog设置为1,出现崩溃时,也有可能表内容和binlog内容之间存在不一致性。如果使用InnoDB表,Mysql服务器处理COMMIT语句,它将整个事务写入binlog并将事务提交到InnoDB中。如果在两次操作之间出现崩溃,重启时,事务被InnoDB回滚,但仍然存在binlog中。可以用-innodb-safe-binlog选项来增加InnoDB表内容和binlog之间的一致性。(注释:在Mysql 5.1版本中不需要-innodb-safe-binlog;由于引入了XA事务支持,该选项作废了),该选项可以提供更大程度的安全,使每个事务的binlog(sync_binlog=1)和(默认情况为真)InnoDB日志与硬盘同步,该选项的效果是崩溃后重启时,在滚回事务后,Mysql服务器从binlog剪切回滚的InnoDB事务。这样可以确保binlog反馈InnoDB表的确切数据等,并使从服务器保持与主服务器保持同步(不接收回滚的语句)。

    Auto_increment_offset和Auto_increment_increment

    Auto_increment_increment和auto_increment_offset用于主-主服务器(master-to-master)复制,并可以用来控制AUTO_INCREMENT列的操作。两个变量均可以设置为全局或局部变量,并且假定每个值都可以为1到65,535之间的整数值。将其中一个变量设置为0会使该变量为1。

    这两个变量影响AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset确定AUTO_INCREMENT列值的起点。

    如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。例如:表内已有一些数据,就会用现在已有的最大自增值做为初始值。

    展开全文
  • 双机架构

    2018-11-05 17:43:24
    存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题对任何一个高可用存储方案,需要从以下几个方面去进行思考...

    存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题对任何一个高可用存储方案,需要从以下几个方面去进行思考和分析:

    数据如何复制?

    各个节点的职责是什么? 如何应对复制延迟?

    如何应对复制中断?

    常见的双机高可用架构:主备、主从、主备/主从切换和主主。

    主备复制

    主备复制是最常见也是最简单的一种存储高可用方案,几乎所有的存储系统都提供了主备复制的功能,例如MySQLRedisMongoDB等。

    1.基本实现

    下面是标准的主备方案结构图:

    其整体架构比较简单,主备架构中的备机主要还是起到一个备份作用,并不承担实际的业务读写操作,如果要把备机改为主机,需要人工操作。

    2.优缺点分析

    主备复制架构的优点就是简单,表现有:

    对于客户端来说,不需要感知备机的存在,即使灾难恢复后,原来的备机被人工修改为主机后,对于客户端来说,只是认为主机的地址换了而已,无须知道是原来的备机升级为主机。

    对于主机和备机来说,双方只需要进行数据复制即可,无须进行状态判断和主备切换这类复杂的操作。

    主备复制架构的缺点主要有:

    备机仅仅只为备份,并没有提供读写操作,硬件成本上有浪费。

    故障后需要人工干预,无法自动恢复。人工处理的效率是很低的,可能打电话找到能够操作的人就耗费了10分钟,甚至如果是深更半夜,出了故障都没人知道。人工在执行恢复操作的过程中也容易出错,因为这类操作并不常见,可能1年就23次,实际操作的时候很可能遇到各种意想不到的问题。

    综合主备复制架构的优缺点,内部的后台管理系统使用主备复制架构的情况会比较多,例如学生管理系统、员工管理系统、假期管理系统等,因为这类系统的数据变更频率低,即使在某些场景下丢失数据,也可以通过人工的方式补全。

    主从复制

    主从复制和主备复制只有一字之差,意思是随从、仆从的意思是备份。我们可以理解为仆从是要帮主人干活的,这里的干活就是承担的操作。也就是说,主机负责读写操作,从机只负责读操作,不负责写操作。

    1.基本实现

    下面是标准的主从复制架构:

    与主备复制架构比较类似,主要的差别点在于从机正常情况下也是要提供读的操作。

    2.优缺点分析

    主从复制与主备复制相比,优点有:

    主从复制在主机故障时,读操作相关的业务可以继续运行。主从复制架构的从机提供读操作,发挥了硬件的性能。

    缺点有:

    主从复制架构中,客户端需要感知主从关系,并将不同的操作发给不同的机器进行处理,复杂度比主备复制要高。主从复制架构中,从机提供读业务,如果主从复制延迟比较大,业务会因为数据不一致出现问题。

    故障时需要人工干预。

    综合主从复制的优缺点,一般情况下,写少读多的业务使用主从复制的存储架构比较多。例如,论坛、BBS、新闻网站这类业务,此类业务的读操作数量是写操作数量的10倍甚至100倍以上。

    双机切换

    1.设计关键

    主备复制和主从复制方案存在两个共性的问题: 主机故障后,无法进行写操作。

    如果主机无法恢复,需要人工指定新的主机角色。

    双机切换就是为了解决这两个问题而产生的,包括主备切换和主从切换两种方案。简单来说,这两个方案就是在原有方案的基础上增加切换功能,即系统自动决定主机角色,并完成角色切换。由于主备切换和主从切换在切换的设计上没有差别,我接下来以主备切换为例,一起来看看双机切换架构是如何实现的。

    要实现一个完善的切换方案,必须考虑这几个关键的设计点:

    1.主备间状态判断

    主要包括两方面:状态传递的渠道,以及状态检测的内容。

    状态传递的渠道:是相互间互相连接,还是第三方仲裁?

    状态检测的内容:例如机器是否掉电、进程是否存在、响应是否缓慢等。  

    2.切换决策主要包括几方面:切换时机、切换策略、自动程度。

    切换时机:什么情况下备机应该升级为主机?是机器掉电后备机才升级,还是主机上的进程不存在就升级,还是主机响应时间超过2秒就升级,还是3分钟内主机连续重启3次就升级等。

    切换策略:原来的主机故障恢复后,要再次切换,确保原来的主机继续做主机,还是原来的主机故障恢复后自动成为新的备机?

    自动程度:切换是完全自动的,还是半自动的?例如,系统判断当前需要切换,但需要人工做最终的确认操作(例如,单击一下切换按钮)。数据冲突解决

    3.当原有故障的主机恢复后,新旧主机之间可能存在数据冲突。例如,用户在旧主机上新增了一条ID100的数据,这个数据还没有复制到旧的备机,此时发生了切换,旧的备机升级为新的主机,用户又在新的主机上新增了一条ID100的数据,当旧的故障主机恢复后,这两条ID都为100的数据,应该怎么处理?

    以上设计点并没有放之四海而皆准的答案,不同的业务要求不一样,所以切换方案比复制方案不只是多了一个切换功能那么简单,而是复杂度上升了一个量级。形象点来说,如果复制方案的代码是1000行,那么切换方案的代码可能就是10000行,多出来的那9000行就是用于实现上面我所讲的3个设计点的。

    2.常见架构:根据状态传递渠道的不同,常见的主备切换架构有三种形式:互连式、中介式和模拟式。

    互连式

    故名思议,互连式就是指主备机直接建立状态传递的渠道,架构图请注意与主备复制架构对比。

    你可以看到,在主备复制的架构基础上,主机和备机多了一个状态传递的通道,这个通道就是用来传递状态信息的。这个通道的具体实现可以有很多方式: 可以是网络连接(例如,各开一个端口),也可以是非网络连接(用串口线连接)。

    可以是主机发送状态给备机,也可以是备机到主机来获取状态信息。可以和数据复制通道共用,也可以独立一条通道。

    状态传递通道可以是一条,也可以是多条,还可以是不同类型的通道混合(例如,网络+串口)。

    为了充分利用切换方案能够自动决定主机这个优势,客户端这里也会有一些相应的改变,常见的方式有:

    为了切换后不影响客户端的访问,主机和备机之间共享一个对客户端来说唯一的地址。例如虚拟IP,主机需要绑定这个虚拟的IP

    客户端同时记录主备机的地址,哪个能访问就访问哪个;备机虽然能收到客户端的操作请求,但是会直接拒绝,拒绝的原因就是备机不对外提供服务。互连式主备切换主要的缺点在于:

    如果状态传递的通道本身有故障(例如,网线被人不小心踢掉了),那么备机也会认为主机故障了从而将自己升级为主机,而此时主机并没有故障,最终就可能出现两个主机。

    虽然可以通过增加多个通道来增强状态传递的可靠性,但这样做只是降低了通道故障概率而已,不能从根本上解决这个缺点,而且通道越多,后续的状态决策会更加复杂,因为对备机来说,可能从不同的通道收到了不同甚至矛盾的状态信息。

    中介式

    中介式指的是在主备两者之外引入第三方中介,主备机之间不直接连接,而都去连接中介,并且通过中介来传递状态信息,其架构图如下:

     

    对比一下互连式切换架构,我们可以看到,主机和备机不再通过互联通道传递状态信息,而是都将状态上报给中介这一角色。单纯从架构上看,中介式似乎比互连式更加复杂了,首先要引入中介,然后要各自上报状态。然而事实上,中介式架构在状态传递和决策上却更加简单了,这是为何呢?

    连接管理更简单:主备机无须再建立和管理多种类型的状态传递连接通道,只要连接到中介即可,实际上是降低了主备机的连接管理复杂度。

    例如,互连式要求主机开一个监听端口,备机来获取状态信息;或者要求备机开一个监听端口,主机推送状态信息到备机;如果还采用了串口连接,则需要增加串口连接管理和数据读取。采用中介式后,主备机都只需要把状态信息发送给中介,或者从中介获取对方的状态信息。无论是发送还是获取,主备机都是作为中介的客户端去操作,复杂度会降低。

    状态决策更简单:主备机的状态决策简单了,无须考虑多种类型的连接通道获取的状态信息如何决策的问题,只需要按照下面简单的算法即可完成状态决策。无论是主机还是备机,初始状态都是备机,并且只要与中介断开连接,就将自己降级为备机,因此可能出现双备机的情况。

    主机与中介断连后,中介能够立刻告知备机,备机将自己升级为主机。

    如果是网络中断导致主机与中介断连,主机自己会降级为备机,网络恢复后,旧的主机以新的备机身份向中介上报自己的状态。如果是掉电重启或者进程重启,旧的主机初始状态为备机,与中介恢复连接后,发现已经有主机了,保持自己备机状态不变。

    主备机与中介连接都正常的情况下,按照实际的状态决定是否进行切换。例如,主机响应时间超过3秒就进行切换,主机降级为备机,备机升级为主机即可。

    虽然中介式架构在状态传递和状态决策上更加简单,但并不意味着这种优点是没有代价的,其关键代价就在于如何实现中介本身的高可用。如果中介自己宕机了,整个系统就进入了双备的状态,写操作相关的业务就不可用了。这就陷入了一个递归的陷阱:为了实现高可用,我们引入中介,但中介本身又要求高可用,于是又要设计中介的高可用方案……如此递 归下去就无穷无尽了。

    MongoDBReplica Set采取的就是这种方式,其基本架构如下:

    MongoDB(M)表示主节点,MongoDB(S)表示备节点,MongoDB(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

    幸运的是,开源方案已经有比较成熟的中介式解决方案,例如ZooKeeperKeepalivedZooKeeper本身已经实现了高可用集群架构,因此已经帮我们解决了中介本身的可靠性问题,在工程实践中推荐基于ZooKeeper搭建中介式切换架构。

    模拟式

    模拟式指主备机之间并不传递任何状态数据,而是备机模拟成一个客户端,向主机发起模拟的读写操作,根据读写操作的响应情况来判断主机的状态。其基本架构如下:

    对比一下互连式切换架构,我们可以看到,主备机之间只有数据复制通道,而没有状态传递通道,备机通过模拟的读写操作来探测主机的状态,然后根据读写操作的响应情况来进行状态决策。

     

    模拟式切换与互连式切换相比,优点是实现更加简单,因为省去了状态传递通道的建立和管理工作。

    简单既是优点,同时也是缺点。因为模拟式读写操作获取的状态信息只有响应信息(例如,HTTP 404,超时、响应时间超过3秒等),没有互连式那样多样(除了响应信息,还可以包含CPU负载、I/O负载、吞吐量、响应时间等),基于有限的状态来做状态决策,可能出现偏差。

    主主复制

    主主复制指的是两台机器都是主机,互相将数据复制给对方,客户端可以任意挑选其中一台机器进行读写操作,下面是基本架构图。

    相比主备切换架构,主主复制架构具有如下特点: 两台都是主机,不存在切换的概念。

    客户端无须区分不同角色的主机,随便将读写操作发送给哪台主机都可以。

    从上面的描述来看,主主复制架构从总体上来看要简单很多,无须状态信息传递,也无须状态决策和状态切换。然而事实上主主复制架构也并不简单,而是有其独特的复杂性,具体表现在:如果采取主主复制架构,必须保证数据能够双向复制,而很多数据是不能双向复制的。例如:

    用户注册后生成的用户ID,如果按照数字增长,那就不能双向复制,否则就会出现X用户在主机A注册,分配的用户ID100,同时Y用户在主机B注册,分配的用户ID也是100, 这就出现了冲突。

    库存不能双向复制。例如,一件商品库存100件,主机A上减了1件变成99,主机B上减了2件变成98,然后主机A将库存99复制到主机B,主机B原有的库存98被覆盖,变成了99,而实际上此时真正的库存是97。类似的还有余额数据。

    因此,主主复制架构对数据的设计有严格的要求,一般适合于那些临时性、可丢失、可覆盖的数据场景。例如,用户登录产生的session数据(可以重新登录生成)、用户行为的日志数据(可以丢失)、论坛的草稿数据(可以丢失)等。

     

    展开全文
  • VRRP一、概述产生背景VRRP简介相关概念二、VRRP的报文结构三、VRRP的状态机四、VRRP中Master的选举和工作过程Master路由器的选举工作过程正常工作VRRP的故障切换VRRP认证方式五、VRRP提供的功能主备备份负载分担监视...

    一、概述

    产生背景

    随着Internet的发展,人们对网络可靠性的要求越来越高。特别是对于终端用户来说,能够实时与网络其他部分保持联系是非常重要的。一般来说,主机通过设置默认网关来与外部网络联系。

    主机将发送给外部网络的报文发送给网关,由网关传递给外部网络,从而实现主机与外部网络的通信。正常的情况下,主机可以完全信赖网关的工作,但是当网关坏掉时,主机与外部的通信就会中断。要解决网络中断的问题,可以依靠再添加网关的方式解决,不过由于大多数主机只允许配置一个默认网关,此时需要网络管理员进行手工干预网络配置,才能使得主机使用新的网关进行通信;有时,人们运用动态路由协议的方法来解决网络出现故障这一问题,如运行RIP、OSPF等,或者使用IRDP。然而,这些协议由于配置过于复杂,或者安全性能不好等原因都不能满足用户的需求。

    为了更好地解决网络中断的问题,网络开发者提出了VRRP,它既不需要改变组网情况,也不需要在主机上做任何配置,只需要在相关路由器上配置极少的几条命令,就能实现下一跳网关的备份,并且不会给主机带来任何负担。和其他方法比较起来,VRRP更加能够满足用户的需求。

    VRRP简介

    VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议。通常,一个网络内的所有主机都设置一条缺省路由。它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。使用 VRRP 的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。 VRRP 包封装在 IP 包中发送(底层基于IP协议),支持各种上层协议。

    相关概念

    • VRID:虚拟路由器的标识。有相同VRID的一组路由器构成一个虚拟路由器。

    • 虚拟路由器:由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关。

    • Master(主)路由器:虚拟路由器中承担报文转发任务的路由器。

    • Backup(备份)路由器:Master路由器出现故障时,能够代替Master路由器工作的路由器。

    • 虚拟IP地址:虚拟路由器的IP地址。一个虚拟路由器可以拥有一个或多个IP地址。

    • IP地址拥有者:接口IP地址与虚拟IP地址相同的路由器被称为IP地址拥有者。

    • 虚拟MAC地址:一个虚拟路由器拥有一个虚拟MAC地址。虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。

    • 优先级:VRRP根据优先级来确定虚拟路由器中每台路由器的地位。

    • 非抢占方式:如果Backup路由器工作在非抢占方式下,则只要Master路由器没有出现故障,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

    • 抢占方式:如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态。

    二、VRRP的报文结构

    VRRP协议只有一种报文,即VRRP报文(Advertisement通告报文)。VRRP报文用来将Master设备的优先级和状态通告给同一虚拟路由器的所有VRRP路由器。

    VRRP报文封装在IP报文中,发送到分配给VRRP的IPv4组播地址。在IP报文头中,源地址为发送报文的主接口地址(不是虚拟地址或辅助地址),目的地址是224.0.0.18,TTL是255,协议号是112。VRRP报文的结构如图1所示。

    VRRP报文被封装在IP包中。使用专门的VRRP IPv4组播地址(协议号112,组播地址 224.0.0.18

    IANA分配给VRRP的IP协议号为112(十进制)。

    IANA给VRRP分配的IP组播地址为224.0.0.18。这是一个本地范围的多播地址。不论TTL的值是多少,路由器都被禁止转发以此地址为目标地址的报文。

    VRRP报文的IP头中,TTL必须为255。当VRRP路由器收到TTL不等于255的VRRP协议报文后,必须丢弃

    在这里插入图片描述

    • Version:4比特,协议版本号,现在的VRRP为版本2。

    • Type:4比特,定义了VRRP报文的类型。本版本的协议仅定义了一个报文类型,字段值为1:ADVERTISEMENT。带有未知类型的报文必须被丢弃。

    • Virtual Rtr ID:8比特,虚拟路由器标识(VRID)字段标识了此报文所报告状态的虚拟路由器。可配置的范围是1~255。没有缺省值。

    • Priority:8比特,Priority字段申明了发送此报文的VRRP路由器的优先级。值越高优先级越高。该字段为8位无符号整型。

      如果VRRP路由器是虚拟路由器地址的IP地址所有者,那么其优先级自动变为最大值255。起备用作用的VRRP路由器的优先级必须在1–254之间,0表示设备停止参与VRRP,用来使备份路由器尽快成为主路由器,而不必等到计时器超时。缺省的VRRP路由器优先级为100。

    • Count IP Addrs:8比特,在此VRRP广播通告中包含的IP地址的数量。

    • Auth Type:8比特,认证类型字段用于标识要用到的认证方法。在一个虚拟路由器组内认证类型是唯一的。认证类型字段是一个8位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配,那么该报文必须被丢弃。

      目前定义的认证方法有:

      • 0 ——No Authentication 不认证

        该认证类型表明VRRP协议报文的交换不需要认证。在发送VRRP协议报文时,Authentication Data 字段将被置为0;而在接收协议报文时,Authentication Data 字段被忽略。

      • 1 - Reserved 保留

      • 2 - Reserved 保留

      解释:
      VRRP的早期版本 定义了一些认证类型[RFC2338]。这些认证类型的定义已经在本文档中被删除,因为根据实际经验表明,这些认证方法并不能提供任何真正的安全保障,并且仅会导致在一个VRRP组内出现多个Master的情况。

    • Adver Int:8比特,VRRP通告间隔时间,单位为秒。缺省为1秒。这个字段主要用于错误配置路由器时的故障定位和解决。

    • Checksum:16比特,校验和字段用于检测VRRP消息的数据是否出错。

      校验和是从version字段开始的整个VRRP消息的1的16位补码和。(RFC1071 描述了校验和的计算细节)。

    • IP Address:32比特,IP地址字段为虚拟路由器的一个或者多个IP地址。IP地址的数量在"Count IP Addrs"字段中说明。IP地址字段用于错误配置路由器时的故障定位和解决。

    • Authentication Data:32比特,认证字符串仅仅用于对RFC2338的向后兼容。在发送VRRP报文时该字段应该被置为0,而在接收VRRP报文时该字段应该被忽略。

    三、VRRP的状态机

    VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。

    在这里插入图片描述

    • Initialize

    Initialize状态是VRRP的初始状态,在接口配置VRRP后,如果该接口是Down的(例如接口被关闭,或者没有连接任何的线缆),那么该接口的VRRP状态将会停滞在Initialize。

    当接口Up之后,到Startup的消息,如果其VRRP优先级为255(这种情况发生在该接口的实际IP地址是VRRP虚拟IP地址的情况),那么接口的VRRP状态将由Initialize切换到Master,而如果接口的VRRP优先级不是255,则进入Backup状态。

    • Master,当路由器处于Master状态时,它将会做下列工作:

      • 周期性的发送VRRP报文,时间间隔缺省值为1s。

      • 以虚拟MAC地址响应对虚拟IP地址的ARP请求。

      • 转发目的MAC地址为虚拟MAC地址的IP报文。

      • 如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。

      • 如果收到比自己优先级大的报文则转为Backup状态(VRRP默认开启抢占模式)。

      • 如果收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP地址大,则转为Backup状态。

      • 当接收到接口的Shutdown事件时,转为Initialize。

    • Backup,当路由器处于Backup状态时,它将会做下列工作:

      • 接收Master发送的VRRP报文,判断Master的状态是否正常。

      • 对虚拟IP地址的ARP请求,不做响应。

      • 丢弃目的MAC地址为虚拟MAC地址的IP报文。

      • 丢弃目的IP地址为虚拟IP地址的IP报文。

      • Backup状态下如果收到比自己优先级小的报文时,丢弃报文,不重置定时器;如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。

      • 当Backup接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master。

      • 当接收到接口的Shutdown事件时,转为Initialize。

    四、VRRP中Master的选举和工作过程

    Master路由器的选举

    在一个VRRP组中,正常情况下只能存在一台Master路由器。VRRP根据优先级和IP地址来决定哪台路由器充当Master。优先级的范围时0-255,优先级越大越优,则路由器就越有可能成为Master。其中0和255是两个特殊的优先级,不能被直接配置。

    • 优先级为255:当路由器的接口IP地址与VRRP虚拟IP地址相同时,它的优先级将自动会变成最大值255,此时该路由器被称为IP地址的拥有者(IP Address Owner)。

    • 优先级为0:它出现在Master路由器主动放弃Master角色时,例如当接口的VRRP配置被手工删除时,该Master路由器会立即发送一个优先级为0的VRRP报文,用来通知网络中的Backup路由器。

    当一个激活了VRRP的接口Up之后,如果接口的VRRP优先级为255,那么其VRRP状态将直接从Initialize(初始状态)切换到Master(主状态),而如果接口的VRRP优先级不为255,那么首先切换到Backup(备份状态),然后再看竞争结果决定是否切换到Master。

    如果在同一个广播域的同一个VRRP组内出现两台Master路由器,那么它们将比较自己与对方的优先级,优先级的值更大的设备胜出,继续保持Master状态,而竞争失败的路由器则切换到Backup状态。如果这两台Master路由器的优先级相等,那么接口IP地址更大的路由器接口将会保持Master状态,而另一台设备则切换到Backup状态。当然,一个网络在稳定运行时,同一个VRRP组内不应该同时出现两台Master路由器。

    处于Master状态的路由器会周期性的发送VRRP报文,并在报文中描述自己的优先级,IP地址等等信息。同一个广播域中,同一个VRRP组的Backup路由器会侦听这些报文。如果此时网络中新出现一台Backup路由器(其优先级高于当前的Master路由器),激活了抢占功能,那么它会忽略收到VRRP报文,并且切换到Master侦听,同时发送自己的VRRP报文并在报文中描述其优先级等信息,而此前的Master路由器在收到了该VRRP报文后,则切换到Backup状态。

    工作过程

    正常工作

    路由器使能VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器,优先级低的成为Backup路由器。Master路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;Backup路由器则启动定时器等待通告报文的到来。

    • 在抢占方式下,当Backup路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master路由器;否则将保持Backup状态。

    • 在非抢占方式下,只要Master路由器没有出现故障,备份组中的路由器始终保持Master或Backup状态,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

    如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文,则认为Master路由器已经无法正常工作,此时Backup路由器会认为自己是Master路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出Master路由器,承担报文的转发功能。

    VRRP的故障切换

    Master路由器周期性地发送VRRP报文,在虚拟路由器中公布其配置信息(优先级等)和工作状况。Backup路由器通过接收到VRRP报文的情况来判断Master路由器是否工作正常。

    • Master路由器主动放弃Master地位(如Master路由器退出虚拟路由器)时,会发送优先级为0的VRRP报文,致使Backup路由器快速切换变成Master路由器。这个切换的时间称为Skew time(倾斜时间),计算方式为:(256-Backup路由器的优先级)/256,单位为秒(备份路由器优先级越高,时间越短)。

    • 当Master路由器发生网络故障而不能发送VRRP报文的时候,Backup路由器并不能立即知道其工作状况。Backup路由器等待一段时间之后,如果还没有接收到VRRP报文,那么会认为Master路由器无法正常工作,而把自己升级为Master路由器,周期性发送VRRP报文。Backup路由器默认等待的时间称为Master_Down_Interval,取值为:(3×VRRP报文的发送时间间隔)+Skew time,单位为秒。如果此时多个Backup路由器竞争Master路由器的位置,将通过优先级来选举Master路由器。

    在性能不够稳定的网络中,Backup路由器可能因为网络堵塞而在Master_Down_Interval期间没有收到Master路由器的报文,而主动抢占为Master位置,如果此时原Master路由器的报文又到达了,就会出现虚拟路由器的成员频繁的进行Master抢占现象。为了缓解这种现象的发生,特制定了延迟等待定时器。它可以使得Backup路由器在等待了Master_Down_Interval后,再等待延迟等待时间。如在此期间仍然没有收到VRRP报文,则此Backup路由器才会切换为Master路由器,对外发送VRRP报文。

    VRRP认证方式

    VRRP提供了三种认证方式:

    • 无认证:不进行任何VRRP报文的合法性认证,不提供安全性保障。

    • 简单字符认证:在一个有可能受到安全威胁的网络中,可以将认证方式设置为简单字符认证。发送VRRP报文的路由器将认证字填入到VRRP报文中,而收到VRRP报文的路由器会将收到的VRRP报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是合法的VRRP报文;否则认为接收到的报文是一个非法报文。

    • MD5认证:在一个非常不安全的网络中,可以将认证方式设置为MD5认证。发送VRRP报文的路由器利用认证字和MD5算法对VRRP报文进行加密,加密后的报文保存在AuthenticationHeader(认证头)中。收到VRRP报文的路由器会利用认证字解密报文,检查该报文的合法性。

    五、VRRP提供的功能

    主备备份

    这是VRRP提供IP地址备份功能的基本方式。主备备份方式需要建立一个虚拟路由器,该虚拟路由器包括一个Master和若干Backup设备。

    • 正常情况下,业务全部由Master承担。
    • Master出现故障时,Backup设备接替工作。

    负载分担

    现在允许一台路由器为多个作备份。通过多虚拟路由器设置可以实现负载分担。

    负载分担方式是指多台路由器同时承担业务,因此需要建立两个或更多的备份组。

    负载分担方式具有以下特点。

    - 每个备份组都包括一个Master设备和若干Backup设备。
    
    • 各备份组的Master可以不同。

    • 同一台路由器可以加入多个备份组,在不同备份组中有不同的优先级。
      在这里插入图片描述

    如图所示,配置两个备份组:组1和组2:

    • RouterA在备份组1中作为Master,在备份组2中作为Backup;

    • RouterB在备份组1和2中都作为Backup;

    • RouterC在备份组2中作为Master,在备份组1中作为Backup。

    • 一部分主机使用备份组1作网关,另一部分主机使用备份组2作为网关。

    这样,以达到分担数据流,而又相互备份的目的。

    监视功能

    在这里插入图片描述

    监视上行链路

    VRRP网络传输功能有时需要额外的技术来完善其工作。例如,Master路由器到达某网络的上行链路突然断掉时,主机无法通过此Master路由器远程访问该网络。此时,可以通过监视指定接口上行链路功能,解决这个问题。当Master路由器发现上行链路出现故障后,主动降低自己的优先级(使Master路由器的优先级低于Backup路由器),并立即发送VRRP报文。Backup路由器接收到优先级比自己低的VRRP报文后,等待Skew_Time切换为新的Master路由器。从而,使得能够到达此网络的Backup路由器充当VRRP新的Master路由器,协助主机完成网络通讯。

    • VRRP可以直接监视连接上行链路的接口状态。当连接上行链路的接口down时,将Master路由器降低指定的优先级。VRRP优先级最低可以降低到1。

    • VRRP可以利用NQA技术(Network Quality Analyzer网络质量分析,是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络信息进行统计。)监视上行链路连接的远端主机或者网络状况。例如,Master设备上启动NQA的ICMP-echo探测功能,探测远端主机的可达性。当ICMP-echo探测失败时,它可以通知本设备探测结果,达到降低VRRP优先级的目的。

    • VRRP也可以利用BFD技术(Bidirectional Forwarding Detection双向转发检测,它是一个用于检测两个转发点之间故障的网络协议,可以提供毫秒级的检测,可以实现链路的快速检测,BFD通过与上层路由协议联动,可以实现路由的快速收敛,确保业务的永续性。)监视上行链路连接的远端主机或者网络状况。由于BFD的精度可以到达10ms,通过BFD能够快速检测到链路状态的变化,达到快速抢占的目的。例如,可以在Master路由器上使用BFD技术监视上行设备的物理状态,在上行设备坏掉之后,快速检测到该变化,并降低Master路由器的优先级,致使Backup路由器等待Skew time后,抢占成为新的Master路由器。

    Backup监视Master工作状态

    Backup路由器在Master路由器坏掉之后,正常情况下需要等待Master_Down_Interval才能切换为新的Master的位置,这段时间内主机将无法正常通信,因为此时没有Master设备替它转发报文。为了解决这个网络故障,Backup设备提供了一个监听Master工作状态的功能,使得Master路由器坏掉之后Backup能够立即切换成为新的Master路由器,维持网络通讯。

    Backup路由器监视Master路由器采用的是具有快速检测功能的BFD技术。在Backup设备上使用该技术监视Master路由器的状态,一旦Master路由器发生故障,Backup就可以自动切换成为新的Master路由器,将切换时间缩短到毫秒级。

    对于以下情况,BFD都能够将检测到的故障通知接口板,从而加快VRRP主备倒换的速度。

    • 备份组包含的接口出现故障。

    • Master和Backup不直接相连。

    • Master和Backup直接相连,但在中间链路上存在传输设备。

    BFD对Backup和Master之间的实际地址通信情况进行检测,如果通信不正常,Backup就认为Master已经不可用,升级成Master。在以下两种情况下Backup转换为Master:

    • 当两台路由器之间的直连全部断开时,Backup主动升级成Master,承载上行流量。

    • 当Master重新启动、或Master与交换机之间的链路断开、或与Master相连的交换机重新启动时,Backup主动升级成Master,承载上行流量。

    VRRP快速切换的环境要求:

    • 在Backup上,BFD Session检测的接口必须和Master设备相连。

    • 在Master不可用时,Backup的优先级增加并大于原来Master的优先级,促使自己快速切换为Master。

    虚拟IP地址Ping开关

    RFC3768并没有规定虚拟IP地址应不应该Ping通。不能Ping通虚拟IP地址,会给监控虚拟路由器的工作情况带来一定的麻烦,能够Ping通虚拟IP地址可以比较方便的监控虚拟路由器的工作情况,但是带来可能遭到ICMP攻击的隐患。控制Ping通虚拟IP地址的开关命令,用户可以选择是否打开。

    PS:
    ICMP Flood(即ICMP 洪水攻击):当 ICMP ping 产生的大量回应请求超出了系统的最大限度,以至于系统耗费所有资源来进行响应直至再也无法处理有效的网络信息流,这就是 ICMP 洪水攻击。简单说攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。然后该子网上的所有主机均会对此ICMP Echo请求包作出答复,向被攻击的目标主机发送数据包,使此主机受到攻击,导致网络阻塞。ICMP Flood攻击主要的目的使网络瘫痪,这也是最常见和最常用的网络攻击行为之一。

    VGMP和mVRRP将在其他博文中详解

    HSRP和VRRP的区别:

    • 名字不同。HSRP里是Active,Standby。VRRP是Master,Backup。且HSRP只能有一个Active,一个Standby,其余都是监听状态。VRRP只能有一个Master,其余都是Backup。

    • HSRP的虚拟路由器的IP地址不能和真实路由器的IP地址冲突,但VRRP可以。VRRP中可以将虚拟路由器的IP地址设成真实路由器的IP地址。因为对虚拟路由器来说IP并不重要,最终转发数据是基于虚拟路由器的Mac地址来转发的

    • HSRP的Hello时间默认是3s,Hold时间是10s。VRRP中Hello包收敛更快是1s,Hold时间是3s

    • HSRP组播地址是224.0.0.2。VRRP组播地址是224.0.0.18

    • HSRP默认是关闭抢占的。VRRP默认是开启抢占的。

    • HSRP可以直接track端口。VRRP不可以直接track端口,但可以track对象。

    • HSRP的Active和Standby都发Hello包。VRRP只有Master发Hello包。

    展开全文
  • 热备份路由选择协议(HSRP)一、HSRP的相关概念1、HSRP的原理1.1、HSRP概述HSRP(Host Standby Routing Protocol,热备份路由选择协议)是Cisco私有的一种协议,它确保了当网络边缘设备或接入链路出现故障时,用户...
  • 华为_防火墙双机热备

    2019-07-09 14:15:46
    防火墙双机热备 双机热备的工作原理: 故障隔离,简单的讲,高可用(热备)就是一种利用故障点转移的方式来保障业务连续性。其业务的恢复不是在原服务器,而是在备用服务器。 华为的双机热备是通过部署两台或多台...
  • 防火墙双机热备

    千次阅读 2018-03-18 22:52:15
    防火墙双机热备1 简介介绍了双机热备的定义和由来。随着移动办公、网上购物、即时通讯、互联网金融、互联网教育等业务蓬勃发展,网络承载的业务越来越多,越来越重要。所以如何保证网络的不间断传输成为网络发展过程...
  • 双机热备系统的方案与软件浅析

    万次阅读 2017-12-17 20:21:49
    一、概述双机热备指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备。双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-...
  • 双机热备

    2011-10-15 22:59:00
    双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式...
  • 防火墙双机热备技术

    万次阅读 2018-05-17 13:15:35
    双机热备技术原理 双机热备技术产生的原因: 传统组网中,只有一台防火墙部署在出口,当防火墙出现故障后,内部网络中所有以防火墙作为默认网关的主机与外部网络之间的通讯中断,通讯可靠性无法保证。 双机热...
  • 华为AC双机热备(双链路热备)

    千次阅读 2018-09-30 15:15:50
    配置双机热备份功能 ( 不建议配置 ) [AC1] hsb-service 0 #创建HSB主备份服务0并进入HSB备份服务视图 [AC1-hsb-service-0] service-ip-port local-ip 10.23.102.1 peer-ip 10.23.102.2 local-data-port 10241 peer...
  • vCenter 双机热备

    2021-05-18 11:55:44
    资料来源:https://www.zhihu.com/pub/book/119650679概念 FT(FauItToIerance,容错)可理解为vSphere环境下虚拟机的双机热备。FT高纟及特性是VMwarevSphere虚拟化架构中一个非常让人激动的功能。使用HA可以实现...
  • 双机热备知识简介 1、 双机热备名词解释  从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下...
  • 双机热备技术双机热备技术产生的原因:传统的组网中,内部用户和外部用户的交互全部通过唯一的一台防火墙,当该防火墙出现故障时,内部网络中所有的主机与外部网络之间的通讯将中断,通讯可靠性无法保证。双机热备...
  • 浅谈双机架构

    2021-01-14 21:34:43
    存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个...
  • 华为防火墙实现双机热备配置详解

    万次阅读 多人点赞 2019-10-26 15:56:22
    一提到防火墙,一般都会想到企业的边界设备,是内网用户与互联网的必经之路。防火墙承载了非常多的功能,比如:安全规则、IPS、文件...一、双机热备工作原理 二、VRRP协议 (1)VRRP协议概述 (2)VRRP的角色 (3)V...
  • 理论+实操:防火墙双机热备

    千次阅读 2020-02-15 00:29:24
    文章目录一:双机热备的工作原理1.1 双机热备概述1.2 VRRP(虚拟路由冗余协议Virtual Router Redundancy Protocol)1.3 VGMP二:双机热备配置2.1 双击热备的备份方式2.2 开启双机热备功能2.3 配置自动备份模式2.4 ...
  • 磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意。原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多价格较...
  • 双机热备,是目前通常所说的active/standby方式,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。当 active服务器出现故障的时候,通过软件诊测(一般是通过心跳诊断)将standby...
  • 通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。 当提供服务的一台出现故障的时候,...keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。 在VRRP中有
  • 负载均衡原理和双机热备

    千次阅读 2019-07-04 11:35:53
    想想那时候我还在不亦乐乎地折腾个人网页,学会安装和使用Linux 没多久 , 服务器端开发也仅限于ASP,像LVS这种负载均衡的概念压根就没有听说过。  编程语言可以学,差距也能弥补,但是这种境界和眼光的差距,简直...
  • 群集和双机热备的概念与区别

    千次阅读 2007-11-15 14:57:00
    应众多网友的要求,本文仅就双机热备的基本概念做一阐释,希望能够起到抛砖引玉的作用。   问:能解释一下什么是双机热备吗?   答:所谓双机热备,就是将中心服务器安装成互为备份的两台服务器,并且在同一时间...
  • 双机热备这一概念包括了广义与狭义两种意义。 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的...
  • 一、何为双机热备? 所谓的双机热备无非就是以7X24小时不中断的为企业提供服务为目的,各种双机热备的技术很多,那么华为使用了这个共有...VRRP(virtual router redundancy protocol,虚拟路由冗余协议),用来解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,527
精华内容 1,010
关键字:

双机冗余的概念