Cephを使用して、S3互換RadosGWストレージを使用してバックアップを保存すると、1つのradosGWがそれに割り当てられた負荷に対応できないという結論に達し、それに付随するフォールトトレランスとのバランスをとる時であると判断しました。 その結果、GoBetween(非常に軽量なL4バランサー、さらにgobetween.ioを使用)を使用したバランシングソリューションを思い付き、VRRPを使用してフォールトトレランスを整理しました。
次のスキームが登場しました。
- マスターvrrpノードは、http(s)を介してデータストリームを受信します。
- gobetweenはすべてのトラフィックを自身に分散し、vrrpノードをバックアップします。
- 次に、radosgwはcephに直接書き込みます。
- vrrpマスターノードが落ちた場合、マスターが立ち上がるまでバックアップノードはそれ自体のすべての負荷を引き受けます
以下のこのアクションの実装をお読みください。
与えられた:- Ceph Cluster(ジュエル)
- IPモニター:10.0.1.1、10.0.1.2、10.0.1.3
- 2台のアイロンサーバー(CentOS)
- 最初のサーバーは10.0.0.1です(gbt1.example.comと呼びましょう)。
- 2番目のサーバー10.0.0.2(gbt2.example.com)
- 共有IPは10.0.0.3(s3.example.com)になります
- ドメインexample.com
チャレンジ:RadosGWで編成されたS3ストレージのフェールオーバーバランシングを行う
ステージ:- RadosGWを2つのサーバーに展開する
- VRRPでフォールトトレランスを整理する
- GoBetweenを使用してS3トラフィックバランシングを整理する
- 確認する
準備(すべてが両方のマシンで同一)
CentOS 7.4がサーバーにインストールされます。OSをインストールしたらすぐにすべてを更新します。
ToRに必要なすべてのソフトウェアをインストールします(最初にリポジトリのみがインストールされるため、cefを除く)。
現時点では、まだCephをインストールしていないため、インストールします。
必要なポートを開き、サービスを有効にして、ファイアウォールをすぐに構成します。
SELinuxをオフにします(念のため):
RadosGWを展開する
最初は、Cephクラスターは既に提起されています。ここでは詳細に触れません。トピックはこの記事ではなく、radosGWの構成にすぐに進みます。
構成は例として示されています。あなたの場合、いくつかのパラメーターは異なるかもしれません:
Cephクラスターの任意のノードから/etc/ceph/client.radosgw.gatewayキーをコピーすることを忘れないでください
radosgwを実行します。
そして、自動開始に追加します:
VRRPを展開する
マスターノード上(状態と優先度のオプションの違い):
バックアップに関するメモ:
再起動して自動起動に追加します(両方のノード):
GoBetweenを展開
開始するには、gobetweenバイナリをダウンロードして解凍します。
gobetween configを記述します(SSL接続の場合、キーの場所を示します)。 両方のノードの構成は同じです:
Gobetweenは次のコマンドで起動します(便利な方法で自動起動に追加します):
確認する
検証には、たとえばs3cmdやDragonDiskなど、任意のS3クライアントを使用できます。 s3cmdの検証オプションは次のようになります(s3.example.comが既に構成でサーバーとして指定されていることを考慮して)。
少なくともいくつかのバケットがすでにある場合、彼の名前は排気口にあります;バケットがない場合、空の排気口があります。
現在の外観-下の画面で確認できます。 1日あたりの統計(1秒あたりのギガバイト単位のグラフ):

まとめ
負荷は大幅に減少し、鈍いものはなく、すべてのバックアップが一晩で集まる時間があります(それ以前は、営業日の高さで、まだ組み立てることができました)。
このhautushkaがradosgwの負荷を加速および軽減するのに役立つことを願っています