=====================================
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 | |
+----------------+------------------+--------+
3-2. 시스템 환경 설정(Linux 기준)
---------------------------------
UPNS 서버가 100만 유저를 접속 하기 위해서는 다음 사항이 설정 되어야
한다.
$cat /etc/sysctl.conf
# General gigabit tuning:
net.core.rmem\_max = 16777216
net.core.wmem\_max = 16777216
net.ipv4.tcp\_rmem = 4096 87380 16777216
net.ipv4.tcp\_wmem = 4096 65536 16777216
net.ipv4.tcp\_syncookies = 1
#this gives the kernel more memory for tcp
#which you need with many (100k+) open socket connections
net.ipv4.tcp\_mem = 50576 64768 98152
net.core.netdev\_max\_backlog = 2500
# I was also masquerading the port comet was on, you might not need
this
net.ipv4.netfilter.ip\_conntrack\_max = 1048576
$ cat /etc/security/limits.conf
\* soft nproc 819200
\* hard nproc 819200
\* soft nofile 1048570
\* hard nofile 1048570
# process별 port 제한 설정
$ vi /etc/sysctl.conf
net.ipv4.ip\_local\_port\_range=1024 64000
(1024~64000 포트 사용가능)
$ sysctl -p
4. UPNS 설치
==============
4-1. UPNS설치
---------------
- 설치를 할 서버에 로그인
- 설치 파일을 설치할 디렉토리에업로드한다.
ex) upns\_3.5.tar.gz
- 압축을 해제한다.
ex) tar xvzf upns\_3.5.tar.gz
4-2. UPNS 파일 목록
-------------------
+-----------------------------+----------------------------------+
| **파일 경로** | **설명** |
+=============================+==================================+
| Upns.jar | UPNS 데몬 |
+-----------------------------+----------------------------------+
| Stop.sh | stop 스크립트 |
+-----------------------------+----------------------------------+
| Upns\_start.sh | Start 스크립트 |
+-----------------------------+----------------------------------+
| Conf/config.xml | Upns 설정파일 |
+-----------------------------+----------------------------------+
| Conf/ehcache.xml | 캐쉬 설정파일 |
+-----------------------------+----------------------------------+
| Conf/logback.xml | Upns log 설정파일 |
+-----------------------------+----------------------------------+
| Conf/server\_keystore.jks | 서버 keystore (파일 경로 고정) |
+-----------------------------+----------------------------------+
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가 실행 중인지 확인 할 수 있다
5-7. UPNS 버전 확인
-------------------
$java –jar upns.jar –version
UPNS Verion : 3.0.1
6. Appendix
=================
6-1. UPNS 설치 확인
-------------------
6-1-1. 메시지 수신
^^^^^^^^^^^^^^^^^^
메시지 수신, 전송 툴은 윈도우용입니다.
Cmd > mosquitto\_sub.exe -h “serverip” -p 1883 -t test -q 1
Test\_message
메시지 수신 대기 상태에서 메시지 전송을 하면 메시지 전달을 확인 할 수
있다.
6-1-2. 메시지 전송
^^^^^^^^^^^^^^^^^^^^^^
Cmd > mosquitto\_pub.exe -h “serverip” -p 1883 -t test -m test\_message
-q 0
6-2. UPNS 서버 Port 번호
------------------------
+--------------+--------------------+-------------------------------+
| 서버 | Listen | Port 번호 |
+==============+====================+===============================+
| UPNS | Client 요청 | 1883 |
+--------------+--------------------+-------------------------------+
| | 전송 메시지 공유 | 18883 |
+--------------+--------------------+-------------------------------+
| | 모니터링 포트 | 18880 |
+--------------+--------------------+-------------------------------+
| Result LOG | UPNS | 10000(success), 10001(fail) |
+--------------+--------------------+-------------------------------+
6-3. 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-4. 모니터 로그 (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 후 응답 대기 건수 |
+---------------------+-------------------------+-------------------------------+
6-5. SSL 통신을 위한 keystore, truststore 생성
----------------------------------------------
패스워드는 msppush 로 설정
cmd> keytool -genkeypair -alias upns -keyalg RSA -validity 36000
-keystore server\_keystore.jks
cmd> keytool -export -alias upns -keystore server\_keystore.jks -rfc
-file selfsignedcert.cer
cmd> keytool -import -alias upns -file selfsignedcert.cer -keystore
upns\_trust.jks
.. |image1| image:: img/upns-1.png
:width: 5.54254in
:height: 2.79055in