1. 基于Librados的流量治理方案

        共 974字,需瀏覽 2分鐘

         ·

        2021-04-30 17:50

        基于Librados的流量治理方案

        1 需求背景&現(xiàn)狀

        需要自己實現(xiàn)一套類似RGW的對象存儲服務(wù),解耦元數(shù)據(jù)存儲到獨立的數(shù)據(jù)庫服務(wù)(如TiDB),同時提供跨Ceph集群的數(shù)據(jù)讀寫能力,實現(xiàn)橫向擴(kuò)展和跨集群級別的容災(zāi)。

        TCP長連接數(shù)

        每個LibRados客戶端會話都會與對應(yīng)的ceph集群多個服務(wù)角色建立TCP連接,而且目前這個TCP是長連接,無法進(jìn)行Keep-alive一類的設(shè)置。
        以寫入一個對象數(shù)據(jù)到Ceph集群為例,client會先和mgr和mon建立通信,獲取對應(yīng)的osd/pg map相關(guān)記錄,之后根據(jù)拿到的最新map記錄,使用crush算法計算出最終需要進(jìn)行數(shù)據(jù)I/O交互的主OSD,最后再與對應(yīng)的主OSD進(jìn)行通信。這里有個關(guān)鍵點就是OSD一旦與客戶端建立通信連接以后,這個TCP連接會一直保持,因此隨著集群內(nèi)其他OSD與客戶端不斷進(jìn)行數(shù)據(jù)交互,這樣的客戶端到OSD的TCP長連接會越來越多。同理,隨著客戶端的數(shù)量越來越多,每個OSD上面維護(hù)的TCP連接也會越來越多,因此需要對整個系統(tǒng)中的客戶端到OSD的TCP連接數(shù)進(jìn)行控制,以減少OSD的開銷。

        數(shù)據(jù)請求的跨集群路由

        整個系統(tǒng)的數(shù)據(jù)寫入會分布在不同的Ceph集群,因此需要在入口側(cè)進(jìn)行數(shù)據(jù)流量的按集群拆分。但是如果每個入口Router節(jié)點如果都作為客戶端使用Librados連接到具體的集群,一方面會加重Router的設(shè)計復(fù)雜度,另外也會在后續(xù)的部署過程中,需要將Router就近接入到對應(yīng)的集群才能減少網(wǎng)絡(luò)波動帶來的可靠性影響。

        2 解決思路

        gRPC代理模型

        將全部的librados的請求封裝成gRPC服務(wù),按集群維度來構(gòu)建多個gRPC連接池,每個連接池維持與Ceph集群的長連接,同時提供Proxy來實現(xiàn)負(fù)載均衡和服務(wù)的冗余。客戶端請求一般以短連接方式與Proxy進(jìn)行通信(也可以設(shè)置keealive來實現(xiàn)長連接),客戶端通信完成以后就釋放對應(yīng)的TCP連接。

        效果圖



        歡迎訂閱本公眾號cephbook,干貨滿滿,專業(yè)老司機(jī)教你搞"對象"存儲!






        瀏覽 89
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 操逼xx网站| 亚洲成人在线免费观看 | 免费的黄色视频 | 夜夜爱夜夜爽 | 国产毛片91 |