RabbitMQ 서비스용 계정과 Virtual Host 설정 실습

2020-10-09

.

Data_Engineering_TIL(20201009)

[실습시 참고한 자료]

‘[RabbitMQ] 2. 초보를 위한 RabbitMQ 서비스용 계정 및 Virtual Host 설정하기’ 블로그 글

** URL : http://abh0518.net/tok/?p=397

[실습내용]

  • 실습환경은 Amazon Linux 2에서 진행한다.

  • ‘Amazon Linux 2에 RabbitMQ 설치하기’ 를 앞서서 참고한다.

  • 앞서서 RabbitMQ를 구동하기 위한 설치부터 기본 설정을 완료했기 떄문에 서비스가 가능하도록 계정과 Virtual Host, Queue, Exchange 설정 등을 해본다. Management Plugin을 사용하여 설정해본다. (CLI 명령으로도 아래의 실습이 가능하다.)

step 1) 서비스용 계정 설정

  • 먼저 앞서 생성했던 관리자 계정인 rabbit_admin 아이디로 Management Plugin 에 접속한다.

  • 그 다음에 상단에 ‘Admin’ 메뉴 클릭 –> ‘Users’ 메뉴를 클릭한다.

그러면 아래와 같은 화면을 확인할 수 있다.

1

화면에 대한 설명은 다음과 같다.

1) Tags

게정의 권한을 부여하는 기능. Admin, Monitoring, Policymaker, Management, None 5가지 종류가 있다.

Admin은 말그대로 Rabbitmq의 관리자 계정이고 Monitoring은 조회만 가능하다.

주의해야할 사항으로 계정의 권한을 최소한 Management로 설정해 주어야 Management Plugin에 접속이 가능하다. 만약에 None으로 설정해버리면 오직 Client용 계정으로 작동하여 Management Plugin에 접속이 불가능해진다.

2) Virtual Host

Queue와 계정을 그룹핑 하는 개념이다. 하나의 계정은 여러 Virtual Host을 할당 받을 수 있으며 자신에게 할당된 Virtual Host에 속한 Queue에만 접근이 가능하다.

Virtual Host를 테스트하기 위해 서비스 Client 로 사용할 계정 두개를 만든다. 아래 그림과 같이 None Tag로 pushService, smsService 두개를 생성한다. (비밀번호는 MyNewStrongP@ssw0d!) 그리고 guest 계정은 삭제해준다.

2

step 2) Virtual Host 설정

Virtual Host는 일종의 Queue 접근에 대한 그룹핑이다. Exchange라는 것과 함게 설정이 되어야 하지만 이번 실습에서는 서비스용 계정 설정만 해본다는 것에 의의를 둔다. Admin 메뉴 클릭 –> Virtula Hosts 메뉴 클릭 하면 아래와 같은 화면을 확인할 수 있다.

3

앞에서 설정한 계정 이름처럼 smsService 와 pushService 두가지 서비스가 RabbitMQ를 사용할 것이라고 가정하자. 이 두개의 서비스는 서로 아무런 관계가 없기 때문에 서로의 Queue나 설정에 대해 전혀 몰라도 된다. 따라서 서비스별로 서로 독립된 구역을 나누어주는게 좋은데 그 단위로 Virtual Host를 사용할 수 있다.

아래와 같이 smsHost와 pushHost를 만들어본다. 만든 후에는 Users에서 계정별 설정을 사용하여 smsService에는 smsHost를 pushService에는 pushHost를 설정해준다. rabbitmq계정에는 모든 Virtual Host를 설정해줘야 한다. 제대로 설정했다면 Users에서 아래와 같은 화면을 볼 수 있다.

4

참고로 한개의 계정에는 여러 Virtual Host를 설정할 수 있다. 관리자나 전체 모니터링 계정의 경우에는 아래 그림과 같이 모든 Virutal Host를 설정하여 쉽게 관리할 수 있도록 하는게 좋다.

관리자 계정이든 일반 계정이든 모두 자신에게 설정된 Virtual Host 영역의 Queue와 Exchange에만 CRUD가 가능하다. 다른 Virtual Host의 Queue나 Exchange는 존재조차 확인할 수 없다.

5