菜单

CAMServer 冗余和负载平衡

目录

冗余和负载平衡

在 CAMServer 的终极计划中、在内部部署环境中非常简单可以进行Web服务器和视频服务器的冗余和负载平衡。这样,即使一台服务器宕机,服务也能继续,即使有大量用户使用,也可以在不降低性能的情况下分散处理并提供服务。

分布式配置 CAMServer 但实时通信是可能的。例如CAMServer1 客户已连接到CAMServer2 您可以与连接到 的另一个客户端聊天或召开网络会议。视频服务器负载平衡是根据活动会议数量和参与用户数量执行的。

同时举行的网络会议的数量很简单CAMServer这不能通过简单地增加节点数量来实现。还需要考虑网络配置,以便所有会议不会通过同一 VPN 或中心路由器进行中继。

冗余和负载平衡配置

您可以根据您公司的要求级别和成本配置最佳环境。

小型启动配置

  • 贮存:将 DB/File 放置在 CAMServer1 端,并从 CAMServer2 引用它。即使在这种情况下,所有用户都可以实时共享数据。
  • 备份:每天需要将DB/File数据备份到CAMServer2上。
  • 负荷分配:通过将访问的CAMServer按部门划分(或使其成为备用系统),可以进行负载分配。
  • 可用性:当发生故障时,网络应用程序版本 如果你使用 cam.clusterHosts.检测和自动故障转移。如果磁盘出现故障备份已完成保证数据截至前一天。
  • 成本: 最便宜的配置。您可以从单个设备配置开始,然后根据负载进行扩展。

外部存储 (NAS) 配置

  • 存储:将数据库/文件放置在 RAID 配置中的高度耐用的外部存储 NAS 上,并引用 CAMServer1 和 CAMServer2。
  • 备份:即使使用 RAID 配置,也需要每天备份 DB/文件数据,以应对电源/外壳故障和人为故障。
  • 负荷分配:与小启动配置相同。
  • 可用性:与小启动配置相同。
  • 成本:相对便宜的配置。

冗余外部存储配置

  1. 存储:通过使用冗余文件共享服务器(Windows Server 故障转移集群 +SAN、AWS S3 等)强调针对磁盘故障的高可用性的配置。
  2. 备份:数据会自动复制,因此根据策略不需要备份。但是,如果您考虑人为故障(例如手动擦除磁盘),您仍然需要备份。
  3. 负荷分配:与小启动配置相同。
  4. 可用性:web服务器与小启动配置相同。即使由于磁盘或外壳故障而发生故障,也可以进行自动切换。
  5. 成本: 引进成本高。 AWS S3 可以以低成本构建,但如果您的重点是本地,那么它不是一个选择。

负载平衡器配置

  • 存储:小型启动配置/NAS/SAN可选。
  • 备份:与小型启动配置/NAS/SAN 相同。
  • 负荷分配:通过将负载均衡器放置在CAMServer之前,可以实现冗余和负载分配。附注(补充信息) 文号 Load Balancer 構成の要件詳細も確認してください。
  • 可用性:与冗余外部存储配置结合使用时,所有层都可以进行自动故障转移。
  • 成本: 引进成本高。

冗余和负载平衡设置

每个分布式服务器上的通用设置

为使 CAMServer 冗余和负载平衡,请在每个分布式服务器上安装一个 CAMServer、CAMServer/cam.ini 在文件中添加以下条目。

cam.clusterHosts=camserver1;camserver2
cam.clusterHostsDesc=camserver1 がメインサーバ、camserver2 は待機系サーバです。
cam.serverDatePath=\\disk\CAMServer\data
cam.enabledSingleProcessingHost=camserver1

cam.clusterHosts.

cam.clusterHosts. 是每个分布式服务器的主机名。 ; 主机名以"...... "分隔并枚举。可以在客户端使用 https://ホスト名/ 它必须可以通过以下方式访问

cam.clusterHosts=camserver1;camserver2 

如果您想为每个部门单独设置 CAMServer,请在每个 CAMServer 的 ini 文件的开头写入主机名。启动时选择初始连接服务器和视频服务器时,枚举顺序会受到影响。还网络应用程序版本 通过使用 ,在发生故障时可以进行故障转移连接。

cam.clusterHostsDesc.

cam.clusterHostsDesc. 可以更改分布式服务器描述字段中的注释。

cam.serverDatePath.

cam.serverDatePath. 指定数据库,即存储上传附件的位置。指定可从分布式服务器访问的共享磁盘(如 NAS)。
如果没有共享磁盘,子 CAMServer 可用作主 CAMServer 的 CAMServer/config 还可以通过指定文件夹共享存储空间。

cam.enabledSingleProcessingHost

cam.enabledSingleProcessingHost 指定在 cam.clusterHosts 中枚举的第一台服务器的主机名。对于只能在单个主机上运行的进程(如批处理),在执行前应先设置此项以确定主机是否已在 cam.enabledSingleProcessingHost 中定义。

只配置子服务器。

cam.disableLANNetwork=true 以禁用局域网的 TCP/UDP 连接;第二个及以后的子 CAMServer 也应如此配置。

cam.disableLANNetwork=true

Load Balancer の要件詳細

Load Balancer 構成で必要となる要件詳細を記述致します。

1. SSL終端(SSL Termination)

  1. ロードバランサーでSSL証明書をインストールし、SSL/TLSの復号を行う。
  2. クライアントからの通信はHTTPSで受け付け、ロードバランサーからバックエンドにはHTTPを使用。

2. 負荷分散アルゴリズム

  1. ラウンドロビンでの負荷分散
  2. クッキー(Cookie)ベースのセッション維持(セッション・アフィニティー)が必要で、同一 Client のアクセスを同一ノードへ振り分ける機能を有しているか確認が必要。

3. バックエンドサーバー(8080)に転送するヘッダや追加処理

X-Forwarded-Proto
LBがバックエンドサーバーに転送する際に、リクエストが https である事を識別させるヘッダ項目

X-Forwarded-For
LBがバックエンドサーバーに転送する際に、クライアントのIPアドレスを識別させるヘッダ項目

WebSocketのUpgradeヘッダーの処理
HTTPリクエストを解析し、Upgrade ヘッダーを検出すると、それをトリガーにTCP切り替え

昨今のロードバランサー(AWS/GCP/Azure)はデフォルトで設定されている標準的な内容

4. バックエンドサーバとの通信

ロードバランサーから各CAMServerへの通信は以下のプロトコルとポートで行う。

  • プロトコル: HTTP
  • ポート番号: 8080
  • 接続例: http://HOSTNAME:8080/

5. ヘルスチェック(Health Check)

  1. ロードバランサーは次のURLを定期的にリクエストし、条件を満たす場合に「正常」と判定。
  2. ヘルスチェックURL: http://HOSTNAME:8080/CAMServer/healthcheck
  3. ヘルスチェックの条件: HTTPステータスコード: 200レスポンスボディ: {“status”:200}

6. サーバ間データ同期のため、通信許可

  1. リアルタイムなデータ(ユーザプレゼンス状態、メッセージ、チャットルーム等)更新はCAMServer間で同期を行うためFirewall などでサーバ間の通信許可が必要。
  2. サーバ間接続URLは、iniファイルの cam.clusterHosts で定義
    • 例)cam.clusterHosts=camserver1:8080;camserver2:8080;camserver3:8080

※ camserver1 でユーザ情報が更新された場合、以下URLに接続しデータ同期を行う
http://camserver2:8080/CAMServer/syncWebSocketData
http://camserver3:8080/CAMServer/syncWebSocketData

  • URLをコピーしました!
目录