=====================================
UPNS 설치가이드
=====================================
1. 개요
=======
1-1. 목적
---------
본 문서는 (주)유라클에서 제공하는 모피어스 제품군 중 “MSP Server
Platform - Push”의 원활한 설치를 할 수 있도록 제품 설치에 관련한
설명과 수행 절차를 나타내는 것을 목적으로 한다. 본 문서는 Push 기능
중 UPNS 설치에 관한 내용을 기술하고 있다.
1-2. 고려 사항
--------------
본 문서는 성능 개선, 기능 추가 등의 사항으로 내용이 변경 될 수 있다.
2. UPNS 서버 구성도
===================
2-1. UPNS 서버 구성 개념도
--------------------------
|image1|
2-2. 구성 요소
--------------
+----------+--------------------------------------------------------+-----------------------+
| Server | 주요 역할 | 주요 기능 |
+==========+========================================================+=======================+
| UPNS | 메세지 전송기능 및 단말기 접속을 담당 하는 전용 서버 | 세션 관리 |
| | | |
| | | 단말로 메세지 전송 |
| | | |
| | | 접속 유지 |
| | | |
| | | 현재 접속자 수 조회 |
| | | |
| | | 발송 메시지 수 조회 |
| | | |
| | | 수신 메시지 수 조회 |
| | | |
| | | 로그 저장 |
+----------+--------------------------------------------------------+-----------------------+
3. 설치 준비
============
3-1. 설치 전 필요한 프로그램
----------------------------
설치를 하기 전 다음 사항이 준비 되어야 한다.
+----------------+-----------------------+----------------+
| 항목 | 설명 | 비고 |
+----------------+-----------------------+----------------+
| 개발툴및유틸 | JAVA 1.6.0\_26 이상 | 권장 1.8 |
+----------------+-----------------------+----------------+
3-2. 시스템 환경 설정(Linux 기준)
---------------------------------
UPNS 서버가 50만 유저를 접속 하기 위해서는 다음 사항이 설정 되어야
한다.
+---------------------------------------------------------------------------------------------------+
| **# vi /etc/security/limits.conf** |
| |
| > 아래 구문 추가(계정이 morpheus 라는 가정, 실제 계정 반영필요) |
| |
| morpheus soft nproc 819200 |
| |
| morpheus hard nproc 819200 |
| |
| morpheus soft nofile 1048570 |
| |
| morpheus hard nofile 1048570 |
+---------------------------------------------------------------------------------------------------+
| **# vi /etc/security/limits.d/20-nproc.conf** |
| |
| > 동일 디렉토리에 다른 파일이 있을 경우 그 파일도 해당 |
| |
| > \*로 시작하는 구문 아래처럼 주석처리 |
| |
| #* soft nproc 4096 |
+---------------------------------------------------------------------------------------------------+
| **# vi /etc/sysctl.conf** |
| |
| > 최하단에 다음을 추가 |
| |
| net.core.somaxconn=65535 |
| |
| vm.overcommit\_memory=1 |
| |
| net.ipv4.ip\_local\_port\_range = 1024 64000 |
| |
| > 만약, OS 방화벽 iptable, firewall 사용시 아래 다음줄 추가 적용하지만, 아닐 경우 추가 안함 |
| |
| net.nf\_conntrack_max = 500000 |
+---------------------------------------------------------------------------------------------------+
| **# sysctl -p** |
| |
| > 설정 반영 |
+---------------------------------------------------------------------------------------------------+
| **# vi /etc/rc.local** |
| |
| > 최하단에 다음을 추가 |
| |
| echo never > /sys/kernel/mm/transparent\_hugepage/enabled |
+---------------------------------------------------------------------------------------------------+
| **> 아래 명령을 실행(시스템 재기동 없이 적용하기 위함)** |
| |
| # echo never > /sys/kernel/mm/transparent\_hugepage/enabled |
+---------------------------------------------------------------------------------------------------+
| **> CentOS 7.0 이상일 경우 다음도 진행함** |
| |
| # systemctl enable rc-local.service |
+---------------------------------------------------------------------------------------------------+
4. UPNS 설치
============
4-1. UPNS설치
-------------
- 설치를 할 서버에 로그인
- 설치 파일을 설치할 디렉토리에업로드한다.
ex) upns\_3.5.tar.gz
- 압축을 해제한다.
ex) tar xvzf upns\_3.5.tar.gz
4-2. UPNS 파일 목록
-------------------
+-----------------------------+----------------------------------+
| **파일 경로** | **설명** |
+=============================+==================================+
| upns-5.xx.xx-ee.jar | UPNS 데몬 |
+-----------------------------+----------------------------------+
| stop.sh | stop 스크립트 |
+-----------------------------+----------------------------------+
| upns\_start.sh | start 스크립트 |
+-----------------------------+----------------------------------+
| conf/config.xml | upns 설정파일 |
+-----------------------------+----------------------------------+
| conf/ehcache.xml | 캐쉬 설정파일 |
+-----------------------------+----------------------------------+
| conf/logback.xml | upns log 설정파일 |
+-----------------------------+----------------------------------+
| conf/license.cer | 모피어스 라이센스 |
+-----------------------------+----------------------------------+
| conf/license.key | 모피어스 라이센스 |
+-----------------------------+----------------------------------+
5. UPNS의 실행
==============
5-1. 서버 Config파일 설정
-------------------------
$ vi conf/config.xml \*해당 값은 유라클에 문의 후 설정 바랍니다.
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |
| |
| |
| |
| 1883 |
| |
| 8883 |
| |
| |
| |
| |
| |
| 18883 |
| |
| |
| |
| 18880 |
| |
| |
| |
| 1.0.0.1,1.0.0.2 |
| |
| |
| |
| 1.0.0.1,1.0.0.2 |
| |
| 10000 |
| |
| |
| |
| 1000 |
| |
| |
| |
| 30 |
| |
| |
| |
| 5 |
| |
| |
| |
| 10000 |
| |
| |
| |
| 0 |
| |
| |
| |
| 0 |
| |
| |
| |
| 0 |
| |
| |
| |
| 10 |
| |
| |
| |
| 10 |
| |
| |
| |
| 60 |
| |
| |
| |
| 10 |
| |
| |
| |
| Y |
| |
| |
| |
| `*http://ip:port/rcv\_fail\_msg\_ack.ctl`__> |
| |
| `*http://ip:port/rcv\_register\_sent\_ack.ctl`__> |
| |
| |
| |
| 10 |
| |
| |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5-2. Logback 설정
$ vi conf/logback.xml
+-----------------------------------------------------------------------------------------------+
| |
| |
| |
| |
| |
| |
| true |
| |
| |
| |
| ./log/logFile.%d{yyyy-MM-dd-HH}.log |
| |
| 12 |
| |
| |
| |
| |
| |
| %d{HH:mm:ss.SSS} [%thread] %-5level %class - %msg%n |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| %d{HH:mm:ss.SSS} [%thread] %-5level %class - %msg%n |
| |
| |
| |
| |
| |
| < !--해당 경로 수신확인 임시 로그 경로로 고정되어 있습니다. result 경로 수정하지 마세요.--> |
| |
| |
| |
| true |
| |
| |
| |
| ./result/RESULT.%d{yyyy-MM-dd-HHmm}.log |
| |
| 36 |
| |
| |
| |
| |
| |
| %msg%n |
| |
| |
| |
| |
| |
| |
| |
| true |
| |
| |
| |
| ./log/monitor.%d{yyyy-MM-dd-HH}.log |
| |
| 1440 |
| |
| |
| |
| |
| |
| %d{HH:mm:ss.SSS} %msg%n |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+-----------------------------------------------------------------------------------------------+
5-3. Cache 설정
---------------
$ vi conf/ehcache.xml
+----------------------------------------------------------------------------------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------------------------------------------------------------------------------------+
5-4. UPNS 실행
--------------
upns\_start.sh 스크립트 파일을 실행하여 upns를 실행한다.
$./upns\_start.sh
5-5. UPNS 중지
--------------
stopl.sh 스크립트 파일을 실행하여 upns를 중지한다.
$./stop.sh
5-6. UPNS 실행 확인
-------------------
ps–ef \| grep upns 으로upns가 실행 중인지 확인 할 수 있다
6. Appendix
===========
6-1. UPNS 서버 Port 번호
------------------------
+--------------+--------------------+-------------------------------+
| 서버 | Listen | Port 번호 |
+==============+====================+===============================+
| UPNS | Client 요청 | 1883 |
+--------------+--------------------+-------------------------------+
| | 전송 메시지 공유 | 18883 |
+--------------+--------------------+-------------------------------+
| | 모니터링 포트 | 18880 |
+--------------+--------------------+-------------------------------+
6-2. UPNS 서버 로그
-------------------
서버 로그 (logger name="server")
+------------+------------------------------------------+----------------------------------------------+
| 로그레벨 | 로그내용 | 설명 |
+============+==========================================+==============================================+
| DEBUG | CONNECT clientid | 사용자 접속 정보 (사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | SUBSCRIBE topic,clientid | 구독 정보 (토픽, 사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | PUBLISH clientid,topic,msgid | 발송 정보 (수신자 ID, 토픽, msgid) |
+------------+------------------------------------------+----------------------------------------------+
| | PUBLISH subscribe clientid,topic,msgid | 오프라인 발송정보 (수신자 ID, 토픽, msgid) |
+------------+------------------------------------------+----------------------------------------------+
| | PUBACK clientid,msgid | 수신 확인 응답 (사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | PUBACK session check clientid,msgid | 세션체크용 수신 확인 응답(사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | DISCONNECT clientid | 접속종료 (사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | PINGREQ clientid: | PING 수신 (사용자 ID) |
+------------+------------------------------------------+----------------------------------------------+
| | closed clientid | 사용자 접속 종료(네트워크 종료) |
+------------+------------------------------------------+----------------------------------------------+
| | Cache Send fail | 캐쉬 정보 전달 실패 |
+------------+------------------------------------------+----------------------------------------------+
| | Cache send Success | 캐쉬 정보 전달 성공 |
+------------+------------------------------------------+----------------------------------------------+
| | CacheRemove info | 캐쉬 삭제 사용자 정보(다른 서버 전달 성공) |
+------------+------------------------------------------+----------------------------------------------+
| | CacheRemove complete | 캐쉬 삭제 완료 |
+------------+------------------------------------------+----------------------------------------------+
| | Result log send | 로그 전송 내용 |
+------------+------------------------------------------+----------------------------------------------+
| | Log send success | 로그 전달 성공 |
+------------+------------------------------------------+----------------------------------------------+
| | Log send fail | 로그 전달 실패 |
+------------+------------------------------------------+----------------------------------------------+
| | Monitor request host:$host,uri:$ | 모니터링 API 호출 정보 |
+------------+------------------------------------------+----------------------------------------------+
| INFO | duplicate login id | 중복 로그인 정보 |
+------------+------------------------------------------+----------------------------------------------+
| | VERIONS: | UPNS 버전 정보 |
+------------+------------------------------------------+----------------------------------------------+
| | Upns cache server started at port | 캐쉬 서버 포트(메시지 전송 결과 공유) |
+------------+------------------------------------------+----------------------------------------------+
| | upns socket server started at port | MQTT 서버 시작 기본포트 1883 |
+------------+------------------------------------------+----------------------------------------------+
| | Upns monitor server started at port | 모니터링 리슨 포트 |
+------------+------------------------------------------+----------------------------------------------+
| | Server stopping | 서버 중지중..(캐쉬 정보 파일로 저장) |
+------------+------------------------------------------+----------------------------------------------+
| | Server stopped | 서버 중지 |
+------------+------------------------------------------+----------------------------------------------+
| | connect cache server | 캐쉬 서버 접속 성공 |
+------------+------------------------------------------+----------------------------------------------+
| | connect fail cache server | 캐쉬 서버 접속 실패 |
+------------+------------------------------------------+----------------------------------------------+
| | Result log connect try server: | 로그 서버 접속 시도 정보 |
+------------+------------------------------------------+----------------------------------------------+
| | Result log connect server | 로그 서버 접속 성공 |
+------------+------------------------------------------+----------------------------------------------+
| | Reslut log connect fail server | 로그 서버 접속 실패 |
+------------+------------------------------------------+----------------------------------------------+
| ERROR | subscribe exception clientid | 구독 프로토콜 예외발생 |
+------------+------------------------------------------+----------------------------------------------+
| | Result log Exception msg | 전송 결과 전달중 예외 발생 |
+------------+------------------------------------------+----------------------------------------------+
| | broker exception clientid | MQTT 접속 예외 발생 |
+------------+------------------------------------------+----------------------------------------------+
6-3. 모니터 로그 (logger name="monitor")
----------------------------------------
+---------------------+-------------------------+-------------------------------+
| Monitor 로그 정보 | 설명 | |
+=====================+=========================+===============================+
| INFO | CPU Usage | cpu 사용률 |
+---------------------+-------------------------+-------------------------------+
| | current session count | 현재 세션 개수 접속자수 |
+---------------------+-------------------------+-------------------------------+
| | current topic count | 현재 토픽 구독 개수 |
+---------------------+-------------------------+-------------------------------+
| | publish count | publish 요청 받은 개수 |
+---------------------+-------------------------+-------------------------------+
| | puback count | publish 후 puback 수신 개수 |
+---------------------+-------------------------+-------------------------------+
| | offline cache user | 발송 실패 사용자 수 |
+---------------------+-------------------------+-------------------------------+
| | publish cache count | publish 후 응답 대기 건수 |
+---------------------+-------------------------+-------------------------------+
.. |image1| image:: img/upns-1.png
:width: 5.54254in
:height: 2.79055in