CUBRID를 설치 후 사용자들이 응용 프로그램과 CUBRID Manager 또는 CUBRID Migration Toolkit(CMT)를 연결 할 때 어떤 포트를 사용해야 하는지 "방화벽 문제로 CUBRID DB서버와 접속이 안되는 현상" 때문에 Q&A 문의가 생각보다 많이 있어 이번 블로그 내용에서는 접속대상 서버(PC)와 CUBRID DB서버간 포트개방 생태를 OS명령어로 확인하는 방법을 소개하고자 합니다.
우선, CUBRID 포트관련 내용을 간단하게 정리하면 설정 파일들은 $CUBRID/conf 디렉토리에 위치해 있고 cubrid.conf에 cubrid_port_id=1523, cubrid_broker.conf에 BROKER_PORT=30000,33000, cubrid_ha.conf에 ha_port_id=59901, cm.conf에 cm_port=8001 포트로 기본설정되어 있습니다, 아래 표는 CUBRID가 사용하는 포트를 정리한 것입니다.
1, CUBRID 포트 정리표
구분 |
대상 장비 |
Linux 포트 |
Windows 포트 |
방화벽 |
Single DB |
WEB/WAS Server |
33000(TCP) |
33000~33040(TCP) |
개방 |
CUBRID Manager |
30000(TCP) 8001(TCP) |
30000~30040(TCP) 8001(TCP) |
개방 |
|
CUBRID CMT |
30000(TCP) |
30000~30040(TCP) |
개방 |
|
CUBRID HA |
WEB/WAS Server |
33000(TCP) |
33000~33040(TCP) |
개방 |
CUBRID Manager |
30000(TCP) 8001(TCP) |
30000~30040(TCP) 8001(TCP) |
개방 |
|
CUBRID CMT |
30000(TCP) |
30000~30040(TCP) |
개방 |
|
Master/Slave Server 양방향 |
1523(TCP) 7(TCP) 59901(UDP) |
HA 기능 미지원 |
Linux:개방 window: 불필요 |
|
CUBRID Manager 사용자/관리자 PC |
CUBRID Manager |
30000(TCP) 8001(TCP) |
30000~30040(TCP) 8001(TCP) |
개방 |
CUBRID Migration Toolkit 사용자/관리자 PC |
CUBRID CMT |
30000(TCP) |
30000~30040(TCP) |
개방 |
2, CUBRID service를 구동하면 마스터, DB서버, 브로커, 매니저 프로세스를 확인할 수 있습니다.
[cubrid@cub_db01 ~]$ cubrid service start; cubrid server start demodb @ cubrid master start ++ cubrid master start: success @ cubrid broker start ++ cubrid broker start: success @ cubrid manager server start ++ cubrid manager server start: success @ cubrid server start: demodb This may take a long time depending on the amount of recovery works to do. CUBRID 9.3 ++ cubrid server start: success
[cubrid@cub_db01 ~]$ cubrid service status @ cubrid master status ++ cubrid master is running. @ cubrid server status Server demodb (rel 9.3, pid 2351) @ cubrid broker status NAME PID PORT AS JQ TPS QPS SELECT INSERT UPDATE DELETE OTHERS LONG-T LONG-Q ERR-Q UNIQUE-ERR-Q #CONNECT #REJECT =========================================================================================================================================================================================================== * query_editor 2295 30000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0 * broker1 2306 33000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0 @ cubrid manager server status ++ cubrid manager server is running |
3, 리눅스에서는 netstat 또는 lsof 명령어와 “grep cub_*” 조합해 검색하면 현재 CUBRID 프로세스별로 어떤 포트를 가지고 구동되어 있는지 확인할 수 있습니다.
[cubrid@cub_db01 ~]$ netstat -tnlp | grep cub_* (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN 2320/cub_manager tcp 0 0 0.0.0.0:33000 0.0.0.0:* LISTEN 2306/cub_broker tcp 0 0 0.0.0.0:30000 0.0.0.0:* LISTEN 2295/cub_broker tcp 0 0 0.0.0.0:1523 0.0.0.0:* LISTEN 2292/cub_master
[cubrid@cub_db01 ~]$ lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u | grep cub_* *:1523 cub_master *:30000 cub_broker *:33000 cub_broker *:8001 cub_manager |
4, CUBRID 서버가 윈도우인 경우는 리눅스와 같이 netstat 명령어 사용이 가능 하지만 grep으로 프로세스명을 검색하는 방법이 없어 find 명령어로 “LISTENING”을 검색해 출력되는 정보 중에 1523, 8001, 30000+5, 33000+5 포트를 찾아 확인해야 합니다.
C:\Users\myjun>netstat -an | find "LISTENING" TCP 0.0.0.0:1523 0.0.0.0:0 LISTENING TCP 0.0.0.0:8001 0.0.0.0:0 LISTENING : : TCP 0.0.0.0:30000 0.0.0.0:0 LISTENING TCP 0.0.0.0:30001 0.0.0.0:0 LISTENING TCP 0.0.0.0:30002 0.0.0.0:0 LISTENING TCP 0.0.0.0:30003 0.0.0.0:0 LISTENING TCP 0.0.0.0:30004 0.0.0.0:0 LISTENING TCP 0.0.0.0:30005 0.0.0.0:0 LISTENING TCP 0.0.0.0:33000 0.0.0.0:0 LISTENING TCP 0.0.0.0:33001 0.0.0.0:0 LISTENING TCP 0.0.0.0:33002 0.0.0.0:0 LISTENING TCP 0.0.0.0:33003 0.0.0.0:0 LISTENING TCP 0.0.0.0:33004 0.0.0.0:0 LISTENING TCP 0.0.0.0:33005 0.0.0.0:0 LISTENING |
참고: 윈도우는
리눅스와 다르게 브로커(30000, 33000) 포트를 cubrid_broker.conf에 MAX_NUM_APPL_SERVER 설정한 수 만큼 해당
포트들을 전부((ex: 30000~30040) 오픈해 주어야 합니다. (윈도우 방화벽 설정은 http://www.cubrid.com/faq/3794781 정보를
참조하시면 됩니다.)
5, 이번에는 WEB/WAS 서버가 리눅스이고 CUBRID DB서버로 33000포트가 연결되는지 nc 명령어를 이용해 확인하는 방법입니다, WEB/WAS 서버에서 “nc -z IP(CUBRID DB서버) PORT(브로커 포트)” 수행 후 예제와 같이 "Succeeded!"가 출력되면 연결이 가능한 상태입니다, 즉, 출발지 IP에서 목적지 IP/Port로 접속이 가능한 상태라고 보면 됩니다. (nc 명령어로 반복 점검이 필요할 경우 두번째 예제를 참고하세요.)
[Jboos@was_server01 ~]$ nc -z 192.168.56.3 33000 Connection to 192.168.56.3 33000 port [tcp/*] succeeded!
[Jboos@was_server01 ~]$ while true; do date; nc -w1 -z 192.168.56.3 33000; sleep 1; done 2018. 07. 03. (화) 10:59:18 KST Connection to 192.168.56.3 33000 port [tcp/*] succeeded! 2018. 07. 03. (화) 10:59:19 KST Connection to 192.168.56.3 33000 port [tcp/*] succeeded! 2018. 07. 03. (화) 10:59:20 KST Connection to 192.168.56.3 33000 port [tcp/*] succeeded! : : 정지: Ctrl+C |
6, 윈도우(PC)에서 CUBRID Manager 또는 CUBRID Migration Toolkit(CMT)를 사용할 경우 CUBRID DB서버로 8001, 30000 포트가 연결이 가능한지 확인이 필요한데 윈도우는 tcping 명령어로 목적지 주소와 포트를 입력해 연결이 가능한지 점검할 수 있습니다, 다만 tcping 명령어는 대부분 윈도우에 설치되어 있지 않아 CMD창에서 tcping 명령어 오류가 있으면 다음과 같은 절차로 설치가 필요할 수 있습니다.
* 설치방법
- https://www.elifulkerson.com/projects/tcping.php 접속
- tcping.exe 파일 다운로드
- tcping.exe 파일을 C:\Windows\System32 폴더로 이동/복사
* 사용방법
- 시작 > Window 시스템 > 명령어 프롬프트(CMD창) 관리자 권한으로 실행
- tcping IP(CUBRID DB서버) PORT(브로커 포트)
C:\>cd C:\Windows\System32
C:\Windows\System32>tcping 192.168.56.3 30000 Probing 192.168.56.3:33000/tcp - Port is open - time=10.781ms Probing 192.168.56.3:33000/tcp - Port is open - time=1.257ms Probing 192.168.56.3:33000/tcp - Port is open - time=1.787ms Probing 192.168.56.3:33000/tcp - Port is open - time=0.615ms Ping statistics for 192.168.56.3:33000 4 probes sent. 4 successful, 0 failed. (0.00% fail) Approximate trip times in milli-seconds: Minimum = 0.615ms, Maximum = 10.781ms, Average = 3.610ms
C:\Windows\System32>tcping -t 192.168.56.3 30000 ** Pinging continuously. Press control-c to stop ** Probing 192.168.56.3:33000/tcp - Port is open - time=11.171ms Probing 192.168.56.3:33000/tcp - Port is open - time=0.869ms Probing 192.168.56.3:33000/tcp - Port is open - time=0.548ms Probing 192.168.56.3:33000/tcp - Port is open - time=0.950ms Probing 192.168.56.3:33000/tcp - Port is open - time=1.783ms 정지: Control-C Ping statistics for 192.168.56.3:33000 5 probes sent. 5 successful, 0 failed. (0.00% fail) Approximate trip times in milli-seconds: Minimum = 0.548ms, Maximum = 11.171ms, Average = 3.064ms |
참고로 CUBRID Manager는 관리모드와 질의모드 기능이 구분되어 있는데 관리모드를 사용할 경우는 8001, 30000 포트 오픈이 필요하고 질의모드 기능을 사용할 경우는 30000 포트만 오픈하면 CUBRID Manager 도구를 사용할 수 있습니다.