028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

TungstenFabric入门宝典丨关于多集群和多数据中心-创新互联

Tungsten Fabric入门宝典系列文章 ,来自技术大牛倾囊相授的实践经验,由TF中文社区为您编译呈现,旨在帮助新手深入理解TF的运行、安装、集成、调试等全流程。如果您有相关经验或疑问,欢迎与我们互动,并与社区极客们进一步交流。更多TF技术文章,请点击公号底部按钮>学习>文章合集。

作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。创新互联提供从前期的网站品牌分析策划、网站设计、网站建设、成都网站建设、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。

作者:Tatsuya Naganawa  译者:TF编译组



   多集群

由于在内部使用MPLS-VPN,因此Tungsten Fabric中的virtual-network可以扩展到其它Tungsten Fabric集群。

也就是说,由于它们具有不同的数据库,因此需要在它们之间标记共享资源。

为此,我将描述几个bgp参数的用法。

   路由(Routing)

由于Tungsten Fabric使用L3VPN进行VRF间的路由,因此,如果在VRF之间正确设置了route-target,则它可以对报文进行路由。

注意:如果指定了仅做l3转发,即使在内部VRF的转发中,也会使用L3VPN,因此在该设置中将不使用桥接(bridging)。

   安全组(security-group)

Tungsten Fabric还具有一些扩展的属性来传达安全组ID的内容。

由于此ID也可以手动配置,因此你可以为每个集群的安全组设置相同的ID,从而允许来自该前缀的流量。

注意:据我所知,无法从R5.1分支中的Tungsten Fabric Webui手动配置标签的ID,因此无法在集群之间使用fw-policy。此行为将来可能会更改。

   DNS

在处理多个集群时,DNS是一个很重要的主题。

由于Tungsten Fabric具有类似于OpenStack的默认设置的vDNS实现,因此你可以解析集群中的vmname,并使这些名称可以在外部可用。

因此,至少当使用OpenStack(或vCenter)作为编排器,并且不同的集群具有不同的域名时,它可以直接解析其它集群的名称。

在使用Kubernetes时,Tungsten Fabric将coredns用作名称解析的来源,而不是在其自己的vDNS。这些IP和域名可以在kubeadm设置中修改。




cluster0:

kubeadm init --pod-network-cidr=10.32.0.0/24 --service-cidr=10.96.0.0/24
cluster1:
kubeadm init --pod-network-cidr=10.32.1.0/24 --service-cidr=10.96.1.0/24 --service-dns-domain=cluster1.local

cluster1:
# cat /etc/sysconfig/kubelet 
-KUBELET_EXTRA_ARGS=
+KUBELET_EXTRA_ARGS= "--cluster-dns=10.96.1.10"
# systemctl restart kubelet

注意:在配置完成后,Tungsten Fabric设置也需要更改(在configmap env中进行设置)




cluster0:

  KUBERNETES_POD_SUBNETS: 10.32.0.0/24
  KUBERNETES_IP_FABRIC_SUBNETS: 10.64.0.0/24
  KUBERNETES_SERVICE_SUBNETS: 10.96.0.0/24

cluster1:
  KUBERNETES_POD_SUBNETS: 10.32.1.0/24
  KUBERNETES_IP_FABRIC_SUBNETS: 10.64.1.0/24
  KUBERNETES_SERVICE_SUBNETS: 10.96.1.0/24

设置好coredns后,它就可以解析其它集群的名称了(coredns IP需要泄漏到各自的VRF,因为这些IP必须是可访问的)




kubectl edit -n kube-system configmap coredns


cluster0:
### add these lines to resolve cluster1 names
    cluster1.local: 53 {
         errors
        cache  30
        forward .  10.96.1.10
    }

cluster1:
### add these lines to resolve cluster0 names
    cluster.local: 53 {
         errors
        cache  30
        forward .  10.96.0.10
    }

因此,即使你有几个单独的Tungsten Fabric集群,在它们之间缝合virtual-network也不太困难。

这样做的原因之一,是要节点数量超过了编排器当前支持的数量,但即使像Kubernetes、OpenStack、vCenter这样的编排器已经能支持大量的虚拟机管理程序。

   多数据中心(Multi-DC)

如果流量是跨多个数据中心的,则需要在计划Tungsten Fabric安装时保持格外小心。

有两个选项:1.单集群;2.多集群。

单集群选项更简单而且容易管理——即便数据中心之间的RTT可能是一个问题,这是因为XMPP、RabbitMQ、Cassandra等多种流量都将通过controller(当前并不支持多数据中心的本地支持)

多集群方法将给操作带来更多的复杂性,因为集群都有各自不同的数据库,因此你需要手动设置一些参数,例如route-target或security-group id。

此外,在它们之间实现vMotion也将更加困难。

由于在数据中心之间vCenter需要150ms的RTT(我找不到KVM的相似值),因此尽管必须针对每种特定情况进行仔细规划,仍然有一个经验法则:单集群 < 150 msec RTT < 多集群,。

当计划安装单集群并且数据中心的数量为两个时,还需要注意一件事。

由于Tungsten Fabric中的Zookeeper / Cassandra当前使用Quorum一致性等级,因此当主站点关闭时,第二个站点将无法继续工作(Read和Write访问权限均不可用)。

解决此问题的一种可能选项是,将一致性级别更改为ONE / TWO / THREE,或者LOCAL_ONE / LOCAL_QUORUM,尽管它需要重写源代码。

由于Zookeeper没有这样的knob,所以我知道的唯一方法,是在主站点关闭后更新weight。

当数据中心的数量超过两个时,这将不再是一个问题。


  ·END·

Tungsten Fabric入门宝典系列文章——


  1. 首次启动和运行指南

  2. TF组件的七种“武器”

  3. 编排器集成

  4. 关于安装的那些事(上)

  5. 关于安装的那些事(下)

  6. 主流监控系统工具的集成

  7. 开始第二天的工作

  8. 8个典型故障及排查Tips

  9. 关于集群更新的那些事

  10. 说说L3VPN及EVPN集成

  11. 关于服务链、BGPaaS及其它


 Tungsten Fabric 架构解析 系列文章——




Tungsten Fabric入门宝典丨关于多集群和多数据中心
当前标题:TungstenFabric入门宝典丨关于多集群和多数据中心-创新互联
网站地址:http://www.tsicrk.com/article/icdsp.html

其他资讯

让你的专属顾问为你服务

3.4235s