RabbitMQ 관리(1) – 다중 임차인 및 권한

7768 단어
모든 RabbitMQ 서버는 가상 메시지 서버를 만들 수 있습니다. 우리는 가상 호스트(virtual host)라고 하는데 약칭 vhost라고 합니다.모든 vhost는 본질적으로 독립된 소형 RabbitMQ 서버로 자신의 독립된 대기열, 교환기, 귀속 관계 대기를 가지고 있으며 자신의 독립된 권한을 가지고 있다.vhost는 가상 컴퓨터와 물리 서버처럼 각 실례 간에 논리적인 분리를 제공하여 서로 다른 프로그램에 데이터를 안전하게 실행할 수 있도록 합니다. 이것은 같은 RabbitMQ의 많은 고객을 분리할 수 있을 뿐만 아니라 대기열과 교환기 등 명령 충돌도 피할 수 있습니다.vhost 사이는 절대 격리되어 있습니다. vhost1의 교환기와 vhost2의 대기열을 연결할 수 없습니다. 이렇게 하면 안전성을 확보할 수 있을 뿐만 아니라 이식성도 확보할 수 있습니다.만약에 RabbitMQ를 사용하여 일정한 규모에 도달했을 때 사용자는 업무 기능, 장면을 분류하여 구분하고 독립된 vhost를 분배하는 것을 권장한다.
vhost는 AMQP 개념의 기초로 클라이언트가 연결할 때 반드시 vhost를 제정해야 한다.RabbitMQ는 기본적으로 생성된 vhost를 "/"로 합니다. 여러 개의 vhost가 필요하지 않거나 vhost의 개념을 잘 이해하지 못하면 이 기본 vhost를 사용하는 것도 매우 합리적입니다. 기본 사용자 이름guest와 비밀번호guest를 사용하면 접근할 수 있습니다.그러나 안전과 편의를 위해 새로운 사용자가 방문할 것을 건의합니다.
rabbitmqctl add_ 사용 가능vhost {vhost} 명령은 새 vhost를 만듭니다. 괄호 안의 매개 변수는 vhost의 이름을 표시합니다.예는 다음과 같습니다.
[root@node1 ~]# rabbitmqctl add_vhost vhost1
Creating vhost "vhost1"
 ```
 rabbitmqctl list_vhosts [vhostinfoitem...] vhost 。 vhostinfoitem 21. name: vhost 。
  2. tracing: RabbitMQ trace 。 trace , 10.1 。

 :
 ```
[root@node1 ~]# rabbitmqctl list_vhosts name tracing
Listing vhosts
vhost1      false
/       false
[root@node1 ~]# rabbitmqctl trace_on
Starting tracing for vhost "/"
[root@node1 ~]# rabbitmqctl list_vhosts name tracing
Listing vhosts
vhost1      false
/       true

삭제된 vhost의 명령은: rabbitmqctl delete_vhost {vhost}, 중괄호 안의 매개 변수는 vhost의 이름을 표시합니다.vhost를 삭제하면 다음 모든 대기열, 교환기, 귀속 관계, 사용자 권한, 파라미터, 정책 등 정보를 삭제합니다.예는 다음과 같습니다.
[root@node1 ~]# rabbitmqctl delete_vhost vhost1
Deleting vhost "vhost1"
[root@node1 ~]# rabbitmqctl list_vhosts
Listing vhosts

AMQP 프로토콜에는 vhost 레벨에서 실행할 수 있는 권한이 지정되어 있지 않으며 구체적인 응용 프로그램에서 사용자 정의됩니다.RabbitMQ에서 권한 제어는 vhost 단위입니다.사용자를 만들 때, 사용자는 최소한 vhost에 파견되며, 파견된 vhost 내의 대기열, 교환기, 귀속 관계에만 접근할 수 있습니다.따라서 RabbitMQ에서 부여된 권한은 vhost 레벨에서 사용자에게 부여된 권한을 가리킨다.
관련 권한 부여 명령: rabbitmqctl set_permissions [-p vhost] {user} {conf} {write} {read}.각 매개변수의 의미는 다음과 같습니다.
  • vhost: 사용자에게 접근 권한을 부여하는 vhost 이름입니다. 즉, vhost는'/'입니다
  • user: 지정한 vhost의 사용자 이름에 접근할 수 있습니다
  • conf: 사용자가 어떤 자원에 설정할 수 있는 권한을 가지고 있는지 일치하는 정규 표현식입니다
  • write: 사용자가 어떤 자원에 쓸 수 있는 권한을 가지고 있는지 일치하는 정규 표현식..
  • read: 사용자가 어떤 자원에 읽을 수 있는 권한이 있는지 일치하는 정규 표현식..

  • 주: 설정 가능은 대기열과 교환기의 생성 및 삭제와 같은 조작을 가리킨다.쓸 수 있는 것은 소식을 발표하는 것을 가리킨다.읽기 가능 메시지는 메시지를 읽고 전체 대기열을 비우는 등 메시지와 관련된 작업을 가리킨다.
    사용자 루트가 가상 호스트 vhost1에 접근할 수 있고 모든 자원에 설정, 쓰기, 읽기 권한이 있습니다.예는 다음과 같습니다.
    [root@node1 ~]# rabbitmqctl set_permissions -p vhost1 root ".*" ".*" ".*"
    Setting permissions for user "root" in vhost "vhost1"

    사용자 루트에 가상 호스트 vhost2에 접근할 수 있는 권한을 부여하고 "queue"로 시작하는 자원에 설정 가능한 권한을 가지며 모든 자원에 쓰기 가능하고 읽을 수 있는 권한을 부여합니다. 예는 다음과 같습니다.
    [root@node1 ~]# rabbitmqctl set_permissions -p vhost2 root "^queue.*" ".*" ".*"
    Setting permissions for user "root" in vhost "vhost2"

    지우기 권한도 vhost 단계에서 사용자에게 지우기 권한입니다.권한 지우기 명령: rabbitmqctl clear_permissions [-p vhost] {username}.이 중 vhost는 사용자가 접근할 수 없는 가상 호스트의 이름을 설정하는 데 사용되며, 기본값은 "/"입니다.username은 특정 가상 호스트에 액세스할 수 없는 사용자 이름을 나타냅니다.예는 다음과 같습니다.
    [root@node1 ~]# rabbitmqctl clear_permissions -p vhost1 root
    Clearing permissions for user "root" in vhost "vhost1"

    RabbitMQ에는 권한 정보를 열거할 수 있는 두 개의 셸 명령이 있습니다.첫 번째 명령은: rabbitmqctl list_permissions [-p vhost], 가상 호스트의 권한을 표시하는 데 사용;두 번째 명령은: rabbitmqctl list_user_permissions {username}, 사용자의 권한을 표시하는 데 사용됩니다.예는 다음과 같습니다.
    [root@node1 ~]# rabbitmqctl list_permissions -p vhost1
    Listing permissions in vhost "vhost1"
    root .*      .*      .*
    [root@node1 ~]# rabbitmqctl list_user_permissions root
    Listing permissions for user "root"
    /       .*      .*      .*
    vhost1      .*      .*      .*

    세심한 독자들은 이 장에서 사용하는 모든 명령은 rabbitmqctl 도구의 확장 명령이며, rabbitmqctl 도구는 RabbitMQ 중간부품을 관리하는 명령행 도구로 각 RabbitMQ 노드를 연결하여 모든 조작을 수행합니다.노드가 실행되지 않으면 진단 정보가 표시되거나 도착할 수 없거나 일치하지 않는 Erlang cookie(Erlang cookie에 대한 자세한 내용은 7.1장 참조)로 인해 연결을 거부합니다.rabbitmqctl 도구의 표준 구문은 다음과 같습니다.
    rabbitmqctl [-n node] [-t timeout] [-q] {command} [command options...]

    [-n node] 기본 노드는"rabbit@hostname', 여기 호스트name 은 호스트 이름입니다.이름은'node'입니다.hidden.com 호스트에서 RabbitMQ Erlang node의 노드 이름은 일반적으로rabbit@nodeRABBITMQ_NODENAME 매개변수가 시작할 때 기본값이 아닌 경우hostname -s의 출력은 보통'@'로고 뒤에 있는 것입니다.[-q] -q 로고를 사용하여quiet 모드를 사용하면 메시지의 출력을 차단할 수 있습니다.기본값은 quiet 모드를 열지 않습니다.[-t timeout] 작업 시간 초과 (초)."list"형식의 명령에만 적용됩니다.기본값은 무한대다.다음은 [-q]와 [-t timeout] 매개 변수의 사용법과 효과를 보여 줍니다.
    [root@node1 ~]# rabbitmqctl list_vhosts
    Listing vhosts
    /
    [root@node1 ~]# rabbitmqctl list_vhosts -q
    /
    [root@node1 ~]# rabbitmqctl list_vhosts -q -t 1
    /
    [root@node1 ~]# rabbitmqctl list_vhosts -q -t 0
    Error: {timeout,0.0}

    좋은 웹페이지 즐겨찾기