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