Skip to main content

Rabbit-MQ

Turaco에서 제공하는 메시징 처리를 위한 RabbitMQ 컴포넌트

RabbitMQ는 AMQP(Advanced Message Queuing Protocol)을 구현한 메시지 브로커입니다.

AMQP는 Queue Protocol이며 메시지 생산자(Producer) 및 소비자(Consumer)로 구성되며 생산자와 소비자 사이에 메시지를 중개하는 중개자 역할을 수행합니다.

RabbitMQ 버전은 아래와 같은 기능을 가지고 있습니다.

  • 비동기 메시징다중 메시징 프로토콜 , 메시지 큐잉 , 전달 확인 , 큐로의 유연한 라우팅 , 다중 교환 유형을 지원합니다.
  • 분산 배포고가용성 및 처리량을 위해 클러스터로 배포합니다 . 여러 가용 영역 및 지역에 걸쳐 연합합니다.
  • 도구 및 플러그인 지원지속적인 통합, 운영 지표 및 다른 엔터프라이즈 시스템과의 통합을 지원하는 다양한 도구 및 플러그인을 제공합니다.
  • 관리 및 모니터링 도구 지원RabbitMQ를 관리하고 모니터링하기 위한 HTTP-API, 명령줄 도구 및 UI 콘솔을 제공합니다.
  • 개발자 경험 Kubernetes, BOSH, Chef, Docker 및 Puppet을 사용하여 배포합니다 . Java, .NET, PHP, Python, JavaScript, Ruby, Go 및 기타 여러 프로그래밍 언어를 사용해서 개발하는 환경을 제공합니다 .

Turaco에서는 RabbitMQ 메시지 브로커를 클러스터 수준에서 외부 시스템의 브로커까지 사용할 수 있는 방법을 제공합니다.

본 챕터에서는 Turaco에서 제공하는 RabbitMQ 컴포넌트의 사용법에 대해 설명합니다.


컴포넌트 배치

RabbitMQ 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 '메시징' 카테고리에 있습니다.

  1. 설계화면 왼쪽 컴포넌트 리스트 화면에서 RabbitMQ 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.

컴포넌트배치

  1. 배치된 RabbitMQ 컴포넌트에 대한 이름과 설명을 입력 후 확인 버튼을 클릭합니다. 이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.

호스트

호스트 설정은 외부에 별도로 운영중인 RabbitMQ 클러스터가 이미 있는 경우 해당 시스템을 사용하기 위한 옵션입니다.

3. 외부에 이미 운영중인 시스템을 사용하기를 원할 경우 해당 시스템에 대한 엔드포인트를 입력합니다.

호스트를 지정시,
Kafka 클러스터를 위한 배포 리소스(Helm Chart)가 생성되지 않습니다.


가상 호스트

RabbitMQ에서 가상호스트(VirtualHost)란, 하나의 RabbitMQ 브로커에서 여러 개의 메시지 도메인을 사용할 수 있게 해 주는 논리적 그룹을 의미합니다. 각각의 VirtualHost는 Queue, Exchange, Binding, 권한에 있어서 완전히 분리된 메시징 환경을 가집니다.

4. vhost 값을 입력합니다. (기본값 : '/')


환경설정

RabbitMQ를 위한 환경 설정값을 설정합니다.

환경설정

  1. 환경 설정값 선택하기 위한 버튼을 클릭합니다.
  2. 표시되는 드롭다운 메뉴에서 'Configuration' 항목을 선택합니다.
  3. 적용 버튼을 클릭합니다. 환경 설정 속성창에 선택된 내용이 추가됩니다.

포트

8. 입력포트, 타겟포트 각각의 경우에 대한 포트 번호를 입력합니다.
     프로토콜 속성에서 지정된 값에 따라 여기서 설정한 값을 사용합니다.
     두 가지 포트 정보를 반드시 입력해야 합니다.

  • 입력 포트 -> 서비스 입력 포트로 사용
  • 타겟 포트 -> 서비스 출력 포트이며 컨테이너의 입력 포트로 주입

스토리지

컨테이너는 로컬 스토리지를 사용할 수 있으나 컨테이너의 특성상 재시작되거나 삭제되는 경우 저장된 데이터가 같이 삭제됩니다. 이러한 특성 때문에 외부에 영구 볼륨을 설정하고 저장을 해야 데이터가 유실되지 않고 보관이 됩니다.

Turaco에서는 운영 환경에서 많이 사용하는 2가지 스토리지 클래스를 지원합니다.

  • NFS 기반의 스토리지 클래스 (tlc-nfs-sc)
  • Disk 기반의 스토리지 클래스 (tlc-block-sc)
info

Turaco RabbitMQ 컴포넌트에서 스토리지 클래스 및 접근모드는 아래와 같이 고정값으로 지정되어 있으며 수정할 수 없습니다.

  • 접근모드 -> ReadWriteOnce
  • 스토리지 클래스 -> tlc-block-sc

9. 스토리지 설정에는 아래와 같이 3개의 속성이 있습니다.

  • 접근 모드 -> 스토리지 접근 모드 선택
  • 볼륨 크기 -> 볼륨 크기 입력(ex. 5Gi)
  • 스토리지 클래스 -> 스토리지 클래스 이름 입력(기본값 유지 추천)

접근 모드는 아래와 같이 3가지 속성이 있습니다.
Kafka 컴포넌트에서는 고정(ReadWriteOnce)되어 있습니다.

  • ReadWriteMany -> 여러개의 컨테이너에서 읽고 쓸수 있음
  • ReadWriteOnce -> 하나의 컨테이너에서만 읽고 쓸수 있음
  • ReadOnlyMany -> 여러개의 컨테이너에서 읽을 수 있음

서비스 및 역할

  1. 서비스 선택을 위한 드롭다운 버튼을 선택합니다.
  2. 디자이너에 추가한 백엔드 컴포넌트 이름 목록이 나열됩니다.Kafka 클러스터를 이용할 백엔드 서비스를 선택합니다.
  3. 백엔드 서비스를 선택하면 선택한 백엔드 서비스에 대한 역할 선택 메뉴가 나타납니다.
  4. producer 또는 consumer를 선택합니다. 서비스 속성창에서 선택된 백엔드 서비스에 대해 역할을 선택할 수 있습니다. 선택할 수 있는 역할은 아래와 같습니다.
  • Publisher -> 설정된 토픽에 대해 메시지를 발행하는 역할
  • Subscriber -> 설정된 토픽에 대해 메시지를 구독하는 역할

하나의 백엔드 서비스에 대해 역할은 두 개 모두 선택할 수 있습니다.

서비스 및 역할

선택된 백엔드 서비스는 애플리케이션 생성 시 RabbitMQ 클러스터를 사용할 코드가 주입되어 생성됩니다.