207 lines
9.3 KiB
Markdown
207 lines
9.3 KiB
Markdown
### 개요
|
||
- 서버 관제 시스템은 각각의 서버 각종 상태들을 조회하고, 서버 프로세스를 실행, 종료를 제어하고, 서버 스케일 축소, 확장을 제어하며, 일부 서버 설정 정보를 전달 한다.
|
||
- 서버 관제 시스템 분산 구조를 설계 한다.
|
||
- 주요 관제 기능을 정의 한다.
|
||
|
||
|
||
|
||
|
||
### 주요 기능
|
||
1. 관제 기능 로그 남기기
|
||
|
||
1.1. 관제 기능의 주요 행위는 관제 서버에 로그로 남긴다.
|
||
- 개발 로그를 nLog Library를 활용하여 파일 작성 및 AWS CloudWatch로 로그를 송신 한다.
|
||
|
||
2. 서버 프로세스 제어 하기
|
||
- 서버 그룹 단위를 지정시 해당 그룹의 프로세스들만 제어 한다.
|
||
|
||
2.1. 시작
|
||
|
||
2.2. 재시작
|
||
|
||
2.3. 정지 (유저의 정상적인 종료가 완료되면 서버를 종료 한다.)
|
||
|
||
2.4. 강제종료 (유저의 Graceful 종료를 유도한 후 유저의 접속 종료가 완료되면 서버를 종료 한다)
|
||
|
||
3. 서버 정보 보기
|
||
|
||
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 갯수
|
||
|
||
4. 리소스 패치 기능
|
||
|
||
4.1. 환경 설정 파일 패치
|
||
- 서버 컨피그 파일을 패치 한다.
|
||
|
||
5. 서버 스케일 확장 및 축소 하기
|
||
|
||
5.1. 예비 서버용 EC2 Instance 관리 하기
|
||
- 예비 서버 운영 비율 설정 기능 추가
|
||
|
||
5.2. 서버 스케일 확장 하기
|
||
- 스케일 정책이 적용될 해당 서버들이 확장 정책 조건에 충족될 경우 서버를 추가 한다.
|
||
- 확장 정책의 조건의 예 : 접속자수의 비율 70% 이하 서버가 없는 경우, CPU 점유율이 모두 60% 이상인 경우
|
||
- 예비 서버(AWS EC2 Instance)가 있을 경우 주요 설정들을 재설정 시키고 Instance를 활성화하는 기능을 추가 한다.
|
||
|
||
5.3. 서버 스케일 축소 하기
|
||
- 스케일 정책이 적용될 해당 서버들이 축송 정책 조건에 충족될 경우 축소할 서버의 유저 접속을 차단 시키고, 유저들을 접속자가 적은 서버로 접속을 유도 한다.
|
||
- 해당 서버의 접속자수가 0이 된다면 서버를 예비 서버로 전환 한다.
|
||
- 예비 서버 운영 비율을 초과할 경우 가장 오래된 예비 서버를 제거 한다.
|
||
|
||
6. 서버 프로그램 패치 하기
|
||
|
||
6.1. 배포 FTP 서버에서 다운로드 받기
|
||
- 패치 내용 UI 출력
|
||
- 패치 기능을 추가 (FTP에 업로드되어 있는 패치 내용을 패치 !!!)
|
||
- ControlAgent 패치 기능을 추가
|
||
|
||
7. 서버 컨텐츠 제어 하기
|
||
|
||
7.1. 접속자 제어 하기
|
||
|
||
7.1.1. 서버 접속 차단 시키고, 모든 접속자를 안전하게 로그아웃 시키기 (Access Block & Graceful Kick All)
|
||
- 접속을 차단 시키기 모든 접속자를 안전하게 로그아웃 처리 시킨다.
|
||
7.1.2. 특정 서버를 접속 차단 시키기(Server Access Block)
|
||
- 특정 서버의 접속을 차단만 시킨다.
|
||
|
||
8. 유저 접속 차단 설정 기능
|
||
|
||
8.1. IP 대역 기반 접속 차단 기능
|
||
|
||
8.1.1. 전처리 상태
|
||
- 각각의 서버 상태는 서비스 전일 경우 기본적으로 유저 접속 차단 상태
|
||
- 서비스 후일 경우 즉시 적용
|
||
|
||
8.1.2. 처리 절차
|
||
- 관제 시스템에서 AWS 방화벽 선택
|
||
- 관제 시스템에서 AWS 방화벽 선택 정보를 IP 대역 정보를 구성
|
||
- 관제 시스템에서 각각의 대상 서버에게 IP 대역 정보 적용 요청
|
||
|
||
9. RPC(Remote Procedure Call) 실행 하기
|
||
|
||
9.1. RPC 목록 요청
|
||
- 관제 서버에게 약속된 RPC 목록을 요청하여 RPC 목록을 갱신 한다.
|
||
|
||
9.2. RPC를 선택하여 실행
|
||
- 선택한 RPC를 관제 서버에게 실행 요청 => 해당 에이전트에게 요청 및 그 결과를 반환 한다.
|
||
|
||
10. 구조
|
||
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 참조 |