===================================== PUSH 구성 ===================================== 1. 개요 =============== 본 문서는 (주)유라클에서 제공하는 모피어스 제품군 중 "Server Platform - Push"의 원활한 설치를 할 수 있도록 제품 설치에 관련한 설명과 수행 절차를 나타내는 것을 목적으로 한다. 본 문서는 기본 구성으로 안내하며, 서버 구성에 따라 내용이 변경될 수 있다. :download:`download [모피어스 PUSH5.x(public) 구성요청사항] ` :download:`download [모피어스 PUSH5.x(private) 구성요청사항] ` 1-1. 참고 ------------------ - Public: FCM, APNS 구성 - Private: UPNS+FCM, APNS 구성 - FCM은 DOZMODE 해제를 위한 Dummy 발송용으로 사용 2. PUSH5.x 구성도 (Public 전용)(단일구성) ========================================= |image1| 2-1. 서비스 구성 별 요청 및 확인사항 ------------------------------------ 2-1-1. DB Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) DB 계정 - morpheus PUSH 데이터 정보 관리를 위한 별도 계정을 구성한다. 2) TABLE 및 데이터 설치 - 방문 설치 시 직접 DB 에 스크립트 실행하여 설치한다. - 다만 프로젝트의 요청 시 실행 스크립트를 만들어 전달하여 담당자 통하여 처리 가능하다. 3) DB charset & 인코딩 - 세팅이 필요한 경우 UTF-8 로 설정한다. 2-1-2. Web Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC web 서비스 구성 사항 - 서비스 포트 : 80 또는 443 (포트 변경 가능하며 443의 경우 SSL 적용 시, 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 2) Push Admin web 서비스 구성 사항 - 서비스 포트 : 81 또는 444 (포트 변경 가능하며 444의 경우 SSL 적용 시 , 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 2-1-3. WAS server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC 컨테이너 - 최하 2GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/upmc' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **jeus 의 경우 HTTP LISTENER 구성이 필요하며 포트는 8080(포트 변경가능) 으로한다.** 2) Push Admin 컨테이너 - 최하 1GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/madm' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 3) 상기 생성된 DB 계정에 접속 가능한 JNDI DATASOURCE 구성한다. 4) java - java 의 버전은 1.8로 한다. 5) 인코딩 : UTF-8 6) Redis Memory DB 설치 - 6379 port 서비스 사용 2-1-4. 데이터 저장 스토리지 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Push 첨부데이터 발송 등 web data 를 upload & deploy 가능한 데이터 저장 공간이 필요하다. - 단일 서버인 경우 HDD 에 저장가능하며 이중화 이상인 경우 NAS, ftp(sftp) 를 통한 sync 전송기능 등이 있다. 2-1-5. PUSH 서버 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) 설치/실행 가능한 별도의 계정이 필요하다. 2) DNS 조회 및 세팅 확인 - **DNS 조회를 통해 아래의 도메인이 조회 되어야 한다.** - **APNS : api.push.apple.com, api.development.push.apple.com** - **FCM : fcm-xmpp.googleapis.com** 3) Push Provider Daemon 설치 - 바이너리 소스 배포는 '/app/push/provider' 와 같은 디렉토리 형태로 구성한다. - 데몬 서비스 포트 : 10420 (포트 변경가능) - **APNS 발송을 위해서는 apns push 인증서(.p8) 와 TEAMKEY, KEYID 발급이 선행되어야 한다.** - **FCM 발송을 위해서는 API KEY와 Sender ID 발급이 선행되어야 한다.** 4) java jdk - ava 의 버전은 1.8로 한다. 2-1-6. Push 서비스 구성 시 방화벽 및 요청사항 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | **구간** | **Source IP** | **Destination IP** | **PORT** | **PROTOCOL** | **비고** | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server | Push Server | 10420 | TCP | APNS/FCM 메시지 발송요청 전달 | | | | | | | | | | | | 10421 | | provider 모니터링 접속 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 운영자(개발자)->내부망 | 운영자(개발자) | Was Server | 8080 | TCP | 서비스 모니터링(upmc was) | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Web Server | 80 or 443 | TCP | 스마트폰앱 -> UPMC web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | 운영자(개발자) | Web Server | 81 or 444 | TCP | 운영자(개발자)PC -> Push admin web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server | api.push.apple.com | 443 | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | | api.development.push.apple.com | | | (PROVIDER -> APNS) | | | | | | | | | | | 또는 | | | | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server | fcm-xmpp.googleapis.com | 5235 (Real) | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | | 또는 | 5236 (Test) | | (PROVIDER -> FCM) | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ 3. PUSH5.x 구성도 (Public 전용)(다중구성) ========================================= |image2| 3-1. 서비스 구성 별 요청 및 확인사항 ------------------------------------ 3-1-1. DB Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) DB 계정 - morpheus PUSH 데이터 정보 관리를 위한 별도 계정을 구성한다. 2) TABLE 및 데이터 설치 - 방문 설치 시 직접 DB 에 스크립트 실행하여 설치한다. - 다만 프로젝트의 요청 시 실행 스크립트를 만들어 전달하여 담당자 통하여 처리 가능하다. 3) DB charset & 인코딩 - 세팅이 필요한 경우 UTF-8 로 설정한다. 3-1-2. L4 세팅 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) UPMC Web VIP - UPMC Web 에 접속 가능한 대표 VIP(도메인) 이 필요하다. - L4 에서 UPMC Web VIP:80(443) -> UPMC Web1 IP:80(443), UPMC Web2 IP:80(443) 분배 설정한다. 2) Admin Web VIP - Admin Web 에 접속 가능한 대표 VIP(도메인) 이 필요하다. - L4 에서 Admin Web VIP:81(444) -> Admin Web1 IP:81(444), Admin Web2 IP:81(444) 분배 설정한다. 3-1-3. Web Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC web 서비스 구성 사항 - 서비스 포트 : 80 또는 443 (포트 변경 가능하며 443의 경우 SSL 적용 시, 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 2) Push Admin web 서비스 구성 사항 - 서비스 포트 : 81 또는 444 (포트 변경 가능하며 444의 경우 SSL 적용 시 , 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 3-1-4. WAS server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC 컨테이너 - 최하 2GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/upmc' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **각 컨테이너 세션 클러스터 설정을 한다. 만일 클러스터 설정이 불가능한 경우 web<->was 연동은 cross 연동이 아닌 1:1 방식 연동 설정해야 하며, 이 경우 L4 분배는 Hash 방식으로 한다.** - **jeus 의 경우 HTTP LISTENER 구성이 필요하며 포트는 8080(포트 변경가능) 으로한다.** 2) Push Admin 컨테이너 - 최하 1GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/madm' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **각 컨테이너 세션 클러스터 설정을 한다. 만일 클러스터 설정이 불가능한 경우 web<->was 연동은 cross 연동이 아닌 1:1 방식 연동 설정해야 하며, 이 경우 L4 분배는 Hash 방식으로 한다.** 3) 상기 생성된 DB 계정에 접속 가능한 JNDI DATASOURCE 구성한다. 4) java - java 의 버전은 1.8로 한다. 5) 인코딩 : UTF-8 6) Redis Memory DB 설치 - 6379 port 서비스 사용 7) REDIS Sentinel 설치 - Redis Memory DB 모니터링 및 관리 - 26379 port 사용 - **다중화에서 반드시 Sentinel 은 홀수로 설치가 되어야 한다.** 3-1-5. 데이터 저장 스토리지 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Push 첨부데이터 발송 등 web data 를 upload & deploy 가능한 데이터 저장 공간이 필요하다. - 단일 서버인 경우 HDD 에 저장가능하며 이중화 이상인 경우 NAS, ftp(sftp) 를 통한 sync 전송기능 등이 있다. 3-1-6. PUSH 서버 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) 설치/실행 가능한 별도의 계정이 필요하다. 2) DNS 조회 및 세팅 확인 - **DNS 조회를 통해 아래의 도메인이 조회 되어야 한다.** - **APNS : api.push.apple.com, api.development.push.apple.com** - **FCM : fcm-xmpp.googleapis.com** 3) Push Provider Daemon 설치 - 바이너리 소스 배포는 '/app/push/provider' 와 같은 디렉토리 형태로 구성한다. - 데몬 서비스 포트 : 10420 (포트 변경가능) - **APNS 발송을 위해서는 apns push 인증서(.p8) 와 TEAMKEY, KEYID 발급이 선행되어야 한다.** - **FCM 발송을 위해서는 API KEY와 Sender ID 발급이 선행되어야 한다.** 4) java jdk - ava 의 버전은 1.8로 한다. 5) Redis Sentinel - **Redis Memory DB 의 fail-over 기능이 제대로 동작하려면 3기 이상의 홀수가 서비스 되어야 한다.** 3-1-7. Push 서비스 구성 시 방화벽 및 요청사항 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | **구간** | **Source IP** | **Destination IP** | **PORT** | **PROTOCOL** | **ETC** | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server1 | Push Server1 | 10420 | TCP | APNS/FCM 메시지 발송요청 전달 | | | | | | | | | | Was Server2 | Push Server2 | 10421 | | provider 모니터링 접속 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 운영자(개발자)->내부망 | 운영자(개발자) | Was Server1 | 8080 | TCP | 서비스 모니터링(upmc was) | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Web Server VIP | 80 or 443 | TCP | 스마트폰앱 -> UPMC web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | 운영자(개발자) | Web Server VIP | 81 or 444 | TCP | 운영자(개발자)PC -> Push admin web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | api.push.apple.com | 443 | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | api.development.push.apple.com | | | (PROVIDER -> APNS) | | | | | | | | | | | 또는 | | | | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | fcm-xmpp.googleapis.com | 5235 (Real) | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | 또는 | 5236 (Test) | | (PROVIDER -> FCM) | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->내부 | Was Server1 | Was Server1 | 6379 | TCP | Sentinel -> REDIS | | | | | | | | | | Was Server2 | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->내부 | Was Server1 | Was Server1 | 26379 | TCP | REDIS -> Sentinel | | | | | | | | | | Was Server2 | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | DMZ->내부 | Push Server2 | Was Server1 | 26379 | TCP | Sentinel -> Sentinel | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | DMZ->내부 | Push Server2 | Was Server1 | 6379 | TCP | Sentinel -> REDIS | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server1 | Push Server2 | 26379 | TCP | Sentinel -> Sentinel | | | | | | | | | | Was Server2 | | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ 4. PUSH5.x 구성도 (Private 전용)(단일구성) ========================================== |image3| 4-1. 서비스 구성 별 요청 및 확인사항 ------------------------------------ 4-1-1. DB Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) DB 계정 - morpheus PUSH 데이터 정보 관리를 위한 별도 계정을 구성한다. 2) TABLE 및 데이터 설치 - 방문 설치 시 직접 DB 에 스크립트 실행하여 설치한다. - 다만 프로젝트의 요청 시 실행 스크립트를 만들어 전달하여 담당자 통하여 처리 가능하다. 3) DB charset & 인코딩 - 세팅이 필요한 경우 UTF-8 로 설정한다. 4-1-2. Web Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC web 서비스 구성 사항 - 서비스 포트 : 80 또는 443 (포트 변경 가능하며 443의 경우 SSL 적용 시, 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 2) Push Admin web 서비스 구성 사항 - 서비스 포트 : 81 또는 444 (포트 변경 가능하며 444의 경우 SSL 적용 시 , 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 4-1-3. WAS server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC 컨테이너 - 최하 2GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/upmc' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **jeus 의 경우 HTTP LISTENER 구성이 필요하며 포트는 8080(포트 변경가능) 으로한다.** 2) Push Admin 컨테이너 - 최하 1GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/madm' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 3) 상기 생성된 DB 계정에 접속 가능한 JNDI DATASOURCE 구성한다. 4) java - java 의 버전은 1.8로 한다. 5) 인코딩 : UTF-8 6) Redis Memory DB 설치 - 6379 port 서비스 사용 - 바이너리 소스 배포는 '/app/push/redis' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 7) UPNS sentlistener Daemon 설치 - 바이너리 소스 배포는 '/app/push/sent_listener' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 4-1-4. 데이터 저장 스토리지 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Push 첨부데이터 발송 등 web data 를 upload & deploy 가능한 데이터 저장 공간이 필요하다. - 단일 서버인 경우 HDD 에 저장가능하며 이중화 이상인 경우 NAS, ftp(sftp) 를 통한 sync 전송기능 등이 있다. 4-1-5. PUSH 서버 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) 설치/실행 가능한 별도의 계정이 필요하다. 2) DNS 조회 및 세팅 확인 - **DNS 조회를 통해 아래의 도메인이 조회 되어야 한다.** - **APNS : api.push.apple.com, api.development.push.apple.com** - **FCM : fcm-xmpp.googleapis.com** 3) java jdk - ava 의 버전은 1.8로 한다. 4) 커널 파라메터의 변경이 필요 할 수 있다. - 참고: http://docs.morpheus.co.kr/server/push/push50-ee/msp_push_r50_ee_upns_install.html#linux 5) UPNS Server Daemon 설치 - 바이너리 소스 배포는 '/app/push/upns' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - 데몬 서비스 포트 : 1883 (포트 변경가능) 6) Push Provider Daemon 설치 - 바이너리 소스 배포는 '/app/push/provider' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - 데몬 서비스 포트 : 10420 (포트 변경가능) - **APNS 발송을 위해서는 apns push 인증서(.p8) 와 TEAMKEY, KEYID 발급이 선행되어야 한다.** - **FCM 발송을 위해서는 API KEY와 Sender ID 발급이 선행되어야 한다.** 4-1-6. Push 서비스 구성 시 방화벽 및 요청사항 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | **구간** | **Source IP** | **Destination IP** | **PORT** | **PROTOCOL** | **ETC** | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server | Push Server | 10420 | TCP | APNS/FCM 메시지 발송요청 전달 | | | | | | | | | | | | 10421 | | provider 모니터링 접속 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 운영자(개발자)->내부망 | 운영자(개발자) | Was Server | 8080 | TCP | 서비스 모니터링(upmc was) | | | | | | | | | | | | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server | Push Server | 1883 | TCP | UPNS 메시지 발송요청 전달 | | | | | | | | | | | | 18880 | | UPNS 모니터링 포트 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Web Server | 80 or 443 | TCP | 스마트폰앱 -> UPMC web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | 운영자(개발자) | Web Server | 81 or 444 | TCP | 운영자(개발자)PC -> Push admin web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Push Server | 1883 | TCP | 스마트폰앱 -> UPNS Server | | | | | | | | | | | | | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | api.push.apple.com | 443 | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | api.development.push.apple.com | | | (PROVIDER -> APNS) | | | | | | | | | | | 또는 | | | | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | fcm-xmpp.googleapis.com | 5235 (Real) | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | 또는 | 5236 (Test) | | (PROVIDER -> FCM) | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ 5. PUSH5.x 구성도 (Private 전용)(다중구성) ========================================== |image4| 5-1. 서비스 구성 별 요청 및 확인사항 ------------------------------------ 5-1-1. DB Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) DB 계정 - morpheus PUSH 데이터 정보 관리를 위한 별도 계정을 구성한다. 2) TABLE 및 데이터 설치 - 방문 설치 시 직접 DB 에 스크립트 실행하여 설치한다. - 다만 프로젝트의 요청 시 실행 스크립트를 만들어 전달하여 담당자 통하여 처리 가능하다. 3) DB charset & 인코딩 - 세팅이 필요한 경우 UTF-8 로 설정한다. 5-1-2. L4 세팅 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) UPMC Web VIP - UPMC Web 에 접속 가능한 대표 VIP(도메인) 이 필요하다. - L4 에서 UPMC Web VIP:80(443) -> UPMC Web1 IP:80(443), UPMC Web2 IP:80(443) 분배 설정한다. 2) Admin Web VIP - Admin Web 에 접속 가능한 대표 VIP(도메인) 이 필요하다. - L4 에서 Admin Web VIP:81(444) -> Admin Web1 IP:81(444), Admin Web2 IP:81(444) 분배 설정한다. 5-1-3. Web Server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC web 서비스 구성 사항 - 서비스 포트 : 80 또는 443 (포트 변경 가능하며 443의 경우 SSL 적용 시, 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 2) Push Admin web 서비스 구성 사항 - 서비스 포트 : 81 또는 444 (포트 변경 가능하며 444의 경우 SSL 적용 시 , 운영은 SSL 강력 권고) - URL Pattern 은 Jeus 서버의 경우 '/' 에 대하여 ServiceUri 'uri, ext' 로 jsv 설정한다. - 타 웹서버의 경우도 '/' 에 대하여 모든 URI, 확장자를 jsv 처리한다. 5-1-4. WAS server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) Push UPMC 컨테이너 - 최하 2GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/upmc' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **각 컨테이너 세션 클러스터 설정을 한다. 만일 클러스터 설정이 불가능한 경우 web<->was 연동은 cross 연동이 아닌 1:1 방식 연동 설정해야 하며, 이 경우 L4 분배는 Hash 방식으로 한다.** - **jeus 의 경우 HTTP LISTENER 구성이 필요하며 포트는 8080(포트 변경가능) 으로한다.** 2) Push Admin 컨테이너 - 최하 1GB 이상으로 구성한다.(서비스 사용자 수, 프로젝트 개발소스의 범위에 따라 더 커질 수 있다.) - 바이너리 소스 배포는 '/wasapp/madm' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **각 컨테이너 세션 클러스터 설정을 한다. 만일 클러스터 설정이 불가능한 경우 web<->was 연동은 cross 연동이 아닌 1:1 방식 연동 설정해야 하며, 이 경우 L4 분배는 Hash 방식으로 한다.** 3) 상기 생성된 DB 계정에 접속 가능한 JNDI DATASOURCE 구성한다. 4) java - java 의 버전은 1.8로 한다. 5) 인코딩 : UTF-8 6) REDIS & Redis Sentinel 설치 - Redis Memory DB & 모니터링 및 관리 - 6379, 26379 port 사용 - 바이너리 소스 배포는 '/app/push/redis' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - **다중화에서 반드시 Sentinel 은 홀수로 설치가 되어야 한다.** 7) UPNS sentlistener Daemon 설치 - 바이너리 소스 배포는 '/app/push/sent_listener' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 5-1-5. 데이터 저장 스토리지 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Push 첨부데이터 발송 등 web data 를 upload & deploy 가능한 데이터 저장 공간이 필요하다. - 단일 서버인 경우 HDD 에 저장가능하며 이중화 이상인 경우 NAS, ftp(sftp) 를 통한 sync 전송기능 등이 있다. 5-1-6. PUSH 서버 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1) 설치/실행 가능한 별도의 계정이 필요하다. 2) DNS 조회 및 세팅 확인 - **DNS 조회를 통해 아래의 도메인이 조회 되어야 한다.** - **APNS : api.push.apple.com, api.development.push.apple.com** - **FCM : fcm-xmpp.googleapis.com** 3) java jdk - java 의 버전은 1.8로 한다. 4) 커널 파라메터의 변경이 필요 할 수 있다. - 참고: http://docs.morpheus.co.kr/server/push/push50-ee/msp_push_r50_ee_upns_install.html#linux 5) UPNS Server Daemon 설치 - 바이너리 소스 배포는 '/app/push/upns' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - 데몬 서비스 포트 : 1883 (포트 변경가능) 6) Push Provider Daemon 설치 - 바이너리 소스 배포는 '/app/push/provider' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. - 데몬 서비스 포트 : 10420 (포트 변경가능) - **APNS 발송을 위해서는 apns push 인증서(.p8) 와 TEAMKEY, KEYID 발급이 선행되어야 한다.** - **FCM 발송을 위해서는 API KEY와 Sender ID 발급이 선행되어야 한다.** 7) Redis Sentinel 설치 - **PUSH Server2에만 설치 한다.** - **Redis Memory DB 의 fail-over 기능이 제대로 동작하려면 3기 이상의 홀수 설치를 해야 한다.** - 바이너리 소스 배포는 '/app/push/redis' 와 같은 디렉토리 형태로 구성한다. - 디렉토리 owner 의 경우 '소스관리ID.was계정그룹' 으로 하고 권한은 775 or 750 으로 한다. 5-1-7. Push 서비스 구성 시 방화벽 및 요청사항 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | **구간** | **Source IP** | **Destination IP** | **PORT** | **PROTOCOL** | **ETC** | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server1 | Push Server1 | 10420 | TCP | APNS/FCM 메시지 발송요청 전달 | | | | | | | | | | Was Server2 | Push Server2 | 10421 | | provider 모니터링 접속 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 운영자(개발자)->내부망 | 운영자(개발자) | Was Server1 | 8080 | TCP | 서비스 모니터링(upmc was) | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server1 | Push Server1 | 1883 | TCP | UPNS 메시지 발송요청 전달 | | | | | | | | | | Was Server2 | Push Server2 | 18880 | | UPNS 모니터링 포트 | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Web Server VIP | 80 or 443 | TCP | 스마트폰앱 -> UPMC web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | 운영자(개발자) | Web Server VIP | 81 or 444 | TCP | 운영자(개발자)PC -> Push admin web 포트 | | | | | | | | | | | | (http or https) | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 외부->DMZ | ANY | Push Server1 | 1883 | TCP | 스마트폰앱 -> UPNS Server | | | | | | | | | | | Push Server2 | | | 포트변경 시 방화벽 포트도 같이 변경한다. | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | api.push.apple.com | 443 | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | api.development.push.apple.com | | | (PROVIDER -> APNS) | | | | | | | | | | | 또는 | | | | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | OUTBOUND | Push Server1 | fcm-xmpp.googleapis.com | 5235 (Real) | TCP | PUBLIC PUSH 송신용 | | | | | | | | | | Push Server2 | 또는 | 5236 (Test) | | (PROVIDER -> FCM) | | | | | | | | | | | ANY | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->내부 | Was Server1 | Was Server1 | 6379 | TCP | Sentinel -> REDIS | | | | | | | | | | Was Server2 | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->내부 | Was Server1 | Was Server1 | 26379 | TCP | REDIS -> Sentinel | | | | | | | | | | Was Server2 | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | DMZ->내부 | Push Server2 | Was Server1 | 26379 | TCP | Sentinel -> Sentinel | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | DMZ->내부 | Push Server2 | Was Server1 | 6379 | TCP | Sentinel -> REDIS | | | | | | | | | | | Was Server2 | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ | 내부->DMZ | Was Server1 | Push Server2 | 26379 | TCP | Sentinel -> Sentinel | | | | | | | | | | Was Server2 | | | | | +------------------------+----------------+----------------------------------+-----------------+---------------+-----------------------------------------------+ 6. 기타 =============== 6-1. FCM ------------------ - FCM: Doze Mode을 사용을 위한 FCM API Key와 Sender ID 정보 - 참고: https://dev.tapjoy.com/ko/faq/how-to-find-sender-id-and-api-key-for-gcm/ 6-2. APNS ------------------ - APNS : 확장자(.p8) 푸시 인증서와 TEAMKEY, KEYID 정보 - 참고 : https://code.iamseapy.com/archives/26 .. |image1| image:: img/push_block_diagram-1.png :width: 7.50000in .. |image2| image:: img/push_block_diagram-2.png :width: 7.50000in .. |image3| image:: img/push_block_diagram-3.png :width: 76.50000in .. |image4| image:: img/push_block_diagram-4.png :width: 7.50000in