cloud foundry를 통해 Application 배포 시 Application의 기본적인 포트는 80으로 부여 받는다.
해당 Application 배포 시 사용 및 대기 하는 Port가 80이 아닌 TCP 통신이 필요 한 경우 Client에서 일반 도메인으로 접근 할 수 있도록 cloud foundry와 이와는 별개의 TCP만 사용 할 수 있는 TCP_Routing API 서비스가 필요 하다.
그림에서 나와 있는 부분은 사용자의 요청을 로드 벨런스로 받아 들여 해당 요청에 대한 포워딩을 해주는 방식이다.
하지만 아래에서는 로드 밸런스 없이 Elastic IP를 할당하여 TCP 요청을 사용 할 수 있는 서버를 구성 하였다.
설치에 사용 한 cloud foundry 서버 버전 구성은 AWS 환경에서
BOSH v261
Cloud foundry v273
Diego v1.25.3 을 사용 하였다.
해당 TCP_Router 서비스를 배포 하려면 전제 조건으로는 Cloud foundry와 diego(cell) 및 spiif 설치가 되어 있어야 한다.
1. cloud foundry 배포 시 설치 한 Postgresql 또는 mysql에 routing API 통신 데이터를 관리 하기 위한 데이터베이스 테이블과 권한이 존재 하여야 한다. cloud foundry 배포 시 사용 한 Manifest 파일에 데이터베이스 테이블과 권한을 명세 하여 배포 하거나 ssh를 통해 해당 데이터베이스 서버에 접속하여 테이블을 생성해야 한다.
cloud foundry의 컴포넌트에 데이터 베이스를 사용하지 않고 따로 서버로 구성 하였을 경우 통신이 가능하게 구성하여 테이블을 생성 한다.
2. https://github.com/cloudfoundry/routing-release git hub를 다운로드 받고 0.159.0 버전으로 checkout 한다.
Checkout 한 github에서 scripts 폴더의 generate-manifest 파일을 확인 한다.
generate-manifest 파일은 cf와 diego 배포 시 사용했던 Manifest와 해당 github의 template를 바탕으로 spiff라는 소프트 웨어를 사용하여 필요한 데이터를 Merge 시키고 Tcp_router 결과 파일을 생성 시킨다.
-c 에는 cf-deployment.yml
-d에는 diego-deployment.yml
-o에는 option.yml 파일이 들어 간다.
3. TCP_router 설치 Manifest 파일이 성공적으로 생성 되었다면 $ bosh deploy 명령어를 통해 TCP_router를 배포 한다.
배포 시 Cloud foundry 설치 서브넷과 동일 한 서브넷을 사용 하였고 Cloud foundry와 API 통신을 하기 위해 TCP_router job에 Elastic(Public IP) IP를 할당 하였다.
4. TCP Router가 성공적으로 배포 완려 되었으면 Cloud foundry Manifest 파일에서 Routing API를 허용 하고 Diego backend 사용을 허용 한다.
또한 cf 명령어를 통해 들어온 API를 routing_API로 포워딩 하기 위해 cloud controller job에 Elastic IP를 할당 한다.
Manifest 속성을 변경 완료 하였으면 bosh deploy 명령으로 Cloud foundry를 재 배포 한다.
아래는 완성 된 서버들의 형상이다.
5. Cloud foundry 재 배포가 완료 되면 cf를 다시 로그인 하여 $ cf router groups 명령어를 실행 한다. 명령어 실행 출력 결과가 나타나면 TCP Port를 사용 할 수있다.
6. 해당 Router_groups를 통해 TCP 전용의 TCP Domain을 생성 한다.
$ cf create-shared-domain {#사용 할 도메인 TCP 도메인 명} --router-groups=default_groups
7. TCP 도메인이 생성 되었으면 도메인을 통해 Application을 올리거나 별도의 tcp_route를 생성하여 실행 하고 있는 application에 Mapping 해주면 80 포트 뿐만 아니라 다양한 포트로 접근이 가능하다.
'cloud foundry' 카테고리의 다른 글
bootstrap, micro-bosh(설치 관리자)를 Depoy 중 Error가 발생 한 경우 (0) | 2017.10.18 |
---|