TungstenFabric入門寶典丨關(guān)于多集群和多數(shù)據(jù)中心-創(chuàng)新互聯(lián)

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

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。

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



   多集群

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

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

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

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

   路由(Routing)

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

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

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

   安全組(security-group)

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

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

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

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

   DNS

在處理多個集群時,DNS是一個很重要的主題。

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

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

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

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

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

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

在使用Kubernetes時,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中進行設(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,因為這些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也不太困難。

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

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

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

有兩個選項:1.單集群;2.多集群。

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

多集群方法將給操作帶來更多的復(fù)雜性,因為集群都有各自不同的數(shù)據(jù)庫,因此你需要手動設(shè)置一些參數(shù),例如route-target或security-group id。

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

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

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

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

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

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

由于Tungsten Fabric中的Zookeeper / Cassandra當(dāng)前使用Quorum一致性等級,因此當(dāng)主站點關(guā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)

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

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

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

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

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


  ·END·

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


  1. 首次啟動和運行指南

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

  3. 編排器集成

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

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

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

  7. 開始第二天的工作

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

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

  10. 說說L3VPN及EVPN集成

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


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

  • 第一篇: TF主要特點和用例

  •   第二篇: TF怎么運作

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

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

  •   第五篇: vRouter的部署選項

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

  •    第七篇: TF如何編排

  •   第八篇: TF支持API一覽

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

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




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

文章名稱:TungstenFabric入門寶典丨關(guān)于多集群和多數(shù)據(jù)中心-創(chuàng)新互聯(lián)
文章起源:http://muchs.cn/article38/icdsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站收錄、App設(shè)計、商城網(wǎng)站、網(wǎng)頁設(shè)計公司建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)