【Calico系列】4 数据中心网络简述

本文是 Calico 系列的第四篇文章,上一篇了解了 calico 的组件、架构与原理,这篇学习数据中心的网络设计。本篇的内容为血衫学习文末参考资料后的笔记。

由于网络的水深与个人能力有限,本文不免存在错误之处。如有疑问,请查阅文末参考资料或与我线上/线下讨论。

一、分层网络设计

思科的分层(三层)互连网络模型(hierarchical internetworking model)是工业界设计可靠、可扩展、高性价比的互连网络时广泛采用的模型。

讨论网络设计时,通常根据设备数量将网络分成几类:

  • 小型网络:支持最多 200 个设备
  • 中型网络:支持 200 ~ 1000 个设备
  • 大型网络:支持 1000+ 设备

网络设计随规模和公司需求的不同而不同。例如,小公司的设备数量比较少,因此网络基础 设施就无需像大公司设计的那么复杂。

思科分层网络模型中的三个层:接入层、汇聚层、核心层。

早期网络

早期的网络都是扁平拓扑(flat topology):

img

当更多的设备需要接入网络时,就添加集线器(hub)和交换机(switch)。扁平网络设计 的缺点是很难控制广播流量,或者对特定流量进行过滤。当网络中的设备越来越多时, 响应时间也会越来越慢,最终使得网络不可用。

因此,我们需要一个更好的方案。现在,大部分公司都使用下图所示的分层网络方案:

img

将扁平网络划分成更小、更易管理的组成部分的好处是可以将本地流量限制在本地( local traffic remains local)。只有目的是其他网络的流量才会被传送到更高的层。

一个典型的企业分层局域网(hierarchical LAN)包括三层:

  • 接入层:提供工作组/用户接入网络的功能
  • 汇聚层:提供基于策略的连接功能,控制接入层和核心层的边界
  • 核心层:提供汇聚层交换机之间的高速传输

另一个三层分层网络设计如下图所示,注意其中的每个 building 都是分层网络模型 ,包括了接入层、汇聚层和核心层。

img

注意:设计网络的物理拓扑并没有绝对的规则。虽然很多网络都是基于三层的物理 设备搭建的,但这并不是强制条件。在小一些的网络中,核心层和汇聚层可能会合并为一层,由同一个物理交换机充当,这样网络就变成了两层。这被称为 collapsed core design(塌缩的核心层设计)。

二、传统三层网络架构

一个标准的传统三层的网络结构如下l两张图所示:

img

基于传统的三层架构,基本都是从园区网络设计中复制而来的。

这种架构由核心路由器汇聚路由器接入交换机组成。

随着虚拟化技术的发展,节点虚机vm的数量增多,应用的部署方式越来越分布式,东西向流量( east-west-traffic)越来越大。这些流量需要被高效地处理,并且还要保证低的、可预测的延迟。而虚机互访需要通过层层的上行口,因此三层数据中心架构中的带宽成为了瓶颈。 三层架构的另一个问题是服务器到服务器延迟(server-to-server latency)随着流量路 径的不同而不同

由于传统三层网络架构存在的问题,在2008年一篇文章A scalable, commodity data center network architecture,提出将Clos架构应用在网络架构中。2014年,在Juniper的白皮书中,也提到了Clos架构。

事实已经证明,基于 Clos 网络的 Spine-and-Leaf 架构(Clos network-based Spine-and-Leaf architecture)架构可以提供高带宽、低延迟、非阻塞的服务器到服务器连接。

三、Spine-Leaf 架构

如下图是一个典型的两级 Spine-and-Leaf 拓扑。

img

在以上两级 Clos 架构中,每个低层级的交换机(leaf)都会连接到每个高层级的交换机 (spine),形成一个 full-mesh 拓扑。leaf 层由接入交换机组成,用于连接服务器等 设备。spine 层是网络的骨干(backbone),负责将所有的 leaf 连接起来。 fabric 中的每个 leaf 都会连接到每个 spine,因此任一层中的单交换机故障都不会影响整个网络结构。

如果某个链路被打满了,扩容过程也很直接:添加一个 spine 交换机就可以扩展每个 leaf 的上行链路,增大了 leaf 和 spine 之间的带宽,缓解了链路被打爆的问题。如果接入层 的端口数量成为了瓶颈,那就直接添加一个新的 leaf,然后将其连接到每个 spine 并做相 应的配置即可。这种易于扩展(ease of expansion)的特性优化了 IT 部门扩展网络的过 程。leaf 层的接入端口和上行链路都没有瓶颈时,这个架构就实现了无阻塞(nonblocking)。

在 Spine-and-Leaf 架构中,任意一个服务器到另一个服务器的连接,都会经过相同数量 的设备(除非这两个服务器在同一 leaf 下面),这保证了延迟是可预测的,因为一个包 只需要经过一个 spine 和另一个 leaf 就可以到达目的端。

三、Overlay 网络

现代虚拟化数据中心的网络要加速应用部署和支持 DevOps,必须满足特定的前提 条件。例如,需要支持扩展转发表、扩展网段、L2 segment extension、虚拟设备漂移(mobility)、转发路径优化、共享物理基础设施上的网络虚拟 化和多租户等等。

虽然 overlay 的概念并不是最近才提出的,但因为它可以解决以上提到的问题,因此近几 年这个概念又火了起来。最近专门针对数据中心提出的新的帧封装格式(encapsulation frame format)更是为这个势头添了一把火。这些格式包括:

  • VXLAN:Virtual Extensible LAN
  • NVGRE: Network Virtualization Using Generic Routing Encapsulation
  • TRILL: Transparent Interconnection of Lots of Links
  • LISP: Location/Identifier Separation Protocol

overlay 网络是共享底层网络(underlay network)的节点之间互连形成的虚拟网络,这使得在不修改底层(underlay)网络的情况下,可以部署对网络拓扑有特定要求的应用:

img

overlay 虚拟化带来的好处包括:

  • 优化的设备功能:overlay 网络使得可以根据设备在网络中的位置不同而对设备进行 分类(和定制)。edge 或 leaf 设备可以根据终端状态信息和规模优化它的功能和相关 的协议;core 或 spine 设备可以根据链路状态优化它的功能和协议,以及针对快速收敛 进行优化。
  • fabric 的扩展性和灵活性:overlay 技术使得可以在 overlay 边界设备上进行网络 的扩展。当在 fabric 边界使用 overlay 时,spine 或 core 设备就无 需向自己的转发表中添加终端主机的信息(例如,如果在宿主机内进行 overlay 的封 装和解封装,那 overlay 边界就是在宿主机内部,译者注)。
  • 可重叠的寻址:数据中心中使用的大部分 overlay 技术都支持虚拟网络 ID,用来唯 一地对每个私有网络进行范围限定和识别(scope and identify)。这种限定使得不同租 户的 MAC 和 IP 地址可以重叠(overlapping)。overlay 的封装使得租户地址空间和 underlay 地址空间的管理分开。

四、IP Fabric

IP Fabric指的是在IP网络基础上建立起来的Overlay隧道技术。如下图,基于胖树的Spine+Leaf拓扑结构的IP Fabric组网图 img

在这种组网方式中,任何两台服务器间的通信不超过3台设备,每个Spine和Leaf节点全互连,可以方便地通过扩展Spine节点来实现网络规模的弹性扩展。只要遍历一定数量的交换机,可以在几乎所有数据中心结构体系中的服务器节点之间传输流量,该架构由多条高带宽的直接路径组成,消除了网络瓶颈带来的潜在传输速度下降,从而实现极高的转发效率和低延迟。

根据不同的业务需要,Spine和Leaf之间可以使用IP路由、VXLAN或TRILL等技术。

五、参考资料


【Calico系列】3 Calico的组件、架构与原理

本文是 Calico 系列的第三篇文章,继上一篇了解 BGP 的基本概念,这一篇真正进入 Calico 的笔记。本篇以 Calico 3.4 版本 为基准。

由于网络的水深与个人能力有限,本文不免存在错误之处。如有疑问,请查阅文末参考资料或与我线上/线下讨论。

目录:

  1. Calico架构
  2. Calico 数据路径——路由与iptables

一、Calico架构

img

  • Felix 跑在每个节点上,负责管理node;
  • Orchestrator plugin 适配不同架构的插件;
  • etcd 主要负责网络元数据一致性,确保Calico网络状态的准确性;
  • BGP Client (BIRD) 负责把 Felix 写入Kernel的路由信息 分发到整个 Calico网络;
  • BGP Route Reflector (BIRD) BGP路由反射器,大规模部署时使用,通过一个或者多个BGP Route Reflector来完成集中式的路由分发。

特别地,在 kubernetes 架构中,当 calico 作为策略和网络组件时,实际运行了两类容器:

$ kubectl get po -n kube-system |grep calico

calico-kube-controllers-5f6db94794-cmqs4      1/1       Running   1          74d
calico-node-k92qh                             1/1       Running   1          74d
calico-node-lt7sn                             1/1       Running   1          74d
calico-node-qh596                             1/1       Running   1          74d
calico-node-wt8n9                             1/1       Running   1          74d

在每个节点上运行的calico-node 的pod,pod 内部实际上运行了如下进程:

1579073471763

另外还有一个 kube-controller 的pod:

1579073508360

它们的具体作用后面的文章再做详细介绍.

Felix

Felix 负责最终网络相关的配置,也就是容器网络在 linux 上的配置工作,比如:

  • 更新节点上的路由表项
  • 更新节点上的 iptables 表项

它的主要工作是从 etcd 中读取网络的配置,然后根据配置更新节点的路由和 iptables,felix 的代码在 github projectcalico/felix

Orchestrator Plugin

不同的平台有不同的 plugin,例如 Kubernetes 有 Calico CNI,OpenStack 有 Calico Neutron ML2 mechanism driver,负责calico与各个平台的适配:

  • API 翻译
  • 返回 calico 的网络状态,比如felix探活、标记 endpoints 失败等。

Etcd

Etcd 是一个分布式的键值存储数据库,保存了 calico 网络元数据,用来协调 calico 网络多个节点:

  • 存储
  • 不同组件间交互数据

etcd每个目录保存的数据大致功能如下:

  • /calico/ipam:IP 地址分配管理,保存了节点上分配的各个子网段以及网段中 IP 地址的分配情况
  • /calico/v1:profile 和 policy 的配置信息,节点上运行的容器 endpoint 信息(IP 地址、veth pair interface 的名字等),
  • /calico/bgp:和 BGP 相关的信息,包括 mesh 是否开启,每个节点作为 gateway 通信的 IP 地址,AS number 等

BGP Client (BIRD)

BIRD(BIRD Internet Routing Daemon) 是一个常用的网络路由软件,支持很多路由协议(BGP、RIP、OSPF等),calico 用它在节点之间共享路由信息。

Calico 会在所有跑 Felix 节点部署一个 BGP Client。BGP client 會读取 Felix 在 kernel 中的设定,并将其共享到其他节点。

关于 BIRD 如何配置 BGP 协议,可以参考官方文档

BGP route reflector (BIRD)

全互联模式(full mesh)会造成路由条目过大,无法在大规模集群中部署。使用BGP RR(中心化)的方式交换路由,能够有效降低节点间的连接数。

二、Calico 数据路径——路由与iptables

Calico datapath


【Calico系列】2 BGP入门笔记

本文是 Calico 系列的第二篇文章,在第一篇中对 Calico 官网 Blog 做了个回顾,了解团队和项目的开发情况。这一篇文章了解 BGP 协议的基础,以便更好理解地 Calico。这篇文章记录 BGP 的基本概念、原理和它的基本配置。

由于网络的水深与个人能力有限,本文不免存在错误之处。如有疑问,请查阅文末参考资料或与我线上/线下讨论。

目录:

  1. BGP 基本概念
  2. BGP工作原理
  3. BGP 路由属性
  4. BGP路由选择策略
  5. BGP安全性
  6. 路由反射器(RR)
  7. BGP联盟

一、BGP 基本概念

动态路由协议可以按照工作范围分为IGP以及EGP。

IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换。

BGP则是EGP的一种。边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。

一个概念伴随着N个概念而来。下面来看这几个概念又是什么意思:

  1. AS(Autonomous system):自治系统,在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。

    • 中国电信163 AS号:4134

    • 中国电信CN2 AS号:4809

  2. IGP(Interior Gateway Protocol):内部网关协议,在一个AS内部所使用的一种路由协议。一个AS内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP就是用来管理这些路由。代表的实现有RIP和OSPF。

  3. EGP(Exterior Gateway Protocol):外部网关协议,在多个AS之间使用的一种路由协议,但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。现在已经淘汰,被BGP取而代之。

使用BGP的理由:

  1. BGP能够承载大批量的路由前缀
  2. 支撑MPLS/VPN应用,传递客户VPN路由
  3. 支持多协议的扩展
  4. BGP采用认证和GTSM的方式,保证了网络的安全性。
  5. BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由。
  6. BGP提供了路由聚合和路由衰减功能由于防止路由震荡,有效提高了网络的稳定性。
  7. BGP使用TCP作为其传输层协议(目的端口号179),并支持与BGP与BFD联动、BGP Tracking和BGP GR和NSR,提高了网络的可靠性。
  8. 在邻居数目多、路由量大且大部分邻居具有相同出口的策略的场景下,BGP使用按组打包技术极大的提高了BGP打包发包性能。

BGP 协议特征

  1. BGP使用TCP传输层协议,179端口,BGP的对等体无需直连(MPLS点了个赞👍)。
  2. 存在两种类新的 BGP 对等体关系——EBGP和IBGP。
  3. 对等体关系建立完成后,BGP路由器只发送增量更新或触发更新(不会周期性更新,对链路带宽影响小!)。
  4. BGP具有丰富的路径属性和强大的策略工具
  5. BGP能够承载大批量的路由前缀,用于大规模的网络中。
  6. 目前主要的BGP版本为V4以及MP-BGP。

TCP 连接的窗口是65K字节,也就是说TCP连接允许在没有确认包的情况下,连续发送65K的数据。而其他的路由协议,例如EIGRP和OSPF的窗口只有一个数据包,也就是说前一个数据包收到确认包之后,才会发送下一个数据包。当网络规模巨大时,需要传输的数据也相应变大,这样效率是非常低的。这也是它们不适合大规模网络的原因。而正是由于TCP可以可靠的传输大量数据,且互联网的路由信息是巨大的,TCP被选为BGP的传输层协议,并且BGP适合大规模网络环境。

BGP 分类

BGP按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。

EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。

IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器(RR)和BGP联盟。

BGP 协议报文类型

1578916372518


【Calico系列】1 Calico官网文章列表

前言

Calico 是容器网络的一种解决方案,提供了纯 3 层的网络模型,每个容器都通过 IP 直接通信,中间通过路由转发找到对方。容器所在的节点充当传统的路由器,提供了路由查找的功能。

我计划将 Calico/BGP 相关的内容都过一遍,把这个过程记录下来。本篇是第一篇,对目前为止官网的 blog 做了一些简单的中文备注或吐槽。calico 团队是个挺有趣的团队(笑,也一直在前进。

由于网络的水深与个人能力有限,本文不免存在错误之处。如有疑问,请查阅文末参考资料或与我线上/线下讨论。

官网

http://projectcalico.org/

  1. 为什么选择Calico?

    免费开源,简单,可伸展,安全的云网络 (simplify, scale, and secure)

    1. Scalable, distributed control plane 可分发的控制平面
    2. Policy-driven network security 安全的网络策略
    3. No overlay required 不需要overlay
    4. Pluggable Data Plane 可插拔的数据平面
    5. Integrated with all major cloud platforms 集成云平台
    6. Widely deployed, and proven at scale 可扩展
  2. 功能

    1. 路由
    2. ip管理
    3. 控制平面
    4. 数据平面
    5. 网路策略
    6. 监控
    7. 支持多架构、多公有云

github: https://github.com/projectcalico/calico

blog列表

https://www.projectcalico.org/blog/

重点感兴趣的技术文,我加粗显示。

  1. 2014-06-25 Welcome to Project Calico! 开启新项目,仅支持openstack。

  2. 2014-07-21 Update from the Calico Team – July 21 正在开发calico基于chef的自动化安装,支持centos系Linux,正在定义calico的开发路线图,正在招新。bugfix。

    每两周是一个开发周期,每个开发周期(sprint)都用猫的名字来定义。

  3. 2014-07-22 German Rex is out! 新版本可以加快openstack和calico的安装。

  4. 2014-07-25 Update from the Calico Team – July 25th 新成员加入,正在建立一套框架进行安装测试和calico的功能测试。

  5. 2014-08-04 Introducing Havana Brown! bugfix。

  6. 2014-08-06 Welcome to Red Hat / RPMs available for Calico! 支持redhat,也就是centos系Linux。

  7. 2014-09-16 New Architecture, Updated Roadmap and IPv6 Support 做了未来开发的规划,正在规划calico架构。将Felix分离出来。已经支持ipv6了。

  8. 2014-10-17 Congratulations to the OpenStack community on releasing Juno 恭喜 openstack 某版本发布,汇报进度。(对不起我们鸽了,毕竟正在迁移架构。)

  9. 2014-10-27 New packages and architecture on the way 这次不鸽了,我们已经迁移到新架构了,并准备支持的 openstack 的新版本。但是建议大家等过几天我们推出的新版本。我们下周需要更多的测试,但尽量不影响版本发布。 下周参加openstack峰会。

  10. 2014-11-07 The three P’s – Paris, Packages and Pesto 几个人参加了峰会,剩下的人在忙碌进行测试,修复bug。(流水账)

  11. 2014-11-19 Calico and Docker containers 验证了calico与docker结合的可行性,令人兴奋!但是短期内不打算进一步开发。

  12. 2014-12-03 OpenStack London meetup 活动日常广告。

  13. 2014-12-16 Exploring Juju with Project Calico 利用juju工具安装openstack与calico。

  14. 2014-12-19 Updating our Docker prototype to work on GCE 为 gce 的虚机和容器测试calico,讲了一些难点和思路。

  15. 2015-01-12 Why Calico? 技术文!这篇很有看头,可以更好地理解calico为何选择三层协议进行互联。

  16. 2015-01-15 New packages and an award 新版本0.10,得了一个杂志的奖项。

  17. 2015-01-23 Obtaining External Connectivity in OpenStack 在openstack架构中,calico如何做到外部访问内部。

  18. 2015-02-03 Why BGP? 技术文!介绍calico为何选择bgp协议。

    任何网络,特别是大型网络,都有两个不同的路由问题需要处理:

    1)发现网络的路由器间拓扑

    2)发现网络中或外部连接到网络的endpoint

    Calico的设计哲学是使用互联网工具和技术来扩展网络结构。基于VM的云可以托管成千上万的计算服务器,容器云可能会将端点计数增加一两个数量级,BGP是唯一可行的选择。在Calico设计中,这相当于数万个路由器,甚至数百万条路由或端点。BGP路由反射是Calico体系结构的关键部分。

    • 简单
    • 行业当前的最佳实践
    • 唯一可以充分扩展的协议
  19. 2015-02-03 Using Ethernet as the interconnect fabric for a Calico installation 技术文!基于以太网的calico网络架构设计

    在大多数云网络基础架构中,网络边缘是机架柜顶交换机(ToR)。ToR下的计算服务器只是将流量封装起来并将其发送到ToR。没有 可见的 (到互连结构)聚合发生在计算服务器上。

    Calico 将IP 推到了边缘,但是在Calico网络中,该边缘是计算服务器本身。

  20. 2015-02-03 See Project Calico in Action at #MWC15 活动日常广告。

  21. 2015-03-11 CoreOS London Meetup report 活动日常广告。

  22. 2015-03-16 Calico at the Docker Edinburgh meetup 活动日常广告。

  23. 2015-03-23 Calico at Docker Edinburgh 活动日常广告。

  24. 2015-03-26 Calico Introduction at FOSDEM 活动日常广告。

  25. 2015-03-31 Technical note on IP fabrics published 技术文!基于IP的calico网络架构设计

    一些相关问题:

    • Calico网络中路由表的大小,与交换机中的转发表大小的比较
    • 确保适当的自治系统边,界并确保这些自治系统的连续性
    • 确保路由通告的下一跳正确
  26. 2015-04-02 Project Calico comes to New York and does a (mini) meetup marathon 活动日常广告。

  27. 2015-04-10 Moving Calico to a distributed data store using etcd 改架构啦,把存储换成etcd。

  28. 2015-04-16 IPv6, DDoS and Project Calico 介绍calico如何解决空地址攻击问题。由于calico路由器路由表中均具有完整且准确的端点列表网络,calico只使用最长匹配,不存在的请求就放到黑洞路由中,静默丢弃。

  29. 2015-04-20 Calico version 0.16 released 版本升级,主要是换了etcd存储。

  30. 2015-04-27 Project Calico and Clocker 企划联动广告。

  31. 2015-05-07 Project Calico at the Docker London May meetup 活动日常广告。

  32. 2015-05-12 Calico at Docker Randstad 活动日常广告。

  33. 2015-05-14 Using etcd for elections 流水账说明。

  34. 2015-05-26 Fueling Mirantis OpenStack with Calico 版本联动广告。openstack。

  35. 2015-06-02 A better future for securing micro-services 活动日常广告。开始见到 kubernetes 了。

  36. 2015-06-21 Seamless OpenStack and Docker networking using Apache Brooklyn and Project Calico 与brooklyn 和 openstack 的联动广告。

  37. 2015-06-22 Calico adds simple, highly efficient networking with fine grained security policy to Docker 1.7 release 与 docker 联动!

  38. 2015-06-25 The Sharp Edges of Gevent 额,不感兴趣,与calico也没有关系。

  39. 2015-07-09 Calico and containers are flip sides of the same coin 科普文,docker 是未来趋势。

  40. 2015-07-13 When you view a scale-out network through a 1990’s enterprise lens…. 技术文!雄文。我目前还看不太懂。

  41. 2015-07-16 Calico networking for Kubernetes 为k8s 1.0 打造的第一个版本。

  42. 2015-07-17 Its obvious, Project Calico needs to communicate better 技术文!对某篇评论calico文章的的回应。涉及网络知识点较多且深,目前理解起来有困难。

  43. 2015-08-04 Calico and Weave Scope 非常有趣的项目,可视化排查故障。目前还在研究初期。

  44. 2015-08-13 Calico Network Policy Comes to Kubernetes 可以在k8s上运行网络策略,而不必使用calico网络的特性。

  45. 2015-08-14 Emerald City, here we come! 活动日常广告。

  46. 2015-08-14 Announcing Calico v1.0 1.0版本!

    拥有以下特性:

    • 针对VM和容器的虚拟化第3层网络解决方案。
    • 与 OpenStack Neutron 完全可部署的集成,支持多个Neutron服务器和API线程,以及VM的实时迁移。
    • 与容器管理和编排系统(例如Docker,Kubernetes等)的概念验证级别集成。
    • 支持IPv4和IPv6工作负载。
    • 通过白名单的灵活安全策略,将允许的流量集成到OpenStack的已配置安全组中。
    • 控制平面正常重启而不会影响数据平面–您可以重启Calico代理,Neutron插件和BGP客户端,而不会影响工作负载之间的数据流。

    达到了以下测试情况:

    • 基于Calico的OpenStack集群,其中包含10,000个VM,可跨500个计算主机运行。
    • Calico的容器部署可在500台主机上运行多达50,000个容器,且设置速率每秒超过20个容器。
    • 在10 Gb网络上的吞吐量测试显示,Calico网络VM的吞吐量接近裸机速度的100%,性能是任何其他虚拟网络技术都无法比拟的。
  47. 2015-08-20 Calico Q&A with InfoQ 活动日常广告。

  48. 2015-08-31 Mesos Networking leaps forward with Calico 活动日常广告。

  49. 2015-09-07 Calico dataplane performance calico的数据平面测试结果!

  50. 2015-09-09 Calico now works with vanilla OpenStack 版本联动广告。

  51. 2015-10-07 Calico comes to Dublin 活动日常广告。

  52. 2015-10-15 OpenStack Liberty – now with added Calico 版本联动广告。

  53. 2015-10-22 Tokyo here we come and a v1.2 sneak peek 活动日常广告,新版本预热。

  54. 2015-10-23 Docker 1.9 includes network plugin support and Calico is ready! 支持 docker 的网络插件新特性。

  55. 2015-10-26 Announcing Calico 1.2! 1.2版本!

  56. 2015-11-06 Securing Namespaces and Services in Kubernetes 对namespace和service进行访问控制,可以把service暴露出namespace。

  57. 2015-11-12 Barcelona, here we come! 活动日常广告。

  58. 2015-11-25 A Little Cat in the Big Apple 活动日常广告。

  59. 2015-12-03 Calico Networking for Tectonic 企划联动广告。支持 coreos 的企业级k8s Tectonic。今天已经改名了,叫 red hat openshift。

  60. 2015-12-15 Packet announces beta support for Project Calico 企划联动广告。

  61. 2016-01-22 Announcing 1.0 Calico CNI integration for Kubernetes 针对 Kubernetes 的 Calico 插件1.0里程碑版本。与CNI集成。

  62. 2016-02-04 A rocket reaches orbit, Project Calico is right there with it 与 Redhat的py交易,宣传rkt,互相站台。

  63. 2016-02-11 A Sneak Peek at Kubernetes Policy 科普文,Calico如何将网络策略引入Kubernetes。

  64. 2016-03-09 Announcing Calico 1.3.0 1.3版本!大规模场景下的性能和占用率优化,测试包括

    • 1000个主机中的100,000个容器,每秒的启动速度约为165个容器。该测试包括验证每个容器中的网络连接性,并强加“预定的”分布式安全规则。
    • 跨 500 个 OpenStack 主机的 10,000 个VM,每秒6个VM的变动率。
  65. 2016-04-19 DC/OS: Data center automation with a side of Calico secure networking 企划联动广告。数据中心操作系统。

  66. 2016-04-19 Calico visits the land of the Longhorns 活动日常广告。

  67. 2016-05-05 Calico-DC/OS Demo: Security, Speed, and No More Port Forwarding! 科普文,Calico-DC/OS Demo。

  68. 2016-05-09 Containers, Cloud and Currywurst: CoreOS Fest 2016 活动日常广告。

  69. 2016-05-09 Flannels, Canals and Tigers, Oh My! — Big News in the Land of Project Calico 新特性预研广告。

  70. 2016-06-01 Canal brings fine-grained policy to DC/OS and Apache Mesos via CNI canal 发布预热。

  71. 2016-07-27 Mesos 1.0 – Now with Calico CNI 企划联动广告。mesos 1.0 发布.

  72. 2016-10-31 Let’s Talk Policy (for a Change) 特性宣传广告。网络策略。

  73. 2016-11-03 See you in Seattle 活动日常广告。

  74. 2016-11-07 Celebrating two Milestone Releases 2.0 beta版本宣传预热!

  75. 2016-11-08 Primetime Kubernetes with Kismatic + Calico 企划联动广告。

  76. 2016-11-09 And The Winner Is… Project Calico 客户案例广告。

  77. 2016-11-09 Click, Deploy, Secure: Kubernetes the Easy Way 客户案例广告。

  78. 2016-11-28 The Results are In… for the 2016 Calico User Survey 用户调查。

    虚拟网络解决方案的前5个最重要的因素是:

    • 可靠性/简单性
    • 数据平面性能
    • 易于故障排除
    • 可扩展性/控制平面性能
    • 微细分/细粒度的安全策略

    calico的排名都不错。

  79. 2016-11-29 Turbo-charged Calico 客户案例广告,偏技术,实现思路很巧,使用了DPDK 。 用加速的用户空间数据平面替换了Calico默认使用的标准Linux内核数据平面。

  80. 2016-12-22 A Christmas Present from the Team… Calico 2.0! 2.0 版本发布!新特性

    • 一个新的基于资源的UX模型(类似于Kubernetes的习惯用法)
    • 重大的性能改进
    • 简化Kubernetes安装
    • 新的数据平面驱动程序API(实验性)
    • 增加对使用Kubernetes本身作为数据存储的支持,消除了对etcd的需求。
  81. 2017-01-03 Calico launches into Gravitational’s orbit 客户案例广告。

  82. 2017-03-28 New Series: Cloud Native, Microservices, Security, & Scale 演讲文!云原生系列: 微服务,安全性和规模

  83. 2017-02-24 Webinar: Simplify & Secure Your OpenShift Network 企划联动广告。OpenShift。

  84. 2017-03-01 New AWS Quick Start Features Project Calico as Default Networking Solution 企划联动广告。AWS。

  85. 2017-03-21 Project Calico 2.1 Released! 2.1 版本发布!新特性

    • IP自动检测
    • IP-in-IP模式中用于流量处理
    • … …
    • Felix和calico / node容器完全用Go编写,性能和占用率优化!
  86. 2017-03-28 From Zero to Azure: Network Policy Comes to ACS Engine 企划联动广告。Azure。

  87. 2017-04-04 Cloud Native Series: Monolithic Enterprise and Modern Needs 演讲文!云原生系列:整体企业和现代需求

  88. 2017-04-11 KubeCon Keynote: Around the (Cloud Native) World in 323 Days KubeCon主题演讲

  89. 2017-04-13 DockerCon 2017: Hot Dogs, Talks, and Kitties 活动日常广告。

  90. 2017-04-25 1,000 Community Slack Users!!! 自吹广告。

  91. 2017-04-27 Cloud Native Series: What is Cloud Native 演讲文!云原生系列:什么是Cloud Native。

  92. 2017-05-02 Join Karthik at OpenStack Summit Boston 活动日常广告。

  93. 2017-05-02 Project Calico 2.2 Released! 2.2 版本发布!新特性

    • 改进GoBGP支持
    • CNI版本更新
    • KDD(Kubernetes数据存储驱动程序)路由
    • BIRD 1.6.3的BGP多路径支持BIRD 1.6.3
    • Felix性能和占用率改进
  94. 2017-05-12 3 Takeaways on the Future of OpenStack Networking from the Boston Summit 活动日常广告。(可以看出来calico现在在战略上k8s与openstack并驾齐驱了)

  95. 2017-05-17 Video: Common Networking Operations Across Kubernetes and OpenStack with Calico 自吹广告,但还不错。使用Calico跨Kubernetes和OpenStack进行通用网络操作

  96. 2017-05-24 Network Policy and Istio: Deep Dive 新技术预热,Istio。

  97. 2017-05-24 Welcoming Istio to the Kubernetes networking community 企划联动广告。Istio。

  98. 2017-06-08 How Giant Swarm uses Calico to enable multi-tenant Kubernetes 企划联动广告。Swarm。

  99. 2017-06-15 Cloud Native Series: What are Microservices 什么是微服务。

  100. 2017-06-23 Project Calico 2.3 Released! 2.3 版本发布!新特性

    • 显着的性能改
    • v1 NetworkPolicy API支持
    • 引入Typha –以及针对KDD模式的更大规模
  101. 2017-06-26 The New NetworkPolicy API in Kubernetes 1.7 上下游版本协同。

  102. 2017-07-13 Using Network Policy in concert with Istio 企划联动广告。Istio。

  103. 2017-07-18 Using Network Policy in Concert with Istio Part 2 企划联动广告。Istio。

  104. 2017-07-25 Using Network Policy in Concert with Istio Part 3 企划联动广告。Istio。

  105. 2017-08-08 Project Calico 2.4 Released!!! 2.4 版本发布!新特性

    • Felix和Typha现在支持Kubernetes 健康检查
    • DNAT之前的策略
    • 使用calicoctl命令行工具配置bgp
    • … …
  106. 2017-08-14 Calico: Shifting into top gear with OpenShift! 企划联动广告。openshift。

  107. 2017-08-31 From Beta to Stable: Evolution of the NetworkPolicy API calico 在 k8s 网络策略的更改。

  108. **2017-09-12 Revealing the hidden host protection superpowers of Felix, the Calico secret agent 技术文!Calico 保护主机Endpoints **

  109. 2017-09-28Breaking Down the Boxes: Containers 科普文,容器。

  110. 2017-09-28 Project Calico 2.6 Released!!! 2.6 版本发布!新特性

    • 支持Kubernetes 1.8 NetworkPolicy ipBlock和出口规则
    • kube-policy-controller现已更名为kube-controllers
    • 稳定性增强功能
  111. 2017-10-26 Enable IPv6 on Kubernetes with Project Calico 操作文,k8s ipv6。

  112. 2017-11-30 Grow Your Skills with Instructor Led Training 培训广告。

  113. 2017-12-04 Introducing: Application Layer Policy 新特性,Calico的应用程序层策略。

  114. 2018-02-22 Announcing Calico v3.0 版本发布!从3.0版本开始,接下来会有一系列和容器紧密相关的更新,非常令人激动。

  115. 2018-04-10 Announcing Calico v3.1 版本发布!开始支持ipvs!

  116. 2018-08-14 Announcing Calico v3.2 版本发布!激动:正式支持ipvs!

  117. 2018-10-24 What’s new in Calico v3.3 版本发布!激动:支持路由反射器!

    • 集群内路由反射器
    • 集群内路由反射器使用标签的BGP对等配置
    • IPAM增强
    • 在网络策略中支持SCTP
  118. 2018-11-05 Calico IPAM: Explained and Enhanced 操作文!ipam操作

  119. 2018-11-13 In-cluster Route Reflection 技术文!calico的路由反射器

  120. 2018-12-10 What’s new in Calico v3.4 版本发布!激动:通过 BGP 宣告 Kubernetes service!

  121. 2019-01-14 Kubernetes Service IP Route Advertisement 操作文!Kubernetes service 路由宣告!

  122. 2019-01-28 What’s new in Calico 3.5 版本发布!激动:基于拓扑的IP地址分配!

  123. 2019-03-11 What’s new in Calico v3.6 版本发布!

  124. 2019-04-17 Comparing kube-proxy modes: iptables or IPVS? iptables或IPVS 模式讨论

  125. 2019-04-26 When Linux conntrack is no longer your friend 技术文!可以使用Calico网络策略有选择地绕过conntrack,避免不划算的开销,同时仍然加强网络安全性。

  126. 2019-05-01 What’s new in Calico v3.7 版本发布!支持vxlan,引入了XDP优化,支持 eBPF。

  127. 2019-06-03 Introducing XDP-optimized denial-of-service mitigation 技术文!Calico的doNotTrack策略通过在Linux数据包处理管道中尽早丢弃流量来帮助缓解DoS攻击。

  128. 2019-06-13 Tigera adds eBPF support to Calico 自吹广告。

  129. 2019-07-09 What’s new in Calico v3.8 版本发布!IPAM利用率报告!

  130. 2019-10-03 What’s new in Calico v3.9 版本发布!跨子网VXLAN封装,实时从flannel到calico的迁移。

  131. 2019-10-11 Everything you need to know about Kubernetes pod networking on AWS 企划联动广告。aws。

  132. 2019-11-04 What’s new in Calico v3.10 版本发布!激动:引入 service ExternalIP 的 BGP通告! namespaceSelector 支持多个选择器,calicoctl支持patch 命令。

  133. 2019-12-11 Live Migration from Flannel to Calico 操作文,不停机从flannel更换为calico。

  134. 2019-12-30 What’s new in Calico v3.11 版本发布!支持双栈Pod IP!


nginx 启用目录索引,显示文件列表

在nginx中,如果特定目录中没有index.html 文件,则默认会返回 404 Not Found 的错误。

但是,Nginx 自动索引模块提供了一种自动生成列表的方法,添加自动索引非常容易,使用 autoindex on 即可。

server {
        listen   80;
        ... ...
        
        location /somedir {
           autoindex on;
        }
}

除了简单地使用自动索引打开或关闭之外,还可以对其做其他的配置,包括:

  • autoindex_exact_size; 显示输出的确切文件大小,还是最接近的KB,MB或GB。有2个选项:on/off。
  • autoindex_format; 该指令指定Nginx索引列表应以什么格式输出。该指令有4个选项:html/xml/json/jsonp。
  • autoindex_localtime; 该指令指定目录列表的时间应该输出为本地时间还是UTC。该指令有2个选项:on/off。

使用这几个配置后配置内容类似于如下内容:

location /somedirectory/ {
    autoindex on;
    autoindex_exact_size off;
    autoindex_format html;
    autoindex_localtime on;
}

cron 每五分钟运行

如下,使用系统默认crontab,在头一个*后添/5即可。

*/5 * * * * /var/local/cron/every_five_minute.sh >> /var/local/log/cron/every_five_minute.log 2>&1 

Nginx 日志按天分割

http {
  log_format default_format '$remote_addr - $remote_user [$time_iso8601] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
      
      
      server {
          listen 443 ssl;
          ... ...
          if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
            set $tttt $1;
          }
          
          access_log /log/blog_access_$tttt.log;
      }
}

1 2 3 4 5 6 91 92 93 94 95