溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Tungsten Fabric入門寶典丨關(guān)于多集群和多數(shù)據(jù)中心

發(fā)布時(shí)間:2020-08-15 20:28:50 來源:ITPUB博客 閱讀:269 作者:TF中文社區(qū) 欄目:互聯(lián)網(wǎng)科技

Tungsten Fabric入門寶典系列文章 ,來自技術(shù)大牛傾囊相授的實(shí)踐經(jīng)驗(yàn),由TF中文社區(qū)為您編譯呈現(xiàn),旨在幫助新手深入理解TF的運(yùn)行、安裝、集成、調(diào)試等全流程。如果您有相關(guān)經(jīng)驗(yàn)或疑問,歡迎與我們互動(dòng),并與社區(qū)極客們進(jìn)一步交流。更多TF技術(shù)文章,請點(diǎn)擊公號(hào)底部按鈕>學(xué)習(xí)>文章合集。

作者:Tatsuya Naganawa  譯者:TF編譯組



   多集群

由于在內(nèi)部使用MPLS-VPN,因此Tungsten Fabric中的virtual-network可以擴(kuò)展到其它Tungsten Fabric集群。

  • 這可能令人有點(diǎn)驚訝,但據(jù)我所知,Neutron ML2插件或其它某些CNI不支持此設(shè)置

也就是說,由于它們具有不同的數(shù)據(jù)庫,因此需要在它們之間標(biāo)記共享資源。

為此,我將描述幾個(gè)bgp參數(shù)的用法。

   路由(Routing)

由于Tungsten Fabric使用L3VPN進(jìn)行VRF間的路由,因此,如果在VRF之間正確設(shè)置了route-target,則它可以對報(bào)文進(jìn)行路由。

  • 由于不能在多個(gè)集群之間使用network-policy / logical-router,因此需要在每個(gè)virtual-network上直接配置route-target。

注意:如果指定了僅做l3轉(zhuǎn)發(fā),即使在內(nèi)部VRF的轉(zhuǎn)發(fā)中,也會(huì)使用L3VPN,因此在該設(shè)置中將不使用橋接(bridging)。

   安全組(security-group)

Tungsten Fabric還具有一些擴(kuò)展的屬性來傳達(dá)安全組ID的內(nèi)容。

  • https://github.com/Juniper/contrail-controller/wiki/BGP-Extended-Communities

由于此ID也可以手動(dòng)配置,因此你可以為每個(gè)集群的安全組設(shè)置相同的ID,從而允許來自該前綴的流量。

注意:據(jù)我所知,無法從R5.1分支中的Tungsten Fabric Webui手動(dòng)配置標(biāo)簽的ID,因此無法在集群之間使用fw-policy。此行為將來可能會(huì)更改。

   DNS

在處理多個(gè)集群時(shí),DNS是一個(gè)很重要的主題。

由于Tungsten Fabric具有類似于OpenStack的默認(rèn)設(shè)置的vDNS實(shí)現(xiàn),因此你可以解析集群中的vmname,并使這些名稱可以在外部可用。

  • https://github.com/Juniper/contrail-controller/wiki/DNS-and-IPAM

  • Controller節(jié)點(diǎn)有一個(gè)contrail-named進(jìn)程,用于響應(yīng)外部DNS查詢

  • 要啟用此功能,需要從Tungsten Fabric Webui中選擇Configure > DNS > DNS Server > (create) > External Access

因此,至少當(dāng)使用OpenStack(或vCenter)作為編排器,并且不同的集群具有不同的域名時(shí),它可以直接解析其它集群的名稱。

  • 上游DNS轉(zhuǎn)發(fā)器需要能夠解析所有名稱

在使用Kubernetes時(shí),Tungsten Fabric將coredns用作名稱解析的來源,而不是在其自己的vDNS。這些IP和域名可以在kubeadm設(shè)置中修改。


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設(shè)置也需要更改(在configmap env中進(jìn)行設(shè)置)


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

設(shè)置好coredns后,它就可以解析其它集群的名稱了(coredns IP需要泄漏到各自的VRF,因?yàn)檫@些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
    }

因此,即使你有幾個(gè)單獨(dú)的Tungsten Fabric集群,在它們之間縫合virtual-network也不太困難。

這樣做的原因之一,是要節(jié)點(diǎn)數(shù)量超過了編排器當(dāng)前支持的數(shù)量,但即使像Kubernetes、OpenStack、vCenter這樣的編排器已經(jīng)能支持大量的虛擬機(jī)管理程序。

   多數(shù)據(jù)中心(Multi-DC)

如果流量是跨多個(gè)數(shù)據(jù)中心的,則需要在計(jì)劃Tungsten Fabric安裝時(shí)保持格外小心。

有兩個(gè)選項(xiàng):1.單集群;2.多集群。

單集群選項(xiàng)更簡單而且容易管理——即便數(shù)據(jù)中心之間的RTT可能是一個(gè)問題,這是因?yàn)閄MPP、RabbitMQ、Cassandra等多種流量都將通過controller(當(dāng)前并不支持多數(shù)據(jù)中心的本地支持)

多集群方法將給操作帶來更多的復(fù)雜性,因?yàn)榧憾加懈髯圆煌臄?shù)據(jù)庫,因此你需要手動(dòng)設(shè)置一些參數(shù),例如route-target或security-group id。

此外,在它們之間實(shí)現(xiàn)vMotion也將更加困難。

  • 即便使用跨vCenter vMotion功能,由于新的vCenter和新的Tungsten Fabric集群將創(chuàng)建一個(gè)新的端口,因此它也將使用不同于原始端口的固定IP。

  • Nova目前不支持跨OpenStack實(shí)時(shí)遷移,因此如果使用OpenStack,則無法在它們之間進(jìn)行實(shí)時(shí)遷移

由于在數(shù)據(jù)中心之間vCenter需要150ms的RTT(我找不到KVM的相似值),因此盡管必須針對每種特定情況進(jìn)行仔細(xì)規(guī)劃,仍然有一個(gè)經(jīng)驗(yàn)法則:單集群 < 150 msec RTT < 多集群,。

  • https://kb.vmware.com/s/article/2106949

當(dāng)計(jì)劃安裝單集群并且數(shù)據(jù)中心的數(shù)量為兩個(gè)時(shí),還需要注意一件事。

由于Tungsten Fabric中的Zookeeper / Cassandra當(dāng)前使用Quorum一致性等級(jí),因此當(dāng)主站點(diǎn)關(guān)閉時(shí),第二個(gè)站點(diǎn)將無法繼續(xù)工作(Read和Write訪問權(quán)限均不可用)。

  • https://github.com/Juniper/contrail-controller/blob/master/src/config/common/vnc_cassandra.py#L659  

    (使用config-api, schema-transformer, svc-monitor, device-manager)

  • https://github.com/Juniper/contrail-common/blob/master/config-client-mgr/config_cassandra_client.cc#L458 

    (使用control, dns)

解決此問題的一種可能選項(xiàng)是,將一致性級(jí)別更改為ONE / TWO / THREE,或者LOCAL_ONE / LOCAL_QUORUM,盡管它需要重寫源代碼。

由于Zookeeper沒有這樣的knob,所以我知道的唯一方法,是在主站點(diǎn)關(guān)閉后更新weight。

  • https://stackoverflow.com/questions/32189618/hierarchical-quorums-in-zookeeper

  • 即使Zookeeper暫時(shí)無法使用,大多數(shù)組件仍繼續(xù)工作,盡管它用于HA的組件停止工作了(schema-transformer, svc-monitor, kube-manager, vcenter-plugin, ...)。

當(dāng)數(shù)據(jù)中心的數(shù)量超過兩個(gè)時(shí),這將不再是一個(gè)問題。


  ·END·

Tungsten Fabric入門寶典系列文章——


  1. 首次啟動(dòng)和運(yùn)行指南

  2. TF組件的七種“武器”

  3. 編排器集成

  4. 關(guān)于安裝的那些事(上)

  5. 關(guān)于安裝的那些事(下)

  6. 主流監(jiān)控系統(tǒng)工具的集成

  7. 開始第二天的工作

  8. 8個(gè)典型故障及排查Tips

  9. 關(guān)于集群更新的那些事

  10. 說說L3VPN及EVPN集成

  11. 關(guān)于服務(wù)鏈、BGPaaS及其它


 Tungsten Fabric 架構(gòu)解析 系列文章——


  • 第一篇: TF主要特點(diǎn)和用例

  •   第二篇: TF怎么運(yùn)作

  •    第三篇:詳解vRouter體系結(jié)構(gòu)

  •    第四篇: TF的服務(wù)鏈

  •   第五篇: vRouter的部署選項(xiàng)

  •    第六篇: TF如何收集、分析、部署?

  •    第七篇: TF如何編排

  •   第八篇: TF支持API一覽

  •   第九篇: TF如何連接到物理網(wǎng)絡(luò)

  •   第十篇: TF基于應(yīng)用程序的安全策略




Tungsten Fabric入門寶典丨關(guān)于多集群和多數(shù)據(jù)中心
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI