冗余和负载平衡
在 CAMServer 的终极计划中、在内部部署环境中非常简单可以进行Web服务器和视频服务器的冗余和负载平衡。这样,即使一台服务器宕机,服务也能继续,即使有大量用户使用,也可以在不降低性能的情况下分散处理并提供服务。
分布式配置 CAMServer
但实时通信是可能的。例如CAMServer1
客户已连接到CAMServer2
您可以与连接到 的另一个客户端聊天或召开网络会议。视频服务器负载平衡是根据活动会议数量和参与用户数量执行的。
同时举行的网络会议的数量很简单CAMServer
这不能通过简单地增加节点数量来实现。还需要考虑网络配置,以便所有会议不会通过同一 VPN 或中心路由器进行中继。
冗余和负载平衡配置
您可以根据您公司的要求级别和成本配置最佳环境。
小型启动配置
- 贮存:将 DB/File 放置在 CAMServer1 端,并从 CAMServer2 引用它。即使在这种情况下,所有用户都可以实时共享数据。
- 备份:每天需要将DB/File数据备份到CAMServer2上。
- 负荷分配:通过将访问的CAMServer按部门划分(或使其成为备用系统),可以进行负载分配。
- 可用性:当发生故障时,网络应用程序版本 如果你使用
cam.clusterHosts.
检测和自动故障转移。如果磁盘出现故障备份已完成保证数据截至前一天。 - 成本: 最便宜的配置。您可以从单个设备配置开始,然后根据负载进行扩展。
外部存储 (NAS) 配置
- 存储:将数据库/文件放置在 RAID 配置中的高度耐用的外部存储 NAS 上,并引用 CAMServer1 和 CAMServer2。
- 备份:即使使用 RAID 配置,也需要每天备份 DB/文件数据,以应对电源/外壳故障和人为故障。
- 负荷分配:与小启动配置相同。
- 可用性:与小启动配置相同。
- 成本:相对便宜的配置。
冗余外部存储配置
- 存储:通过使用冗余文件共享服务器(Windows Server 故障转移集群 +SAN、AWS S3 等)强调针对磁盘故障的高可用性的配置。
- 备份:数据会自动复制,因此根据策略不需要备份。但是,如果您考虑人为故障(例如手动擦除磁盘),您仍然需要备份。
- 负荷分配:与小启动配置相同。
- 可用性:web服务器与小启动配置相同。即使由于磁盘或外壳故障而发生故障,也可以进行自动切换。
- 成本: 引进成本高。 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)
- ロードバランサーでSSL証明書をインストールし、SSL/TLSの復号を行う。
- クライアントからの通信はHTTPSで受け付け、ロードバランサーからバックエンドにはHTTPを使用。
2. 負荷分散アルゴリズム
- ラウンドロビンでの負荷分散
- クッキー(Cookie)ベースのセッション維持(セッション・アフィニティー)が必要で、同一 Client のアクセスを同一ノードへ振り分ける機能を有しているか確認が必要。
3. バックエンドサーバー(8080)に転送するヘッダや追加処理
X-Forwarded-Proto
LBがバックエンドサーバーに転送する際に、リクエストが https である事を識別させるヘッダ項目
X-Forwarded-For
LBがバックエンドサーバーに転送する際に、クライアントのIPアドレスを識別させるヘッダ項目
WebSocketのUpgradeヘッダーの処理
HTTPリクエストを解析し、Upgrade ヘッダーを検出すると、それをトリガーにTCP切り替え
4. バックエンドサーバとの通信
ロードバランサーから各CAMServerへの通信は以下のプロトコルとポートで行う。
- プロトコル: HTTP
- ポート番号: 8080
- 接続例: http://HOSTNAME:8080/
5. ヘルスチェック(Health Check)
- ロードバランサーは次のURLを定期的にリクエストし、条件を満たす場合に「正常」と判定。
- ヘルスチェックURL: http://HOSTNAME:8080/CAMServer/healthcheck
- ヘルスチェックの条件: HTTPステータスコード: 200レスポンスボディ: {“status”:200}
6. サーバ間データ同期のため、通信許可
- リアルタイムなデータ(ユーザプレゼンス状態、メッセージ、チャットルーム等)更新はCAMServer間で同期を行うためFirewall などでサーバ間の通信許可が必要。
- サーバ間接続URLは、iniファイルの cam.clusterHosts で定義
- 例)cam.clusterHosts=camserver1:8080;camserver2:8080;camserver3:8080
※ camserver1 でユーザ情報が更新された場合、以下URLに接続しデータ同期を行う
http://camserver2:8080/CAMServer/syncWebSocketData
http://camserver3:8080/CAMServer/syncWebSocketData