MENU

CAMServer 이중화 및 부하 분산

목차

이중화 및 부하 분산 정보

CAMServer의 Ultimate 계획에서,온프레미스 환경에서 매우 쉽게웹 서버, Video 서버의 중복화 및 부하 분산을 할 수 있습니다. 이것에 의해, 1대의 서버가 다운해도 서비스를 계속시킬 수가 있어, 또 대규모 유저로 이용해도 처리를 분산시켜 퍼포먼스를 열화시키지 않고 서비스를 제공할 수 있게 됩니다.

분산 구성의 CAMServer 하지만 실시간 커뮤니케이션이 가능합니다. 예를 들어,CAMServer1 에 연결된 클라이언트는CAMServer2 에 연결된 다른 클라이언트와 채팅 및 웹 회의가 가능합니다. Video 서버의 부하 분산은 활성 회의 수와 참가자 수에 따라 분산됩니다.

웹 회의의 동시 개최 회의 수는 단순히CAMServer노드를 늘리는 것만으로는 달성할 수 없습니다. 모든 회의가 동일한 VPN 또는 센터 라우터를 중계하지 않도록 네트워크 구성을 고려해야합니다.

중복 및 부하 분산 구성

온-프레미스 요구 수준 비용에 따라 최적의 환경을 구성할 수 있습니다.

소규모 시작 구성

  • 스토리지:CAMServer1 측에 DB/File 을 배치해, CAMServer2 로부터도 참조한다. 이 경우에도 모든 사용자는 실시간으로 데이터가 공유.
  • 백업: 매일 DB / File 데이터를 CAMServer2에 백업해야합니다.
  • 부하 분산: 액세스하는 CAMServer를 부서별로 나누는 것으로 부하 분산이 가능(또는 대기계로 한다).
  • 가용성: 장애 발생 시,웹 앱 버전 사용하면, cam.clusterHosts를 검출해 자동 페일오버가 가능. Disk 장애의 경우백업했다전날까지의 데이터를 보증.
  • 비용: 가장 저렴한 구성. 1대 구성으로 시작하여 부하에 따라 스케일업이 가능.

외부 스토리지(NAS) 구성

  • 스토리지: RAID 구성으로 내구성이 높은 외부 Storage NAS에 DB / File을 배치하고 CAMServer1 / CAMServer2 함께 참조합니다.
  • 백업: RAID 구성에서도 전원・케이스의 고장이나 인위적인 장해를 고려하여 매일 DB/File 데이터의 백업이 필요.
  • 부하 분산: 스몰 스타트 구성과 동일.
  • 가용성: 스몰 스타트 구성과 동일.
  • 비용: 상대적으로 저렴한 구성.

중복된 외부 스토리지 구성

  1. 스토리지: 이중화된 파일 공유 서버(Windows Server Failover Clustering + SAN, AWS S3 등)를 이용하여 Disk 장애에 고가용성을 중시하는 구성.
  2. 백업: 데이터가 자동으로 복제되므로 정책에 따라 백업이 필요하지 않습니다. 다만 인위적인 장해를 고려하는 경우(수동으로 디스크를 삭제한 등), 역시 백업이 필요.
  3. 부하 분산: 스몰 스타트 구성과 동일.
  4. 가용성: 웹 서버는 소규모 시작 구성과 동일합니다. Disk나 케이스의 고장에 의한 장해 발생시에도 자동적으로 전환이 가능.
  5. 비용: 도입 비용이 높다. AWS S3는 저렴하게 구축할 수 있지만, 온프레미스 중시의 경우는 선택할 수 없다.

Load Balancer 구성

  • 스토리지: 소규모 시작 구성 / NAS / SAN 선택 가능.
  • 백업: 소규모 시작 구성 / NAS / SAN과 동일.
  • 부하 분산:CAMServer의 전단에 Load Balancer를 배치하는 것으로, 리던던시·부하 분산이 가능.註) Load Balancer 구성 요구 사항 세부 정보또한 확인하십시오.
  • 가용성: 이중화된 외부 Storage 구성과 조합함으로써 모든 레이어에서 자동 페일오버가 가능.
  • 비용: 도입 비용이 높다.

중복 및 부하 분산 설정

각 분산 서버에서 공통 설정

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 파일로 자기 호스트명을 선두에 기술합니다. 열거 순서는, 기동시의 초기 접속 서버, Video 서버를 선택하는 경우에 영향을 받습니다. 또웹 앱 버전 를 이용하는 것으로 장해 발생시 페일오버 접속이 가능합니다.

cam.clusterHostsDesc

cam.clusterHostsDesc 분산 서버 설명 필드의 주석을 변경할 수 있습니다.

cam.serverDatePath

cam.serverDatePath DB는 업로드된 첨부 파일을 저장할 위치를 지정합니다. 분산된 서버에서 액세스할 수 있는 NAS와 같은 공유 디스크를 지정합니다.
※ 공유 디스크가없는 경우는 서브 CAMServer가 메인의 CAMServer CAMServer/config 폴더를 지정해도 Storage를 공유할 수 있습니다.

cam.enabledSingleProcessingHost

cam.enabledSingleProcessingHost 는 cam.clusterHosts 에 열거한 선두 서버의 호스트명을 지정해 주세요. 배치 처리 등 단일 호스트에서만 가동할 수 있는 처리는, cam.enabledSingleProcessingHost 에 정의된 호스트인가 어떤가를 판정하고 나서 실행하는 목적으로 설정합니다.

하위 서버만 설정

cam.disableLANNetwork=true 를 설정하면 LAN용 TCP/UDP 연결을 비활성화할 수 있습니다. 2번째 이후의 서브 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을(를) 확인했습니다!
목차