===================================== 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