본문 바로가기

Cloud

PaaS-TA (6) - JAVA 앱에 DB 서비스 연결하기

사실 이거 하나 남기려고 여기까지 포스트했다. DB 서비스까지 생성하고 앱과 바인드까지는 했는데, 정작 앱에서 DB서비스를 어떻게 사용할 수 있는지 감이 안잡혔다. 심지어 검색어를 뭐라고 해야할지 조차 감을 못잡아서 애꿎은 spring cloud하고만 씨름하고 있었다.

 

혹시나 싶어 paas-ta 담당자분께 메일을 드렸는데 해답을 얻을 수 있었다.

 

1. 로컬 환경에서 앱과 바인딩 된 DB 서비스 접속하기

내가 만든 앱이 실제로 배포되기전까지 바인딩 된 DB 서비스에서 제대로 돌아가는지 알 방법이 없어 답답했다. 서비스에 올려진 DB는 외부에서의 접속이 차단되어 있어서 로컬에서 앱을 실행하거나, mysql workbench같은 client로 DB에 접속하는 등의 행위가 모두 거절되었다. paas-ta 담당자 분께서 주신 해답은 터널링이었다.

 

우선 terminal을 열고, 앱에 바인딩 된 서비스의 IP를 알아내야 한다.

cf env mymask-backend

여기서 mymask-backend란 서비스를 바인딩 해놓은 앱의 이름이다.

시스템 제공: 

 "VCAP_SERVICES": { 
  "p-mysql": [ 
   { 
...
     "jdbcUrl": "jdbc:mysql://IP주소:3306/DB이름?user=사용자이름\u0026password=패스워드", 
     "name": "XXXXXXXXX", 
     "password": "XXXX", 
     "port": 3306, 
     "username": "XXXXXX" 
    }, 
...
}

별다른 설명은 생략한다.

 

위 정보를 바탕으로 터널링을 해보자. 내 PC의 63306 포트와 mymask-backend앱의 172.20.4.241:3306 포트를 터널링 해준다. CF CLI를 이용하는 것을 잊지 말자.

cf ssh -N -L 63306:IP주소:3306 mymask-backend

조금 기다리면 Terminal창의 Prompt가 변경된다.

vcap@a27446f2-8532-4b8d-726d-596d:~$

Terminal은 잠시 최소화 시켜두고, 이제 DB에 접속해보자.(Terminal을 끄면 안된다.)

 

호스트명/IP는 DB서버의 IP가 아닌 로컬 호스트여야 한다. 사용자(username)와 암호(password), 데이터베이스(name)을 입력하면 연결된다! JAVA 앱의 application.properties에 설정하는 DB 커넥션 정보도 위와 같이 작성하면 된다.

 

2. 배포된 앱에서 서비스 DB에 연결하기

cf env에서 나왔던 jdbcUrl, name, username, password를 application.properties에 그대로 사용하면 된다. 별달리 어려운 내용이 없어서 이만.

 

끝.

 

태그