针对amazon vpc环境的自动路由管理、备份路由和路由故障转移

vpcrouter的Python项目详细描述


#vpc路由器

本地vpc网络的可用性。

当您需要在vpc环境中管理
路由、备份路由和路由故障转移时,它也可以独立于kubernetes使用。

/>
有资格接收CIDR的数据包。从列表中选择
实例并设置路由。vpc路由器持续监测实例运行状况,并在检测到实例故障时立即执行到集合中另一个实例的路由故障转移。


路由可以以不同的方式配置,但最常见的情况是,vpc路由器从存储中进行路由配置(配置文件,将来也是一个kv存储)或通过http请求
。它将确保vpc路由表中的路由在每次检测到路由配置更改时都会根据需要进行更新。


默认情况下,它会将所有路由更新应用于指定vpc中可以找到的所有路由表。


[Romana Project]的loped(http://romana.io)
克服了vpc路由表项的限制(默认为50),这会限制集群的大小。避免这个限制通常需要运行一个覆盖网络,它不提供本地vpc网络的性能和可见性。

有些用户更喜欢运行支持更高级网络策略API的CNI网络提供商。然而,当
集群被跨可用区域(azs)拆分时,大多数cni pod网络需要覆盖,从而阻止ha集群
提供本机vpc网络性能。Romana使用VPC路由器可以跨区域构建CNI POD网络,无需覆盖。

d也可以单独使用。


提供了与不同环境集成的插件。例如,
a[与romana集成的插件](https://github.com/romana/vpcrouter romana plugin)。

健康检查也通过插件实现。这意味着vpc路由器可以直接联系ec2实例来检查它们的运行状况,也可以连接到aws状态和警报信息,或者使用编排系统(如kubernetes)提供的节点状态。在源目录之外运行vpc路由器,或者执行完整的
安装,它可以在vpc之外运行,也可以在集群节点内运行,也可以不在集群节点上运行。

因此,最简单的安装方法是:


pip install vpc router


下载代码后,创建一个虚拟环境,激活它并安装所需的库。然后,您可以使用"vpc router runner.py"助手脚本运行vpc路由器,而无需完全安装:

$git clone git@github.com:paninetworks/vpc router.git
$virtualenv vpc router
$source vpcrouter/bin/activate
$cd vpc router
$pip install-r requirements/deploy.txt
$./vpcrouter-runner.py…..


vpc router in production](deploy.md),包括以下问题:

*执行正确的安装
*在ec2实例上运行的iam权限
*在容器中运行vpc router


任何贡献,错误报告或反馈。请使用我们的
[问题跟踪器](https://github.com/romana/vpc-router/issues)来提交错误或请求
其他功能。

启动时请使用内置http服务器查看内部状态和配置。默认情况下,它监听
`localhost:33289`。向"http://localhost:33290/"发送get请求(使用web浏览器、curl或wget或任何
客户机),以接收json格式的
输出(使用vpc路由器的当前内部配置)。

t)命令行选项。



它看起来像这样:

{
"10.55.16.0/24":["10.33.20.142"],
"10.66.17.0/24":["10.33.20.93","10.33.30.22"]
}


作为此路由的目标/路由器。
vpc路由器从路由的主机集中随机选择一个实例。


或更新路由。


持续监视这些主机的运行状况。如果充当路由器的主机出现故障,如果有可用且正常的替代设备,vpc路由器会立即将路由从
集中切换到不同的主机。


请注意,vpc路由器会控制路由表并删除此类型的任何
项(实例上的接口为ta如果它们不是路由规范的



因此,扩展vpc路由器很容易与各种编排系统集成。[如何编写插件](plugins.md)单独记录在案。


插件可以接受上述格式的路由规范,也可以使用它将其他信息转换为格式正确的路由规范。x,三种不同配置更新模式的插件都包含在vpc路由器源中:

*configfile:继续监视路由规范配置文件中的任何
更改。配置文件应包含与上述格式完全相同的路由规范。
*http:receive updated route specs via http posts.发布的数据应该是
与上面描述的格式完全相同的路由规范。
*fixedconf:通过它,可以在命令行上提供静态配置。它主要用作插件开发人员的一个简单示例。它确实可以工作
,在某些情况下可能有用,但通常不会用于
生产。它将命令行参数转换为所需格式的路由规范。


o编写外部插件,它们位于自己的存储库中。目前有一个例子:

*romana:
[romana插件](https://github.com/romana/vpcrouter-romana-plugin)提供了与[romana项目](http://romana.io/)的无缝集成,以便在没有覆盖的情况下创建kubernetes和openstack集群、just
本机路由网络流量。然后,带有romana插件的vpc路由器允许这些集群跨越多个vpc可用区域,同时
使用本机vpc网络,并且不受vpc的50路限制。romana插件监视romana提供的网络拓扑知识,并将其转换为vpc路由器所需的路由规范。


file-f route-spec.conf-r us-east-1-v vpc-350d6a51


C路由器应该连接。注意:如果vpc路由器在区域内的实例上运行,则可以省略此选项。
*`-v'指定vpc路由器应为其执行路由更新的vpc。
注意:如果vpc路由器在vpc内的实例上运行,则可以省略此选项。

e用于指定路由规范配置文件。它必须在服务器启动时存在。然后,服务器将持续监视此文件的更改。

它利用内置的http服务器来监听新的路由规范:

$vpc route r-m http-r us-east-1-v vpc-350d6a51

cs.
*`-r`指定vpc路由器应连接到的aws区域。注意:如果vpc路由器在区域内的实例上运行,则可以忽略此
*`-v'指定vpc路由器应为其执行路由更新的vpc。
注意:如果vpc路由器在vpc内的实例上运行,则可以忽略此

"URL"。当前的路由规范
可以使用该url的get来检索。


例如:


###模式"romana"

要与[romana project]集成(http://romana.io/),请参阅
[vpc router romana plugin](https://github.com/romana/vpcrouter romana plugin)。

如果
实例不再正常,并且它是路由的当前目标
,则路由将自动更新为指向备用目标,
如果有正常的路由可用。

/>灵活地使用各种信息来确定ec2
路由实例是否正常。默认情况下,它使用'icmpecho'插件,该插件利用icmpecho('ping')请求主动检查
实例的响应性。还提供了一个"tcp"插件,该插件尝试在
指定端口上进行tcp连接尝试。


使用"--health"选项选择运行状况监视器插件,例如:

$vpcrouter--health tcp--tcp_check_port 22--tcp_check_interval 5…

或:

$vpc router--health icmpecho--icmp_check_interval 5…

此插件允许
将多个更简单的运行状况监视插件组合到复杂的或
多层实例运行状况监视中。使用"--health"选项选择"multi"插件。然后使用"--multi_plugins"选项指定应同时使用的简单健康插件列表(列
分隔的健康监视器插件名称列表)。然后,还可以指定这些插件添加的任何其他命令行选项


作为一个示例,让我们将vpc路由器配置为使用"icmpecho"插件(监控间隔为2秒)和"tcp"插件(监控端口80)。


$vpcr外部--运行状况多--多个插件icmpecho:tcp\
--icmp_check_interval 2--tcp_check_port 80…




指定的子插件的st间隔。


否则,它将再次报告它们为失败。

如果在该时间段内没有关于实例的"失败"报告,则该实例将自动再次被视为"正常"。这并不意味着路由正在故障回复到该实例,它只是意味着
该实例有资格再次成为路由的目标。


\todo

[问题跟踪程序](https://github.com/romana/vpc-router/issues)中。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?