搭建docker内网私服

  categories:linux资料  author:

主要思路:
docker-registry-deploy

1. Docker Registry 说明

关于如何创建和使用本地仓库,其实已经有很多文章介绍了。因为docker技术正处于发展和完善阶段,所以有些文章要么内容已经过时,要么给出了错误的配置,导致无法正常创建仓库。本文记录的是个人完整的搭建过程,docker version为1.1.2。

官方提供了Docker Hub网站来作为一个公开的集中仓库。然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用。

Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。

docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry。官方文档中也给出了建议,直接运行sudo docker run -p 5000:5000 registry命令。这样确实能启动一个registry服务器,但是所有上传的镜像其实都是由docker容器管理,放在了/var/lib/docker/….某个目录下。而且一旦删除容器,镜像也会被删除。因此,我们需要想办法告诉docker容器镜像应该存放在哪里。registry镜像中启动后镜像默认位置是/tmp/registry,因此直接映射这个位置即可,比如到本机的/opt/data/registry目录下。

 

2. 在CentOS上搭建docker私服

2.1 安装docker-registry

方法有多种,直接运行下面的命令:

1
# docker run -d -e SETTINGS_FLAVOR=dev -e
阅读全文

从敏捷开发到敏捷运维DevOps将带来革命

  categories:java资料, linux资料  author:

你听说过DevOps一词,或者听说过敏捷运维这个运动么?人们越来越意识到传统意义上的开发行为和运维行为存在脱节现象,从而导致冲突和低效,因此DevOps应运而生。传统的工作流程中,开发和运维之间存在很多的沟通错位而造成部署上的问题,由此,DevOps理念应运而生。

【51CTO精选译文】如果你对IT管理感兴趣,尤其是对Web运维感兴趣,那么最近一定会注意到“DevOps”这一热词的出现。现在#DevOps标签频繁出现在微博客Twitter上,同时DevOps相关的技术交流聚会也在慢慢增多。

在许多方面,DevOps是一个集合性概念,指的是能够理顺开发和运维之间相互配合关系的任何事物(51CTO编辑注:在英文中,Developer指开发者,Operations指运维,所以DevOps一词本身含有开发+运维的意思)。但是DevOps背后的理念要比上述说法更深远。

什么是DevOps?

人们越来越意识到传统意义上的开发行为和运维行为存在脱节现象,从而导致冲突和低效,因此DevOps应运而生。

正如李·汤普森(Lee Thompson)和安德鲁·谢福尔(Andrew Shafer)所言,在开发和运维之间存在一面“混乱之墙”。相互冲突的动机、流程和工具导致了这面“墙”的存在。

相互冲突的动机、流程和工具导致了这面“墙”的存在
开发与运维之间的“混乱之墙”

以开发为中心的人通常认为,变化会带来回报。企业依靠他们来应对不断变化的需求。因此他们被鼓励尽可能进行变革。

而运维人员则往往视变化为敌人。企业依靠他们维持正常业务运维和实施让企业赚钱的服务。由于变化会影响稳定性和可靠性,运维业务有理由对它说不。我们已经多次听到过如下统计数字:在所有宕机事件中有80%情况是源于自杀式的改变(根据51CTO之前进行的调查,很多时候,仅仅是给系统应用补丁就会造成生产服务器无法正常重启)。

开发人员和运维人员认识世界的方法,以及各自所处的角色,存在根本性的差别。他们都认为自己的做法是正确的。的确,孤立的来看他们都是正确的。

更糟糕的是,开发和运维团队通常处于公司组织架构的不同部分,通常具有不同管理者的和竞争关系,而且通常工作在不同的地点。

开发和运维团队通常处于公司组织架构的不同部分
开发与运维通常工作在不同的地点

让混乱之墙更坚固的还包括开发和运维工具之间的错位。看一下开发者要求和日常使用的常见工具,再看一下系统管理员,你会发现两者存在很大不同,开发人员没有兴趣使用运维人员的工具,反之亦然;而且两部分工具之间也不存在重要的集成。即使在某些工具类型上有一些重叠之处,使用方式也完全不同。

开发者要求和日常使用的常见工具
开发与运维常用工具的不集成

当应用程序变动需要从开发团队推向运维团队时,混乱之墙的存在则将变得更加明显。有人将其称为一个“版本发布(Release)”,有人则称其为一次“部署(deployment)”,但有一件事情是公认的,问题可能会随之而来。下图虽然是一个抽象化场景,但是如果你经历过这一过程,一定会感觉到它的真实性。

版本发布与部署
应用程序变动从开发到运维

开发人员把一个软件版本“扔”给墙对面的运维人员。后者拿到该版本产品后开始准备将其部署。运维人员手动修改由开发者提供的部署脚本或创建自己的脚本。他们还需要修改配置文件来适应与开发环境大不相同的真实生产环境。最完美的情况是,他们重复在此前环境中已完成的工作;而糟糕的情况是,他们将引入或发现新的漏洞。

运维人员然后开始进行他们自认为正确的部署过程。由于开发和运维之间的脚本、配置、过程和环境存在差别,这一部署过程实际上也是首次被执行。当然,期间如果发生一个问题,开发人员会被要求来帮助进行排障。运维人员会说开发团队给的产品存在问题。而开发人员则会回应称该产品在他们的环境下运行良好,因此一定是运维人员在部署的过程中做错了什么。由于配置、文件存储位置和过程的不同,开发人员诊断问题也并非一件易事。

没有一个可靠的方式来把环境回滚到此前已知的正常状态。本来应该一帆风顺的部署过程最后变成一场救火行动,经过反复测试之后才让生产环境恢复到正常状态。

本来应该一帆风顺的部署过程最后变成一场救火行动
本来应该一帆风顺的部署过程最后变成一场救火行动

部署阶段已经非常明显的需要DevOps理念来解决问题,但需要DevOps的绝不仅仅是这一阶段。正如约翰·阿尔斯帕瓦(John Allspaw)所指出的那样,开发和运维之间的协作需求在部署之前就已存在,同时也会在部署之后的长时间之内继续存在。

DevOps所带来的好处

DevOps是一个非常强大的概念,因为它可以在众多不同层面上产生共鸣。

从开发或运维的一线人员的观点来看,DevOps可以让他们从众多烦恼中解脱出来。它虽然不是具有魔力的万灵药,但是如果你能够让DevOps奏效,则会节省大量时间,而且不至于打击自己的士气。显而易见,投入精力将DevOps落到实处,我们应该会更加高效、更加敏捷和减少挫败感。有些人可能会反驳称DevOps是一个遥不可及的目标,但这并非说我们不应该去尝试实现它。

DevOps会节省大量的时间
DevOps会节省大量的时间

对于企业来说,DevOps直接有助于实现两个强大战略性企业品质,“业务敏捷性”和“IT融合”。它们可能不是IT人士所担忧的事情,但是却应该获得掌握财政大权的管理者的注意。

IT融合的一个简单定义是,“企业渴望达到的一个状态,能够高效的使用信息技术来达到企业目标——通常是提高公司业绩或市场竞争力。”

通过从共同企业目标角度出发来校准开发和运维的职责和流程,DevOps有助于实现IT融合。开发和运维人员需要明白,它们仅仅是一个统一业务流程中的一部分。DevOps思想确保个体决策和行为应力求支持和改进这个统一的业务流程,无论你是来自哪一个组织架构。

DevOps有助于实现IT融合
DevOps有助于实现IT融合

业务敏捷性的一个简单定义是,“一个机构以高效、经济的方式迅速适应市场和环境变化的能力。”

当然对于开发人员来说,“敏捷”有专门的含义(参考51CTO开发频道的专题:初探敏捷开发),但目标是非常类似的。敏捷开发方法旨在保持软件开发工作与客户/公司的目标同步,尽管需求不断变化,也可以产生高品质软件。对于多数机构来说,迭代项目管理方法Scrum是敏捷的代名词。

Scrum
Scrum

业务敏捷性承诺,在企业权益集团作出决策和开发者进行响应之间能够紧密互动和快速反馈。看一下一家运转良好的敏捷开发团体的产品,你会看到一个与业务需求保持一致的稳定持续改进。

但是,当你从企业角度回顾一下整个开发-运维周期,敏捷方法的相关优势通常会变得非常模糊。混乱之墙导致了应用程序生命周期的分裂。开发和运维分别按照不同的节奏进行。实际上,产品部署之间的长期间隔使得一个团体的敏捷工作变成了它一直试图避免的瀑布生命周期。当存在混乱之墙时,无论开发团体有多么敏捷,改变企业缓慢和迟钝的特点是极其困难的。

敏捷开发与企业结构的不同步
敏捷的开发与瀑布式企业结构的步调不同

DevOps使得敏捷开发的优势可以体现在机构层面上。通过考虑到快速、反应灵敏但稳定的业务运维,使其能够与开发过程的创新保持同步,DevOps可以做到这一点。

如果你希望在自己的组织内建立一个DevOps项目,务必牢记“IT融合”

阅读全文

Linux下配置ip地址四种方法

  categories:linux资料  author:

来源:http://www.cnblogs.com/adforce/p/3363681.html

linux系统安装完,以后通过命令模式配置网卡IP。
配置文件通常是/etc/sysconfig/network-scripts/ifcfg-interface-name
ifconfig后显示的内容,lo代表loop回路。

一、Ifconfig命令

第一种使用ifconfig命令配置网卡的ip地址。此命令通常用来零时的测试用,计算机启动后,ip地址的配置将自动失效。具体用法如下:
Ifconfig ethx ipaddr netmask x.x.x.x

ethx中的x代表第几快以太网卡,默认第一块为0;ipaddr代表ip地址;x.x.x.x为子网掩码。
例如给网卡eth0配置的ip地址为192.168.1.1 子网掩码为 255.255.255.0 。

如下下图所示:

注意:此方法配置的ip地址后计算机从新启动将会失效。

 

二、neat命令

Neat命令=redhat-config-network 图形下配置ip地址:

双击图下画红线的部分

双击划线部分后出现下图所示:根据要求配置相关信息

双击ok配置完毕。配置完后重启服务,并查看配置ip地址。

注意:此方法配置的ip地址后计算机从新启动仍然有效。

 

三、netconfig命令

输入netconfig后将会出现下图所示,单击yes按钮。

进行相关配置后ok退出。

注意:此方法配置的ip地址后计算机从新启动仍然有效。

 

四、vi  /etc/sysconfig/network-scripts/ifcfg-ethx

配置完以后重启动服务,ip地址就配置好了。其实前面3个的配置方法最终还是改变了/etc/sysconfig/network-scripts/ifcfg-ethx下的配置文件罢了。

 

 

转载:http://nanwangting.blog.51cto.com/608135/200097… 阅读全文

八种最常见Docker开发模式

  categories:linux资料  tags:  author:
Docker已迅速成为本人最喜欢的基础工具之一,以便构建可重复软件产品,从而带来尽可能静 态的服务器环 境。我在本文中将概述我在使用Docker的过程中开始反复出现的几种模式。我不指望它们会带来多少新奇或惊喜,但希望其中一些有用,我也很想听听各位在 使用Docker过程中遇到的模式。

八种最常见Docker开发模式 别说你还不知道

Docker已迅速成为本人最喜欢的基础工具之一,以便构建可重复软件产品,从而带来尽可能静态的服务器环境。

我在本文中将概述我在使用Docker的过程中开始反复出现的几种模式。我不指望它们会带来多少新奇或惊喜,但希望其中一些有用,我也很想听听各位在使用Docker过程中遇到的模式。

我试用Docker的基础是保持在卷中持续的状态,那样Docker容器本身可以随意重建,而不会丢失数据(除非我改动容器状态,而不更新Docker文件(Dockerfile)的状态,而经常重建容器有助于改掉这个坏习惯)。

下面的示例Docker文件都专注于此:构建容器――在这种环境下,容器本身可以随时更换,没必要考虑它。

1. 共享基础容器

Docker 鼓励“继承”,所以这应该并不奇怪――继承是高效使用Docker的一个基本方面,尤其是由于它有助于减少构建新容器所需的时间,因为 没必要那么频繁地重新执行步骤。Docker会试图将中间步骤放入到缓存,它在这方面做得很好――有时太好了,不过要是没有明确注明,也很容易错过共享的 机会。

将我的各种容器迁移到Docker上时明显出现的事情之一是,存在太多的冗余设置。

我为预计部署到任何地方的大多数项目运行单独的容器,至少它需要任何长时间运行的进程,或者需要“标准”程序包集之外的任何特定程序包时,是这样,因而我有好多容器,而程序包迅速变得越来越多。

等到我考虑迁移时,就试图在Docker中运行“一切”(包括我依赖的少数几个桌面应用程序),以便让我的mybase环境完全可以随意使用。

于是我很快开始将我的基本设置提取到基础容器,用于众多用途。下面是我当前的“devbase”Docker文件:

  1. FROM debian:wheezy
  2. RUN apt-get update
  3. RUN apt-get -y install ruby ruby-dev build-essential git
  4. RUN apt-get install -y libopenssl-ruby libxslt-dev libxml2-dev
  5. # 用于调试
阅读全文

win7下DOCKER详细安装教程

  categories:linux资料  author:

windows必须是64位的

1.下载程序包

安装包 https://github.com/boot2docker/windows-installer/releases(这个地址国内下载很慢)

用这个: https://get.daocloud.io/toolbox/

随着Docker的发展如日中天,着手安装使用Docker却成了大家的拦路虎,不过有了Toolbox,再也不用担心Docker的安装与使用了。本文对比于大家所熟知Boot2Docker命令行工具,简单的剖析了Toolbox安装器。

近日,Docker公司发布了Toolbox。Toolbox是一个安装器,目前支持Mac和Windows平台。使用它可以快速地在安装Docker工具集。本文翻译自Docker官方博客。

过去我们总听到有人说,在开发中很难使用入手使用Docker,尤其是你已经根据Compose定义过了你的应用程序,然后接下来要去单独安装Compose的情况。随着Compose、Kitematic以及Boot2Docker的普及,我们意识到我们需要让这些零碎的工具更好的在一起工作。

Toolbox可以安装你在开发中运行Docker时所需要的一切:Docker客户端、Compose(仅Mac需要)、Kitematic、Machine以及VirtualBox。Toolbox使用Machine和VirtualBox在虚拟机中创建了一个引擎来运行容器。在该虚拟机上,你可以使用Docker客户端、Compose以及Kitematic来运行容器。

它取代了Boot2Docker吗?

是的,玩转Docker,我们推荐Toolbox。

尽管Boot2Docker安装程序已经相当的受欢迎,但DockerToolbox是设计用来安装正在不断发展的Docker开发者工具集合,比如Kitematic、Machine、Swarm还有Compose。之前Boot2Docker还安装了一个叫Boot2Docker的命令行工具,以用来管理Docker虚拟机,在Toolbox中它已经被Machine取代了。

然而,在这个引擎下,Machine依然采用了Boot2DockerLinux发行版来运行容器。所不同的是,现在由Machine代替Boot2Docker命令行工具来管理这些容器。

如果你现在正在使用官方Boot2Docker(boot2docker-VM),DockerToolbox会提示你自动迁移到使用DockerMachine的虚拟机上。
 

下载最新版本的:Docker-install.exe即可。
该安装包安装完成后,系统上会多出三个软件:

Oracle VM VirtualBox
Git
Boot2Docker for Windows

以上三个默认安装即可。

2. 设置环境变量

在命令窗口中,输入ls 如果能找到命令说明环境添加正确。

3. 启动DOCKERT

在命令窗口中,切到docker的安装目录下

输入sh:
然后输入start.sh,等待启动


第一次启动中,如果有新版本会更新,时间比较长。

如果第二次启动,就非常快了。

4.

阅读全文

Linux下的ip命令

  categories:linux资料  tags:  author:

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

Net tools vs Iproute2

要安装ip,请点击这里下载iproute2套装工具 。不过,大多数Linux发行版已经预装了iproute2工具。

你也可以使用git命令来下载最新源代码来编译:

  1. $ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git

iproute2 git clone

设置和删除Ip地址

要给你的机器设置一个IP地址,可以使用下列ip命令:

  1. $ sudo ip addr add 192.168.0.193/24 dev wlan0

请注意IP地址要有一个后缀,比如/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0。

在你按照上述方式设置好IP地址后,需要查看是否已经生效。

  1. $ ip addr show wlan0

set ip address

你也可以使用相同的方式来删除IP地址,只需用del代替add。

  1. $ sudo ip addr del 192.168.0.193/24 dev wlan0

delete ip address

列出路由表条目

ip命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。

在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括WIFI、以太网和一个点对点连接。

  1. $ ip
阅读全文

CentOS7配置静态IP地址

  categories:linux资料  author:

参考原文:http://ask.xmodulo.com/configure-static-ip-address-centos7.html
问题:在CentOS 7上,我想要将我其中一个网络接口从DHCP改为静态IP地址配置,如何才能永久为CentOS或RHEL 7上的网络接口分配静态IP地址?

如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网络管理器。

网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活。默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态。

使用下面的命令来验证网络管理器服务的状态:

  1. $ systemctl status NetworkManager.service

运行以下命令来检查受网络管理器管理的网络接口:

  1. $ nmcli dev status

如果某个接口的nmcli的输出结果是“已连接”(如本例中的enp0s3),这就是说该接口受网络管理器管理。你可以轻易地为某个特定接口禁用网络管理器,以便你可以自己为它配置一个静态IP地址。

下面将介绍在CentOS 7上为网络接口配置静态IP地址的两种方式,在例子中我们将对名为enp0s3的网络接口进行配置。

不使用网络管理配置静态IP地址

进入/etc/sysconfig/network-scripts目录,找到该接口的配置文件(ifcfg-enp0s3)。如果没有,请创建一个。

打开配置文件并编辑以下变量:

在上图中,“NM_CONTROLLED=no”表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理。“ONBOOT=yes”告诉我们,系统将在启动时开启该接口。

保存修改并使用以下命令来重启网络服务:

  1. # systemctl restart network.service

现在验证接口是否配置正确:

  1. # ip
阅读全文

虚拟路由器冗余协议VRRP详解

  categories:linux资料  author:

来源:http://www.it165.net/network/html/201303/1026.html

为什么要使用VRRP技术我们知道,为了实现不同子网之间的设备通信,需要配置路由。目前常用的指定路由方法有两种:
第一种是通过路由协议 :RIP、OSPF动态学习
第二种是通过静态路由: 对终端PC机配置静态路由。
这两种路由各有各的优缺点:
第一种路由可以自动寻找最优路径,邻居路由也可以通过学习来获得路由表,但是动态路由占用线路带宽和CPU处理时间。
第二种路由是不需要CPU处理时间同样也不占用线路带宽,但是这个路由需要对终端的PC机进行配置网关来实现,工作量是比较大的。
对于以上的两种路由在现在来说都是广泛应用的。
我们现在只来分析静态路由的缺点,因为VRRP技术就是使用在静态路由上,而不是动态路由上。
对于静态路由来说,对终端PC机配置默认网关。如果作为默认网关的路由器出现故障,所有使用该网关为下一跳的主机的通信是要中断的。如下图所示;

 

在上图中,主机A—D都配置了一个默认的网关:10.1.1.1,网关路由的下一跳指向主机所在网段内的一个路由器RouterA,RouterA将报文发送到外网,但是如果现在RouterA坏掉了,那么所有的主机将无法与其他网段进行通信了。
为了解决以上的问题,我们可以加一个路由器RouterB,如下图所示:

 当RouterA坏掉时,所有的PC机将网关切换到RouterB上的网关。这样就实现了路由器的备份。这个技术就是VRRP技术—虚拟路由器冗余协议
VRRP简介(转发机制)1. VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)将可以承担网关功能的路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任 务,局域网内的主机只需将虚拟路由器配置为缺省网关
2. VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息
3. VRRP协议的实现有VRRPv2和VRRPv3两个版本,VRRPv2于IPv4,VRRPv3基     于IPv6
4. VRRP路由器: 所有运行VRRP协议的路由器就叫做VRRP路由器
5. VRRP备份组: 多台路由器被分到一个组中,在这个组中选举出一台主路由器,其他作为备份路由器。平常时候都是主路由器一个工作,备份路由器空闲,当主路由器故障后,从多台备份路由器中选举出一台替代故障的主路由器工作。这一组中的路由器构成了一个备份组。
如下图所示: 有两个路由器,两个网关,从两个路由器中选举出一个路由器作为主路由器,其他的都是备份路由器,主路由器负责发转发数据报,而备份路由器处于空闲状态,当主路由器出现故障后,备份路由器会成为主路由器,代替主路由器实现转发功能。

6.  虚拟路由器:虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。从备份组外面看备份组中的路由器,感觉组中的所有路由 器就像一个 一样,你可以理解为 
阅读全文

VRRP协议介绍

  categories:linux资料  author:

来源:http://www.linuxidc.com/Linux/2012-12/76886.htm

参考资料: RFC 3768

1. 前言

VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简化了一些功能。

2. 协议说明

2.1 协议

VRRP 协议是为消除在静态缺省路由环境下的缺省路由器单点故障引起的网络失效而设计的主备模式的协议,使得在发生故障而进行设备功能切换时可以不影响内外数据通 信,不需要再修改内部网络的网络参数。VRRP协议需要具有IP地址备份,优先路由选择,减少不必要的路由器间通信等功能。

VRRP协议 将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),而在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话就 是MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等;其他设备不拥 有该IP,状态是BACKUP,除了接收MASTER的VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先 MASTER的网络功能。

配置VRRP协议时需要配置每个路由器的虚拟路由器ID(VRID)和优先权值,使用VRID将路由器进行分 组,具有相同VRID值的路由器为同一个组,VRID是一个0~255的正整数;同一组中的路由器通过使用优先权值来选举MASTER,优先权大者为 MASTER,优先权也是一个0~255的正整数。

VRRP协议使用多播数据来传输VRRP数据,VRRP数据使用特殊的虚拟源MAC地 址发送数据而不是自身网卡的MAC地址,VRRP运行时只有MASTER路由器定时发送VRRP通告信息,表示MASTER工作正常以及虚拟路由器 IP(组),BACKUP只接收VRRP数据,不发送数据,如果一定时间内没有接收到MASTER的通告信息,各BACKUP将宣告自己成为 MASTER,发送通告信息,重新进行MASTER选举状态。

2.2 MASTER选举
如果对外的虚拟路由器IP就是路由器本身配置的IP地址的话,该路由器始终都是MASTER;
否则如果不具备虚拟IP的话,将进行MASTER选举,各路由器都宣告自己是MASTER,发送VRRP通告信息;
如果收到其他机器的发来的通告信息的优先级比自己高,将转回BACKUP状态;
如果优先级相等的话,将比较路由器的实际IP,IP值较大的优先权高;
不过如果对外的虚拟路由器IP就是路由器本身的IP的话,该路由器始终将是MASTER,这时的优先级值为255。

2.3 协议状态机

VRRP协议状态比较简单,就三种状态,初始化,主机,备份机。

VRRP协议介绍

初始化:阅读全文

VRRP概述

  categories:linux资料  author:

来源:互联网

随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的。

通常情况下,内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关(即图1中的路由器RouterA),实现主机与外部网络的通信。当出口网关发生故障时,主机与外部网络的通信就会中断。

配置多个出口网关是提高系统可靠性的常见方法,但局域网内的主机设备通常不支持动态路由协议,如何在多个出口网关之间进行选路是个问题。

VRRP-1

IETF(Internet Engineering Task Force,因特网工程任务组)推出了VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,来解决局域网主机访问外部网络的可靠性问题。

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。

使用VRRP的优势在于:既不需要改变组网情况,也不需要在主机上配置任何动态路由或者路由发现协议,就可以获得更高可靠性的缺省路由。

VRRP协议对应的是RFC3768,该协议仅适用于IPv4。

VRRP的基本概念

以下是与VRRP协议相关的基本概念:

概念

解释

VRRP路由器(VRRP Router运行VRRP的设备,它可能属于一个或多个虚拟路由器。
虚拟路由器(Virtual Router)由VRRP管理的抽象设备,又称为VRRP备份组,被当作一个共享局域网内主机的缺省网关。
它包括了一个虚拟路由器标识符和一组虚拟IP地址。
虚拟IP地址(Virtual IP Address)虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner)如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者。
当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等。
虚拟MAC地址是虚拟路由器根据虚拟路由器ID生成的MAC地址。
一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。
当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
阅读全文


快乐成长 每天进步一点点