自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊負(fù)載均衡實現(xiàn)RGW S3端點的高可用性和性能提升

開發(fā) 前端
如果ceph-node02宕機(jī)了會發(fā)生什么?用戶將開始收到錯誤消息和失敗的請求,即使其他RGW服務(wù)在存活的節(jié)點上正常運(yùn)行。為了避免這種情況,提供高可用性和更高的性能,我們需要在RGW服務(wù)前面配置一個負(fù)載均衡器。

RGW S3 的負(fù)載均衡

背景介紹

在上一部分中,我們配置了四個 RGW 實例:兩個專用于客戶端 S3 API 請求,其余用于多站點復(fù)制請求。通過此配置,客戶端可以單獨連接到每個 RGW 端點以使用 HTTP Restful S3 API。例如,他們可以使用運(yùn)行和 RGW 服務(wù)的節(jié)點之一的 IP/FQDN 作為端點,例如,可以使用AWS s3客戶端發(fā)出LIST請求。

以下是 AWS s3 客戶端的示例:

$ aws –endpoint https://ceph-node02 s3 ls 。他們將能夠訪問他們的存儲桶和數(shù)據(jù)。

問題是,如果ceph-node02宕機(jī)了會發(fā)生什么?用戶將開始收到錯誤消息和失敗的請求,即使其他RGW服務(wù)在存活的節(jié)點上正常運(yùn)行。為了避免這種情況,提供高可用性和更高的性能,我們需要在RGW服務(wù)前面配置一個負(fù)載均衡器。由于RGW端點使用HTTP協(xié)議,我們有很多解決方案來實現(xiàn)負(fù)載均衡HTTP請求。這些包括基于硬件的商業(yè)解決方案以及開源軟件負(fù)載均衡器。

我們需要找到一個能夠滿足我們性能需求的解決方案,這取決于我們集群的規(guī)模和性能需求。

Github:https://github.com/mmgaggle/ceph-lb,該Github倉庫有一些比較好的推薦。

圖片圖片

站點間復(fù)制網(wǎng)絡(luò)

每個站點的網(wǎng)絡(luò)必須提供足夠的帶寬來支持復(fù)制對象或糾刪碼對象分片的讀寫。我們建議每個站點的網(wǎng)絡(luò)結(jié)構(gòu)要么沒有超額訂閱(1:1),要么超額訂閱最小(例如2:1)。Ceph集群部署中最常用的網(wǎng)絡(luò)拓?fù)渲皇荓eaf和Spine,因為它具有比較高的可擴(kuò)展性。

參與同一區(qū)域組的區(qū)域之間的網(wǎng)絡(luò)將用于異步復(fù)制流量。站點間的帶寬必須等于或大于寫入吞吐量,以防止同步滯后增加和數(shù)據(jù)丟失的風(fēng)險。站點間網(wǎng)絡(luò)不依賴于讀取流量或?qū)ο蟮闹貥?gòu),因為所有對象在本地都是持久的。建議為站點間網(wǎng)絡(luò)提供路徑多樣性,因為我們通常討論的是WAN連接。站點間網(wǎng)絡(luò)應(yīng)該是路由的(L3)而不是交換的(L2擴(kuò)展VLAN),以便在每個站點提供獨立的網(wǎng)絡(luò)堆棧。最后,即使我們在實驗室示例中沒有這樣做,Ceph對象網(wǎng)關(guān)同步應(yīng)配置為使用HTTPS端點,以在生產(chǎn)中使用SSL/TLS加密復(fù)制流量。

Ingress 服務(wù)概述

從Pacific版本開始,Ceph提供了基于Keepalived和HAproxy的ingress服務(wù),簡化了高可用性和負(fù)載均衡的部署。

ingress服務(wù)允許使用最少的配置選項,為 RGW 創(chuàng)建高可用性端點。編排器將部署和管理 HAproxy 和 Keepalived ,以實現(xiàn)不同配置的浮動虛擬 IP 上的負(fù)載均衡。

圖片圖片

部署ingress服務(wù)的主機(jī)有多臺。每個主機(jī)都有一個 HAproxy 和一個 keepalived。

默認(rèn)配置

在默認(rèn)配置下,Keepalived會在其中一個主機(jī)上自動配置單個虛擬IP地址(VIP)。這種配置存在以下局限性:

  • 單點瓶頸:所有負(fù)載均衡流量都通過單個主機(jī)轉(zhuǎn)發(fā)
  • 性能限制:難以應(yīng)對高并發(fā)客戶端請求
  • 擴(kuò)展性不足:無法充分利用多節(jié)點資源

優(yōu)化配置

為了突破這些限制,我們推薦采用以下優(yōu)化方案:

  1. 多VIP配置:
  • 為每個入口節(jié)點配置獨立的VIP地址
  • 通過輪詢DNS機(jī)制在所有VIP之間分配請求
  1. 性能優(yōu)勢:
  • 充分利用多主機(jī)資源
  • 顯著提升系統(tǒng)吞吐量
  • 實現(xiàn)更高效的請求分發(fā)
  1. 擴(kuò)展方案:
  • 對于大規(guī)模部署,建議采用更高級的負(fù)載均衡方案
  • 使用等價多路徑路由,例如:BGP + ECMP

配置概要

下面主要提供的是一些簡單的配置內(nèi)容。

多VIP配置示例
virtual_ips_list:
  - 192.168.122.150/24
  - 192.168.122.151/24
  - 192.168.122.152/24
DNS輪詢配置
s3.cephlab.com.    IN    A    192.168.122.150
s3.cephlab.com.    IN    A    192.168.122.151
s3.cephlab.com.    IN    A    192.168.122.152

方案優(yōu)勢對比

圖片圖片

部署Ingress服務(wù)

服務(wù)部署架構(gòu)

在本文中,我們將配置入口負(fù)載均衡服務(wù)。

Zone1 區(qū)域:

  • 節(jié)點:ceph-node-02, ceph-node-03
  • 服務(wù):面向外部的RGW服務(wù)

Zone2 區(qū)域:

  • 節(jié)點:ceph-node-06, ceph-node-07
  • 服務(wù):面向外部的RGW服務(wù)

在下圖中,簡單描述了整個訪問的架構(gòu),通過該架構(gòu),我們可以實現(xiàn)對象存儲的負(fù)載均衡訪問。

圖片圖片

方案優(yōu)勢

采用先進(jìn)的多站點復(fù)制架構(gòu),具備以下核心優(yōu)勢:

  1. 高可用性(HA):
  • 自動故障轉(zhuǎn)移
  • 服務(wù)不間斷
  1. 負(fù)載均衡:
  • 智能請求分發(fā)
  • 資源利用率優(yōu)化
  1. 擴(kuò)展性:
  • 支持多區(qū)域部署
  • 易于橫向擴(kuò)展

配置步驟

  1. 創(chuàng)建服務(wù)規(guī)范文件:
  • 服務(wù)類型:ingress
  • 指定現(xiàn)有RGW服務(wù)名稱:rgw.client-traffic
  • 配置service_id和backend_service參數(shù)
  1. 獲取服務(wù)信息:我們可以使用cephadm orch ls命令獲取 cephadm 服務(wù)的名稱。
[root@ceph-node-00 ~]# ceph orch ls | grep rgw
rgw.client-traffic         ?:8000           2/2  4m ago     3d   count-per-host:1;label:rgw
rgw.multisite.zone1        ?:8000           2/2  9m ago     3d   count-per-host:1;label:rgwsync

3.VIP配置:

  • 每個入口服務(wù)守護(hù)進(jìn)程配置一個VIP
  • 每個Ceph集群配置兩個節(jié)點管理入口服務(wù)

4.SSL/TLS配置:

  • 啟用HTTPS加密
  • 配置SSL證書

示例配置

[root@ceph-node-00~]# cat << EOF >  rgw-ingress.yaml
service_type: ingress
service_id: rgw.client-traffic
placement:
hosts:
-ceph-node-02.cephlab.com
-ceph-node-03.cephlab.com
spec:
backend_service: rgw.client-traffic
virtual_ips_list:
-192.168.122.150/24
-192.168.122.151/24
frontend_port: 443
monitor_port:  1967
ssl_cert: |
-----BEGINCERTIFICATE-----
-----ENDCERTIFICATE-----


-----BEGINCERTIFICATE-----
-----ENDCERTIFICATE-----
-----BEGINPRIVATE KEY-----
-----ENDPRIVATE KEY-----
EOF




[root@ceph-node-00~]# ceph orch apply -i rgw-ingress.yaml
Scheduledingress.rgw.client update...

[!CAUTION]

注意:入口服務(wù)根據(jù)我們添加到ssl_cert列表的所有證書構(gòu)建一個名為HAproxy.pem的單個證書文件。為了使證書發(fā)揮作用,HAproxy 要求您按以下順序添加證書:首先是cert.pem ,然后是鏈證書,最后是私鑰。

很快我們就可以看到我們的 HAproxy 和 Keepalived 服務(wù)在ceph-node-[02/03]上運(yùn)行:

[root@ceph-node-00 ~]# ceph orch ps | grep -i client
haproxy.rgw.client.ceph-node-02.icdlxn     ceph-node-02.cephlab.com  *:443,1967             running (3d)     9m ago   3d8904k        -  2.4.22-f8e3218    0d25561e922f  9e3bc0e21b4b
haproxy.rgw.client.ceph-node-03.rupwfe     ceph-node-03.cephlab.com  *:443,1967             running (3d)     9m ago   3d9042k        -  2.4.22-f8e3218    0d25561e922f  63cf75019c35
keepalived.rgw.client.ceph-node-02.wvtzsr  ceph-node-02.cephlab.com                        running (3d)     9m ago   3d1774k        -  2.2.86926947c161f  031802fc4bcd
keepalived.rgw.client.ceph-node-03.rxqqio  ceph-node-03.cephlab.com                        running (3d)     9m ago   3d1778k        -  2.2.86926947c161f  3d7539b1ab0f

可以從容器內(nèi)部檢查 HAproxy 的配置:它在配置為后端的兩個面向客戶端的 RGW 之間使用靜態(tài)循環(huán)負(fù)載平衡。前端使用路徑/var/lib/haproxy/haproxy.pem中的證書偵聽端口 443:

[root@ceph-node-02~]# podman exec -it ceph-haproxy-rgw-client-ceph-node-02-jpnuri cat /var/lib/haproxy/haproxy.cfg | grep -A 15 "frontend frontend"
frontendfrontend
bind*:443 ssl crt /var/lib/haproxy/haproxy.pem
default_backendbackend


backendbackend
optionforwardfor
balancestatic-rr
optionhttpchk HEAD / HTTP/1.0
serverrgw.client-traffic.ceph-node-02.yntfqb 192.168.122.94:8000 check weight 100
serverrgw.client-traffic.ceph-node-03.enzkpy 192.168.122.180:8000 check weight 100

對于此示例,我們使用負(fù)載均衡器 CoreDNS 插件配置了基本的 DNS 循環(huán)。我們在所有入口 VIP 配置解析s3.zone1.cephlab.com 。正如在以下示例中看到的,對s3.zone1.cephlab.com的每個請求都會輪詢解析為不同的 Ingress VIP。

[root@ceph-node-00 ~]# ping-c 1 s3.zone1.cephlab.com
PINGs3.cephlab.com (192.168.122.150) 56(84) bytesofdata.
[root@ceph-node-00 ~]# ping-c 1 s3.zone1.cephlab.com
PINGs3.cephlab.com (192.168.122.151) 56(84) bytesofdata.

現(xiàn)在可以將 S3 客戶端指向s3.zone1.cephlab.com以訪問 RGW S3 API 端點。

[root@ceph-node-00 ~]# aws --endpoint https://s3.zone1.cephlab.com:443 s3 ls
2024-01-0413:44:00 firstbucket

此時,我們已經(jīng)為zone1配置了高可用性和負(fù)載均衡。如果一臺運(yùn)行 RGW 服務(wù)的服務(wù)器出現(xiàn)故障,客戶端請求將被重定向到另外一臺正常的 RGW 服務(wù)。

我們需要對托管zone2第二個 Ceph 集群執(zhí)行相同的步驟,最終每一個區(qū)域都擁有一個訪問的入口域名:

s3.zone1.cephlab.com
s3.zone2.cephlab.com

全局負(fù)載均衡(GLB)配置

作為高可用負(fù)載均衡的最后一步,我們可以部署全局負(fù)載均衡器(GLB)。需要注意的是,GLB并非Ceph原生解決方案,需要借助第三方服務(wù)實現(xiàn)。目前市場上有多種DNS全局負(fù)載均衡器可供選擇,它們支持不同的負(fù)載均衡策略。

使用 GLB 具有顯著的優(yōu)點。

圖片

具體的優(yōu)勢如下:

  • SSL/TLS配置:

采用TLS透傳或重新加密方案

確保從客戶端到站點負(fù)載均衡器的全程加密

  • 主動/主動模式:

提供單一S3端點FQDN

根據(jù)策略將請求路由到最優(yōu)站點

支持地理位置感知路由

  • 主動/被動災(zāi)難恢復(fù):

主站點故障時自動切換

用戶無感知故障轉(zhuǎn)移

顯著降低故障切換時間

在下圖中,我們提供了一個示例,其中添加具有 FQDN s3.cephlab.com的 GLB??蛻舳诉B接到s3.cephlab.com ,并將根據(jù) GLB 級別應(yīng)用的策略重定向到一個或另一個站點

RGW 復(fù)制端點的負(fù)載均衡RGW 復(fù)制端點的負(fù)載均衡


在之前的配置中,我們?yōu)镾3客戶端請求配置了負(fù)載均衡服務(wù),但尚未討論多站點同步請求的負(fù)載均衡問題。在本節(jié)中,我們將探討如何在沒有入口服務(wù)或外部負(fù)載均衡器的情況下,在兩個專用RGW服務(wù)之間實現(xiàn)同步請求的負(fù)載均衡。

解決方案

1. RGW內(nèi)置輪詢機(jī)制

實現(xiàn)方式:

  • 在區(qū)域組(zonegroup)和區(qū)域(zone)級別實現(xiàn)輪詢
  • 配置以,分隔的RGW服務(wù)IP地址或主機(jī)名列表

示例配置:

  • 多區(qū)域組復(fù)制端點:
[root@ceph-node-00 ~]# radosgw-admin zonegroup get | jq .endpoints
[
"http://ceph-node-04.cephlab.com:8000",
"http://ceph-node-05.cephlab.com:8000"
]
  • 2. zone1和zone2的復(fù)制端點:
[root@ceph-node-00 ~]# radosgw-admin zonegroup get | jq .zones[].endpoints
[
"http://ceph-node-00.cephlab.com:8000",
"http://ceph-node-01.cephlab.com:8000"
]
[
"http://ceph-node-04.cephlab.com:8000",
"http://ceph-node-05.cephlab.com:8000"
]

2. 專用負(fù)載均衡器方案

實現(xiàn)方式:

  • 部署專用入口服務(wù)
  • 使用HTTP負(fù)載均衡器
  • 在區(qū)域組和區(qū)域端點列表中配置單個FQDN

方案選擇

選擇因素

因素包含配置復(fù)雜度,性能,擴(kuò)展性,功能特性,管理成本等,如下表所示:

圖片圖片

推薦方案

針對不同的規(guī)模場景,推薦的方案如下:

  1. 小型部署:
  • 推薦使用RGW內(nèi)置輪詢機(jī)制
  • 配置簡單,維護(hù)成本低
  1. 中大型部署:
  • 推薦使用專用負(fù)載均衡器
  • 提供更高級的負(fù)載均衡功能
  • 支持更復(fù)雜的流量管理策略

最佳實踐

如果負(fù)載平衡器至少能提供與配置的專用 RGW 服務(wù)循環(huán)相同的吞吐量,那么外部負(fù)載均衡會更好。舉例來說,如果我們的外部負(fù)載均衡是運(yùn)行在單個虛擬機(jī)上的 HAproxy,只有一個 VIP,而且網(wǎng)絡(luò)吞吐量有限,那么我們最好使用 RGW 循環(huán)復(fù)制端點列表選項。對于合并了 2024 年初的 PR 之后的版本,我認(rèn)為這兩個選項都可以。我們需要權(quán)衡兩種方案,一種是只需為端點設(shè)置一個 IP 列表的簡單性,另一種是完整的負(fù)載均衡所能提供的更高級功能。

要實現(xiàn)最佳配置,總結(jié)為如下條件:

  1. 性能評估:
  • 確保負(fù)載均衡器的吞吐量不低于RGW輪詢方案
  • 避免單點性能瓶頸
  1. 配置自動化:
  • 利用RGW管理模塊自動生成端點列表
  • 簡化配置流程
  1. 監(jiān)控與優(yōu)化:
  • 實時監(jiān)控負(fù)載均衡狀態(tài)
  • 根據(jù)流量模式動態(tài)調(diào)整策略

總  結(jié)

在本系列的第四部分中,我們深入探討了RGW S3端點的負(fù)載均衡方案。我們涵蓋了多種負(fù)載均衡技術(shù),包括Ceph原生提供的負(fù)載均衡器——Ingress服務(wù)。

在第五部分中,我們將詳細(xì)介紹新的同步策略功能,該功能為對象多站點復(fù)制提供精細(xì)且靈活的同步策略方案。

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2019-03-25 09:49:27

Nginx負(fù)載均衡高可用性

2024-01-10 07:23:52

高可用策略實踐

2024-04-15 12:48:00

2024-11-27 08:12:58

2024-02-26 00:00:00

Go性能工具

2024-04-09 07:53:04

高可用架構(gòu)擴(kuò)展性

2024-07-11 08:26:00

2023-12-28 09:55:08

隊列數(shù)據(jù)結(jié)構(gòu)存儲

2019-07-02 08:38:45

NginxTomcatKeepalived

2024-11-27 16:07:45

2021-11-04 06:58:31

CSS性能設(shè)備

2023-05-31 08:42:02

管理產(chǎn)品技術(shù)項目

2022-04-07 11:43:24

UPnPDLNA協(xié)議

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式
點贊
收藏

51CTO技術(shù)棧公眾號