Files
caliverse_doc/05. Tool/서버 관제 시스템 개발 기획서.md
2025-05-01 07:27:54 +09:00

9.3 KiB
Raw Permalink Blame History

개요

  • 서버 관제 시스템은 각각의 서버 각종 상태들을 조회하고, 서버 프로세스를 실행, 종료를 제어하고, 서버 스케일 축소, 확장을 제어하며, 일부 서버 설정 정보를 전달 한다.
  • 서버 관제 시스템 분산 구조를 설계 한다.
  • 주요 관제 기능을 정의 한다.

주요 기능

  1. 관제 기능 로그 남기기
1.1. 관제 기능의 주요 행위는 관제 서버에 로그로 남긴다.	
- 개발 로그를 nLog Library를 활용하여 파일 작성 및 AWS CloudWatch로 로그를 송신 한다.
  1. 서버 프로세스 제어 하기 - 서버 그룹 단위를 지정시 해당 그룹의 프로세스들만 제어 한다.

    2.1. 시작

    2.2. 재시작

    2.3. 정지 (유저의 정상적인 종료가 완료되면 서버를 종료 한다.)

    2.4. 강제종료 (유저의 Graceful 종료를 유도한 후 유저의 접속 종료가 완료되면 서버를 종료 한다)

  2. 서버 정보 보기

3.1. 공통 서버 정보
- 전체 서버 운영 갯수, 전체동접자수, 런닝타임 기준 최대 전체동접자수, 1초 이상 응답 지연 서버 갯수, 1초 이상 응답 지연 서버비율

3.2. 서버별 공통 기본 정보
- 프로세스 ID, 런닝타임, 현재 클라이언트 연결 갯수, 비정상종료 횟수, 자동 재시작 횟수, CPU 사용률(%), 메모리 사용량(G/M/Bytes),사용률(%), 메모리 미사용량(MB...),미사용률(%), 자동시작상태(bool)

3.3. 서버별 공통 상세 정보
- 런닝타임 기준 최대 클라이언트 연결 갯수, 런닝타임 기준 최대 CPU 사용률(%), 런닝타임 기준 최대 메모리 사용량(G/M/Bytes),사용률(%), 런닝타임 기준 최저 메모리 미사용량(G/M/Bytes),미사용률(%)

3.4. 서버별 컨텐츠 정보
- LoginServer : 1분 동안 최대 로그인 처리 횟수, DB 최대 응답 지연 시간, 1초 이상 응답 지연 횟수

- GameServer : 1분 동안 최대 로그인 처리 횟수, DB 최대 응답 지연 시간, 1초 이상 응답 지연 횟수,

                           현재 Room 갯수, 런닝타임 기준 최대 Room 갯수
  1. 리소스 패치 기능
4.1. 환경 설정 파일 패치
- 서버 컨피그 파일을 패치 한다.
  1. 서버 스케일 확장 및 축소 하기
5.1. 예비 서버용 EC2 Instance 관리 하기
- 예비 서버 운영 비율 설정 기능 추가  

5.2. 서버 스케일 확장 하기
- 스케일 정책이 적용될 해당 서버들이 확장 정책 조건에 충족될 경우 서버를 추가 한다.
- 확장 정책의 조건의 예 : 접속자수의 비율 70% 이하 서버가 없는 경우, CPU 점유율이 모두 60% 이상인 경우
- 예비 서버(AWS EC2 Instance)가 있을 경우 주요 설정들을 재설정 시키고 Instance를 활성화하는 기능을 추가 한다.

5.3. 서버 스케일 축소 하기
- 스케일 정책이 적용될 해당 서버들이 축송 정책 조건에 충족될 경우 축소할 서버의 유저 접속을 차단 시키고, 유저들을 접속자가 적은 서버로 접속을 유도 한다.
- 해당 서버의 접속자수가 0이 된다면 서버를 예비 서버로 전환 한다.
- 예비 서버 운영 비율을 초과할 경우 가장 오래된 예비 서버를 제거 한다.
  1. 서버 프로그램 패치 하기
6.1. 배포 FTP 서버에서 다운로드 받기
- 패치 내용 UI 출력
- 패치 기능을 추가 (FTP에 업로드되어 있는 패치 내용을 패치 !!!)
- ControlAgent 패치 기능을 추가
  1. 서버 컨텐츠 제어 하기
7.1. 접속자 제어 하기

  7.1.1. 서버 접속 차단 시키고, 모든 접속자를 안전하게 로그아웃 시키기 (Access Block & Graceful Kick All)
  - 접속을 차단 시키기 모든 접속자를 안전하게 로그아웃 처리 시킨다.
      7.1.2. 특정 서버를 접속 차단 시키기(Server Access Block)
  - 특정 서버의 접속을 차단만 시킨다.
  1. 유저 접속 차단 설정 기능
8.1. IP 대역 기반 접속 차단 기능

  8.1.1. 전처리 상태
  - 각각의 서버 상태는 서비스 전일 경우 기본적으로 유저 접속 차단 상태
  - 서비스 후일 경우 즉시 적용

  8.1.2. 처리 절차 
  - 관제 시스템에서 AWS 방화벽 선택
  - 관제 시스템에서 AWS 방화벽 선택 정보를 IP 대역 정보를 구성
  - 관제 시스템에서 각각의 대상 서버에게 IP 대역 정보 적용 요청
  1. RPC(Remote Procedure Call) 실행 하기
9.1. RPC 목록 요청
- 관제 서버에게 약속된 RPC 목록을 요청하여 RPC 목록을 갱신 한다.

9.2. RPC를 선택하여 실행
- 선택한 RPC를 관제 서버에게 실행 요청 => 해당 에이전트에게 요청 및 그 결과를 반환 한다.
  1. 구조 10.1. 서버 분산 구조 파일 참조
  • URL : svn://10.20.20.9/trunk/Caliverse/Server/Doc/03. 서버구조/Metaverse_구성도.pdf.pptx

FrontEnd 주요 입력/출력

  1. 계정 등록 창 - 개발팀에 요청하여 등록

  2. 로그인 창 - EditBox(아이디/비밀번호), Button(로그인), Button(닫기)

  3. 메인 창

3.1. 로그 출력 목록 View (활성화/비활성화)
- 메인창 하단에 배치 한다.
- 개발 로그 및 관제 로그를 출력 한다. (출력여부설정)
- 로그 포멧 정보를 참조 한다.  

3.2. 상단 메뉴

  3.2.1. 버전 정보
  
  3.2.2. 설정 파일 열기
  
  3.2.3. 설정 파일 다시 읽기
  
  3.2.4. 서버 스케일 관리창 보기
  
  3.2.5. 서버 패치 하기
  
  3.2.6. RPC 목록 보기  
  - RPC 목록을 출력
  - PRP 목록중 선택하면 실행

3.3. 서버 주요 속성 정보 목록
- 서버 정보 보기를 참조 한다.
- 주요 속성 정보를 개별 출력 한다.

3.4. 서버 정보 목록 TreeView
- 서버간의 그룹관계 or 종속관계가 있을 경우 트리 구조로 출력 한다.
- 서버를 선택할 수 있다. (팝업 메뉴 활성화)
- 팝업 메뉴 : 서버 프로세스 제어 기능 목록, 컨텐츠 정보, 컨텐츠 제어 목록 출력
- 서버 목록에서 서버 선택시 선택된 서버 정보와 하위 서버 정보 목록만 화면 출력 된다.

3.5. 서버별 상세 정보 목록 View
- 서버 정보 보기를 참조 한다.
- 여러개의 서버를 모니터링할 수 있게 멀티 셀랙션 기능을 제공 한다.

3.6. 서버별 컨텐츠 정보 목록 View
- 서버 정보 보기를 참조 한다.
- 서버별 컨텐츠 정보를 모니터링할 수 있게 한다. (선택적 모니터링을 목적)

3.7. Control Agent 관리 View

  3.7.1. Agent 정보
  - Name, ConnectionState, Id, AWS-InstanceId, InstanceName, ServerName, ServerCount
  - Agent 정보에 특정 이벤트를 주면 서버 목록 View를 활성화해주고 연동되는 서버에 포커스를 설정해 주고 View 내에서 새로 기준 중앙에 위치 시킨다.

  3.7.2. Agent 목록을 출력 한다. 

3.8. 서버 스케일 관리 View 

  3.8.1. 주요 정보
  - 기본 ServerType별 개수 설정 (서버 런칭시 생성 서버별 개수)
  - 유저 접속율 기반 오토 스케일링 설정 (In/Out)
  - CPU 사용율 기반 오토 스케일링 설정 (In/Out)
  - 스케일링 정책이 반영되기 위한 조건의 최소 유지 시간

  3.8.2. 요구 사항
  - 모든 컨트롤을 고정 크기로 설정하고, 메인창 크기가 줄더래도 각각의 컨트롤 크기는 줄지 않는다.

서버 관제 Tool UI 구성

1. UI 컨트롤에 대한 공통 정책
- 컨트롤에 출력되는 정보의 길이 기준으로 자동 리사이징 되어야 한다.
- 자식 컨트롤들이 메인 프레임의 사이즈에 영향을 받아 리사이징 되면 않된다.
- 메인 프레임 보다 자식 프레임이 크다면 자식 프레임을 스크롤링 할 수 있어야 한다.

2. 서버 관제툴 버전 정보

3. 메뉴바 : 상단 메뉴 참조

4. 주요 정보 컨트롤 : 서버 주요 속성 정보 참조
- 독립적인 컨트롤을 사용하여 메뉴바 하단에 위치하여 정보를 출력할 수 있게 처리 한다.
- 컨트롤 설정된 이름을 기준으로 왼쪽 => 오른쪽 방향으로 정렬 된다.
- 일정 개수의 쌓이면 다음 라인으로 위치시켜 출력 한다.
- 중요한 정보 볼드로 표기하고, 정책적 기준에 의해 오류가 발생하면 볼드 및 Red Color로 표기 한다.

5. 서버 그룹 정보 트리 컨트롤 : 서버 정보 목록 TreeView 참조
- 트리의 노드를 출력시 노드와 노드 사이의 새로 기준 간격을 최소한으로 줄인다.

6. 서버 목록 리스트 컨트롤 : 서버별 상세 정보 목록 View 참조
- 서버별 상세 정보는 개별적인 위치를 할당 시켜 출력될 수 있도록 처리 한다.

7. 서버별 컨텐츠 정보 목록 리스트 컨트롤 : 서버별 컨텐츠 정보 목록 View 참조
- 컬럼 구분없이 Json Object 기반으로 출력 한다.

8. 로그 목록 리스트 컨트롤 : 로그 출력 목록 View 참조