GH GambleHub

ロードバランシング

1)建築においてなぜ、どこにあるのか

バランサーは、クライアントとバックエンドの艦隊の間の「回転木戸」です。その目的は次のとおりです:
  • 可用性(1つの障害ポイントなし)、レイテンシ(p95ダウン)、スケール(水平)、セキュリティ(TLS/WAF)、リリース管理(カナリア/ブルーグリーン)。
アプリケーションレイヤー:
  • Edge/Global: Anycast、 GSLB/GeoDNS、 CDN/Edge-LB、 DDoS。
  • L4 (TCP/UDP): NLB、 maglev、終端なしのプロキシ。
  • L7 (HTTP/2、 gRPC、 WebSocket、 QUIC):パスのルーティング/ヘッダー/スタンプ、キャッシュ/圧縮/リトレイ。
  • Data-tier: PgBouncer/ProxySQL、 Redis Cluster/Consistent Hash、 Kafkaパーティショニング。

2)モデルとアルゴリズムのバランス

ラウンドロビン(RR):シンプルなユニフォーム。
最小接続(LC):長い接続(WS、 gRPC)に適しています。
Reast Request/Power-of-Two (P2C): 2つのランダムなものを比較することは、良いスピード/品質バランスです。
重み付けRR/LC:カナリア/ホットノードの重み。
Consistent Hashing (CH):テーブルなしのセッション粘着性(カート、Redis)。
Maglev/Flow-hash:フラッピング抵抗と高速L3/L4分布。
レイテンシー対応:p50/p95をスライドさせて選択します。
EWMA:遅延の履歴を考慮します。

推奨事項:L7のデフォルトP2C (lest-request);ステートフル/キャッシュ-一貫性のあるハッシュ;WS/gRPC-最小接続。

3)上流の健康: 点検および「立ち退き」

ヘルスチェック:TCP、 HTTP 200/匹配は、gRPCの状態;間隔/タイムアウト/エラーしきい値。
Outlier Ejection: 「noisy」インスタンス(sequential-5xx、 success-rate-ejection)の自動除外。
スロースタート&ウォームアップ:新しいインスタンスのソフトエントリ(徐々に重量が増加)。
接続ドレイン:オフ/リセット時-中断せずにアクティブ接続の「トッピングアップ」。

4)セッションと粘着性(粘着性)

Cookie-stickiness (L7): 'Set-Cookie: lb=;SameSite;「安全に」

CH by key: 'hash (userId' sessionId 'cartId)'。
IP-hash-クローズドネットワーク(NATブレーク)のみ。
TTL stickiness+fallback in nodal eviction。
重要:stickinessの必要性を最小限に抑え→インスタンス外の状態を格納します(Redis/DB/JWT)。

5)グローバルバランシング(GTM/GSLB)

Anycast+health-probe: 1つのIP、最寄りのPoPへのトラフィック。自動feilover。
GeoDNS/Latency-DNS: Geo/Latency Response。
地域クラスター:「居住データ」は地域(GDPR)に残ります。レプリケーションによる地域間フェイルオーバー。
政治家:地理ブロック、アカウント/トークンによる「stickeregion」。

6)議定書および特徴

HTTP/2:マルチプレックス、優先度;上流のための有能な接続プールを必要とします。
gRPC:長寿命ストリーム→最小接続、積極的な健康チェック。
WebSocket/SSE:接続の粘着性、大規模なアイドルタイムアウト、TCP keep-alive。
QUIC/HTTP/3:速い開始、損失への抵抗;MTU/patch-MTUを監視します。
TLS-termination/mTLS: edge/L7-LBで終了します。経口mTLS/identity (SPIFFE)。

7)積み過ぎ制御

Rate-limit: IPごと、キーごと、ルートごと;burst+sustain。
Adaptive Concurrency (Envoy)-同時リクエストの動的制限。
キュー/サージバッファ:フェア拒否503の制限されたキューのサイズ。
ヘッジング/パラレルレーシング:スロークエリの複製(idempotentのみ)。
タイムアウトバジェット:接続/読み取り/書き込みを分離します。
Backpressure: '503+Retry-After'、ジッタークライアント指数リトリア。
Slow-loris保護:読み取り/書き込みタイムアウト、最小速度。

8)リリースとトラフィック管理

カナリア(重み付け):1-5-10-25-50-100%ガードレール(p95、 5xx、タイムアウト)。
ブルーグリーン:インスタントスイッチ、ロールバック-DNS/LB。
Shadow/Mirror:応答に影響を与えることなくリクエストのコピー。PIIマスキング。
ヘッダー/クレーム・ルーティング:'X-Canary: 1'\\'JWT。主張しています。region/role'。

9)オートスケーリングおよび排水

HPA/ASG CPU+RPS+p95+キュー深度。
PreStopフック:接続が完了するまで待ちます。
ウォームプール/インスタンスの再利用:コールドスタートを短縮します。
容量計画:p95のターゲット'60-70%の利用'は正常です。

10)観察可能性およびSLO

LBメトリクス: RPS、 p50/p95/p99、 4xx/5xx、 open-connections、 queue-len、 ejections、 retries、 hit-ratio cache。

トレース: 'traceparent/x-request-id' (LB→services→databases)

ログ:構造、PII/PANマスク、上流との相関。

ルートSLO: 例えば、'latency p95 ≤ 300 ms'、 'availability ≥ 99。9%'、'5xx ≤ 0。5%`.

アラート:偏差によって(バーンレートSLO、放出サージ、5xx/タイムアウトの成長)。

11)データとキャッシュのバランス

PostgreSQL/MySQL:
  • 読み取り/書き込み分割(ProxySQL/pgpool)+読み取りレプリカ;sticky-txn。
  • フェイルオーバー:RPO=0の同期レプリカ(より高価)。
Redis:
  • Redisクラスタ+ハッシュスロット;セッション-CH;timeouts/Retryableエラー。
カフカ/レドパンダ:
  • パーティショニングと消費者グループによるバランス;HTTP-LBと混同されないため。
  • オブジェクトストレージ(S3/MinIO): マルチリージョンフェールオーバーGSLB/レプリケーション。

12) K8sおよびクラウドLB

サービス(ClusterIP/NodePort/LoadBalancer)-ベースL4。
Ingress/Gateway API-L7ルーティング、カナリアウェイト、TLS。
AWS: NLB (L4、高帯域幅)、ALB (L7、 WAF、スティッキー、ヘッダルーティング)。
GCP:グローバルLB (L7/HTTP (S)→Anycast)、 TCP/UDPプロキシLB。
Azure:フロントドア(グローバル)、アプリケーションゲートウェイ(L7)、ロードバランサー(L4)。

13)構成例

13.1 NGINX (L7、 least_conn、粘着性がある、カナリア)

nginx upstream api_pool {
least_conn;
server api-1:8080 max_fails=3 fail_timeout=10s;
server api-2:8080 max_fails=3 fail_timeout=10s;
sticky cookie lb_id expires=30m path=/ secure httponly;
}

map $http_x_canary $dst {
default api_pool;
1    canary_pool;
}

upstream canary_pool {
least_conn;
server api-canary:8080 weight=1;
}

server {
listen 443 ssl http2;
location /api/ {
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_set_header X-Request-Id $request_id;
proxy_pass http://$dst;
}
}

13.2 HAProxy (P2C、健康、スロースタート、スティックテーブル)

haproxy backend api balance leastconn option httpchk GET /health default-server inter 3s fall 3 rise 2 slowstart 10s server s1 10. 0. 0. 11:8080 check server s2 10. 0. 0. 12:8080 check stick-table type ip size 100k expire 30m http-request track-sc0 src rate limit per IP http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }

13.3 Envoy (P2C、アウトリエ、リトライ、適応並行性)

yaml load_assignment: {... }
lb_policy: LEAST_REQUEST least_request_lb_config: { choice_count: 2 }
outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s typed_extension_protocol_options:
envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency:
gradient_controller_config:
sample_aggregate_percentile: PERCENTILE_50 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 1s

13.4 Kubernetes(ゲートウェイAPI、加重カナリア)

yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- matches: [{ path: { type: PathPrefix, value: /api }}]
backendRefs:
- name: api-v1 weight: 90 port: 8080
- name: api-v2-canary weight: 10 port: 8080

14)チェックリスト

LB/ルートリリース前

  • トラフィックタイプに選択されたアルゴリズム(P2C/LC/CH)。
  • ヘルスチェックと射出しきい値が設定されています。
  • スロースタート、ウォームアップ、接続ドレインが有効。
  • TLS/mTLS、 HSTS、セキュア暗号;必要に応じてHTTP/2/3してください。
  • 粘着性がある/CH必要ならばだけ;TTLのフォールバック。
  • Rate-limit/burst、 timeouts、再試行予算、adaptive concurrency。
  • ログ/トレイル:'trace-id'がスローされます。PIIマスキング。
  • p95/5xx/elections/queue-lenによるSLO/アラート。
  • カナリア重量+ロールバックプラン;大きな変化を伴う影。

決済・コンプライアンス経路について

  • Idempotency-Key。
  • PSP間のフェイルオーバー;同じメソッドをチェックします。
  • エラーコードは正規化されます。ETA/顧客ごとの理由。

DB/キャッシュ用

  • RW分割/レプリカ;タイムアウト、ネットワークの再試行。
  • RedisのCH/slot-hash;「ホットキー」に対する保護。
  • レイテンシの監視とレプリケーションラグ。

15)品質指標(最小)

ルート/メソッドによるレイテンシp50/p95/p99。
エラー率4xx/5xx、タイムアウト/オーバーフロー。
開いている/アクティブな接続、キューの深さ、再試行数。
外側の放出と原因。
スティッキーヒットレシオ/キャッシュのヒットレシオ。
GSLB:地域分布、faylovers、 PoPの可用性。

16)アンチパターン

1つの保護されていないモノリシックLB。
状態を取り除くのではなく、粘着性のあるセッション「すべてのために」。
グローバル無限のキュー(問題を隠し、p99を成長させる)。
ジッタ/予算のないレトライは、要求の「嵐」です。
信頼されたプロキシのリストを除いて'X-Forwarded-For'を信頼します。
枯渇中の排水の欠如→WS/gRPCが壊れます。
オートスケール時に長寿命の接続を考慮に入れない。

17) iGaming特異性

ピークとトーナメント:ディレクトリ/リスト(1-5秒)のマイクロキャッシュ、順番に自動スケール。
ライブゲーム/ストリーム:長い接続のためのLC、最寄りのPoPの優先順位。
支払い:地理/通貨/金額/プロバイダルーティング;厳密なタイムアウトとidempotency。
責任あるプレイとコンプライアンス:劣化しても制限/ロックの要求をスキップする優先順位(フェイルオープン/ポリシーで閉じる)。

18)実装プロセス(4スプリント)

1.トラフィックマップ:プロトコル、p95/p99負荷、重要なルート。
2.LB構成:アルゴリズム、健康/外向き、TLS、制限/タイムアウト、オブザビリティ。
3.GSLB/Edge: Anycast/GeoDNS、 PoPサポート、地域データポリシー。
4.リリース戦略:カナリア/シャドウ、SLOアラート、オートスケール+ドレイン、インシデント後の分析。

最終的なチートシート

トラフィックの種類(P2C/LC/CH)と接続期間のアルゴリズムを選択します。
上流の「健康」を保ちます:健康チェック+外側+スロースタート+排水。
ピーク負荷の管理:レート制限、アダプティブ並行性、障害のあるキュー。
GSLB/Anycastを使用して、地域ごとのグローバルな可用性とコンプライアンスを実現します。
観測可能性とSLOは必須です。リリース-ロールバックプランでカナリア/シャドウ経由。
可能であれば、インスタンスからセッションを削除し、LBから粘着性。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。