삽질저장소

docker rabbitMQ 설정 하기

2020-07-28docker

1. 필요 패키지 다운로드

    wget https://packages.erlang-solutions.com/erlang/rpm/centos/8/x86_64/esl-erlang_23.0.2-2~centos~8_amd64.rpm
    wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm

2. Erlang, rabbitMQ 설치

    dnf -y install esl-erlang_23.0.2-2~centos~8_amd64.rpm
    dnf -y install rabbitmq-server-3.8.5-1.el7.noarch.rpm

3. 자동 재시작 등록

    systemctl enable rabbitmq-server
    systemctl daemon-reload

4. rabbitMQ 관리자 플러그인 enable 설정

    ./usr/sbin/rabbitmq-plugins enable rabbitmq_management

5. 설정파일 작성

  • advanced.config 파일 작성

    vim /etc/rabbitmq/advanced.config
    [
       {rabbit, [
    				{loopback_users, []}
    			 ]},
       {rabbitmq_management, [
                               {load_definitions, "/etc/rabbitmq/definitions.json"}
    	]}
     ].
  • definitions.json 작성 : 여기에 실제로 사용할 유저 및 queue 와 exchange 설정을 한다.

    vim /etc/rabbitmq/definitions.json
    {
    	 "rabbit_version": "3.8.5",
    		  "users": [
    			    {
    					   "name": "lhdt",
    					   "password_hash": "XSBSynnbW/DxugD+NGvuN7mFfXMdxaA3NaIOjML7QHkajUxW",
    					   "hashing_algorithm": "rabbit_password_hashing_sha256",
    					   "tags": "administrator"
    				}
    	  ],
    	   "vhosts": [
    		     {
    				    "name": "/"
    						  }
    	   ],
    	    "permissions": [
    			  {
    				     "user": "lhdt",
    					 "vhost": "/",
    					 "configure": ".*",
    					 "write": ".*",
    					 "read": ".*"
    			}
    	    ],
    		 "parameters": [],
    		  "policies": [],
    		   "queues": [
    			   {
    			         "name": "f4d.converter.queue",
    					 "vhost": "/",
    					 "durable": true,
    					 "auto_delete": false,
    					 "arguments": {}
    			  }
    		   ],
    		    "exchanges": [
    				{
    				      "name": "f4d.converter",
    					  "vhost": "/",
    					  "type": "topic",
    					  "durable": true,
    					  "auto_delete": false,
    					  "internal": false,
    					  "arguments": {}
    			      }
    			],
    			 "bindings": []
    }
  • 패스워드 암호화에는 다음의 파이썬 스크립트를 사용

    #!/usr/bin/env python
    # details on rabbitMQ password hashing
    # https://www.rabbitmq.com/passwords.html#computing-password-hash
    
    from __future__ import print_function
    import base64
    import os
    import hashlib
    import struct
    import getpass
    
    # This is the password we wish to encode
    password1 = getpass.getpass("password: ")
    password2 = getpass.getpass("again: ")
    
    if password1 != password2:
      print("passwords do not match")
      exit(1)
    
    # 1.Generate a random 32 bit salt:
    # This will generate 32 bits of random data:
    salt = os.urandom(4)
    
    # 2.Concatenate that with the UTF-8 representation of the password
    tmp0 = salt + password1.encode('utf-8')
    
    # 3. Take the SHA256 hash and get the bytes back
    tmp1 = hashlib.sha256(tmp0).digest()
    
    # 4. Concatenate the salt again:
    salted_hash = salt + tmp1
    
    # 5. convert to base64 encoding:
    pass_hash = base64.b64encode(salted_hash)
    
    print(pass_hash)
  • 참고

    • 로그 파일 위치 : /var/log/rabbitmq
    • 설정 파일 위치 : /etc/rabbitmq
    • 실행 파일 위치 : /usr/sbin/rabbitmq-server
  • Thank You for Visiting My Blog, Have a Good Day 😆
    © 2021 Developer shPark, Powered By Gatsby.