Skip to content

[RabbitMQ] rabbitmqctl 사용법

2012/01/13

rabbitmqctl(1) manual page

rabbitmqctl 은 RabbitMQ broker의 command line tool이다.
위치는 기본 디렉토리는 /usr/lib/rabbitmq/bin 입니다.

우선 rabbitmqctl을 사용하기 위해서는 같은 디렉토리에 있는 ./rabbitmq-server -detached 로 노드를 실행해 두어야 한다.

Commands

stop

: 노드를 죽이기 위한 명령어.

stop_app

: RabbitMQ application을 죽이는 명령어. 노드는 살아있다.

start_app

: RabbitMQ application을 시작하는 명령어. 노드가 살아있는 상태여야 한다.

Tip 1. 노드가 죽었을때(rabbitmqctl stop) 노드를 살릴수 있는 방법은 rabbitmqctl은 지원해주지 않는다. stop_app 이후에 start_app을 이용해서는 RabbitMQ를 살릴수 있다.

status

: 노드의 상태를 간략하게 볼수 있다.

정상 상태

Status of node bunny@ucdev01 ...
[{running_applications,[{rabbit,"RabbitMQ","2.3.1"},
                        {os_mon,"CPO  CXC 138 46","2.1.8"},
                        {sasl,"SASL  CXC 138 11","2.1.5.4"},
                        {mnesia,"MNESIA  CXC 138 12","4.4.7"},
                        {stdlib,"ERTS  CXC 138 10","1.15.5"},
                        {kernel,"ERTS  CXC 138 10","2.12.5"}]},
 {nodes,[{disc,[bunny@ucdev01]}]},
 {running_nodes,[bunny@ucdev01]}]
...done.

stop_app을 한 상태

Status of node bunny@ucdev01 ...
[{running_applications,[{sasl,"SASL  CXC 138 11","2.1.5.4"},
                        {stdlib,"ERTS  CXC 138 10","1.15.5"},
                        {kernel,"ERTS  CXC 138 10","2.12.5"}]},
 {nodes,[{unknown,[bunny@ucdev01]}]},
 {running_nodes,[]}]
...done.

stop을 한 상태

Status of node bunny@ucdev01 ...
Error: unable to connect to node bunny@ucdev01: nodedown
diagnostics:
- nodes and their ports on ucdev01: [{rabbitmqctl23294,40150}]
- current node: rabbitmqctl23294@ucdev01
- current node home dir: /root
- current node cookie hash: it0GWtzzpIf3Wr6PDLgbzA==
add_user {username} {password}

: 계정 추가 명령어

delete_user {username}

: 계정 삭제 명령어

set_user_tags {username} {tag ...}

: 계정 정보 지정 tag 는 administrator 등을 지정할 수 있다.

list_users

: 노드에 해당하는 계정 리스트 출력

rabbitmqctl list_users 의 결과는 아래와 같으며

Listing users ...
redbunny        false
...done.

첫번째 항목은 username이고 두번째 항목은 tag가 administrator이면 true 아니면 false 이다.

Tip 2. 설치했을때 기본으로 guest 계정이 생겨있으며 클라이언트도 기본으로 guest로 접속한다. 그래서 rabbitmqctl delete_user guest 로 계정을 지워주는 것이 좋으며, 새로운 계정을 추가해 줘야 한다.
guest계정을 삭제한 후에 클라이언트가 guest계정으로 접속을 시도하면 클라이언트에서는 에러가 나고 서버 로그에는 아래와 같은 메시지가 남는다.

exception on TCP connection  from 127.0.0.1:50997
{channel0_error,starting,
                {amqp_error,access_refused,
                            "PLAIN login refused: user 'guest' - invalid credentials",
                            'connection.start_ok'}}

Tip 3. add_user로 계정을 생성했다고 해서 그 계정이 정상적으로 동작하지 않는다. vhostpath에 대한 permission 설정을 해줘야 한다.
만약 permission이 없는 계정으로 클라이언트가 접근을 시도하면 서버 로그에 아래와 같은 메시지가 남는다.

exception on TCP connection  from 127.0.0.1:53299
{channel0_error,opening,
                {amqp_error,access_refused,
                            "access to vhost '/' refused for user 'redbunny'",
                            'connection.open'}}
add_vhost {vhostpath}

: virtual host 생성

delete_vhost {vhostpath}

: virtual host 삭제

set_permissions [-p vhostpath] {username} {conf} {write} {read}

: user에 대해 vhostpath에 대한 권한 설정

  • conf : A regular expression matching resource names for which the user is granted configure permissions.
  • write : A regular expression matching resource names for which the user is granted write permissions.
  • read : A regular expression matching resource names for which the user is granted read permissions.

Tip 4. 모든 권한을 준다면 다음과 같이 하면 된다.
rabbitmqctl set_permissions -p / redbunny “.*” “.*” “.*”

이 외에 server의 상태를 볼수있는 여러가지 명령어가 더 있지만

다음 기회에 추가..

No comments yet

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: