RabbitMQ는 AMQP (Advanced Message Queuing Protocol)를 이용한 Message Queue Broker이다.

이번 포스팅은 RabbitMQ 서버 설치와 클러스터링 구축에 대하여 설명한다.
 

 

1. RabbitMQ 설치

$ sudo apt-get install rabbitmq-server

 

 

2. 관리자 계정 추가

$ sudo rabbitmqctl add_user {ID} {Password}
  ex) sudo rabbitmqctl add_user programist programist123
$ sudo rabbitmqctl set_user_tags {ID} administrator
  ex) sudo rabbitmqctl set_user_tags programist administrator

 

 

 

3. Management 활성화 및 접속

$ sudo rabbitmq-plugins enable rabbitmq_management
$ sudo service rabbitmq-server restart

 

  - Management Plugin 활성화를 하면 다음과 같이 enable된 목록을 확인할 수 있다.

 

 

 

  - http://Localhost:15672로 접속하면 다음과 같이 로그인 창이 나오며, 추가된 관리자 계정으로 로그인을 하면 RabbitMQ 서버의 상태 및 설정을 웹으로 조종할 수 있다.

 

 

 

 

 

4. RabbitMQ Clustering을 위한 환경 구성

  - RabbitMQ Clustering 구성을 위해 다음과 같이 3대의 RabbitMQ Server 3대를 구성하였다.

 

 

 

RabbitMQ 노드는 쿠키를 사용하여 서로 통신 할 수 있는지 여부를 결정하며, 두 노드가 통신 할 수 있으려면 Erlang 쿠키라고하는 동일한 공유 암호가 있어야한다. 일반적으로 로컬 파일에 저장되며, 모든 클러스터 노드에는 동일한 쿠키가 있어야한다.

 

  - RabbitMQ 쿠키 설정

    = 3대의 RabbitMQ Server중 하나를 선택하여 cookie 값을 나머지 2대에 동일하게 수정한다.

$ cat /var/lib/rabbitmq/.erlang.cookie

 

  - Hostname 수정

$ vi /etc/hostname

  ex) RabbitMQ-Server-1 

 

  - 각각의 서버에 다음과 같이 hostname을 지정하였다.

    = 192.168.0.101 : RabbitMQ-Server-1

    = 192.168.0.102 : RabbitMQ-Server-2

    = 192.168.0.103 : RabbitMQ-Server-3

 

  - hosts 파일 수정

$ vi /etc/hosts

 

  - 다음과 같이 각각의 RabbitMQ 서버에 다음과 같이 hosts 파일을 수정한다.

 

 

 

5. Clustering 구성하기

가운데 Server인 RabbitMQ-Server-2를 Master로 두고 RabbitMQ-Server-1과  RabbitMQ-Server-3을 RabbitMQ-Server-2에 연결할 것이다.

 

  - Server 상태 확인 명령어

$ rabbitmqctl cluster_status

 

    = RabbitMQ-Server-1

 

 

 

    = RabbitMQ-Server-2

 

 

 

    = RabbitMQ-Server-3

 

 

 

RabbitMQ-Server-2에 RabbitMQ-Server-1과 RabbitMQ-Server-3 노드 연결하기 위해서는 rabbitmqctl 명령어를 이용하여 RabbitMQ-Server-1, RabbitMQ-Server-3에서 가동되고 있는 서버를 일단 중지시켜야 한다.

 

 - RabbitMQ-Server-1, RabbitMQ-Server-3 노드 추가 명령어

$ rabbitmqctl stop_app

$ rabbitmqctl join_cluster --ram rabbit@{hostname}

  ex) rabbitmqctl join_cluster --ram rabbit@RabbitMQ-Server-2

$ rabbitmqctl start_app

 

    = RabbitMQ-Server-1

 

 

 

    = RabbitMQ-Server-3

 

 

 

 - RabbitMQ-Server-2 Clustering 상태 체크

$ rabbitmqctl cluster_status

 

 

 

 - Web에서의 Clustering 상태 체크

 

 

 

 - RabbitMQ-Server-1, RabbitMQ-Server-3 노드 삭제 명령어

   (rabbitmqctl reset 명령어를 사용할 경우, 기존에 등록했던 계정들도 삭제되므로 사용 시 주의한다.)

$ rabbitmqctl stop_app

$ rabbitmqctl reset

$ rabbitmqctl start_app

 

    = RabbitMQ-Server-1

 

 

 

    = RabbitMQ-Server-3

 

 

 

 - RabbitMQ-Server-2 Clustering 상태 체크

$ rabbitmqctl cluster_status

 

 

 

 

테스트 환경 : Ubuntu 16.04

Pypi(Python Package Index) Python을 위한 공식적인 Third-party 소프트웨어 저장소이다. 

주로 Python 라이브러리를 설치하기 위해 pip 명령어를 사용하는데, 이는 Pypi 저장소(https://pypi.org)를 통해 해당 Package를 설치한다.

 

이번 포스팅은 이런 Pypi 서버를 Private 형태의 로컬 저장소용 설치 및 개발한 Python 코드를 Packaging하여 로컬 저장소에 업로드 및 다운로드 하는 방법을 설명한다.

 

 

1. Private Pypi 설치

  - pypiserverhttps://pypi.org/project/pypiserver

$ sudo apt-get install python3-pip

$ sudo pip3 install pypiserver

 

  - Package를 저장할 디렉토리 생성

$mkdir {Package Repository Directory}

  ex) $mkdir ~/packages

 

2. Private Pypi 서버 계정 관리를 위한 passlib 설치

$ sudo apt-get install apache2-utils

$ sudo pip3 install passlib

$ htpasswd -sc htpasswd.txt {ID}

  ex) htpasswd -sc htpasswd.txt programist

 
 
 

3. Private Pypi 서버 구동

$ pypi-server -p {PortNumber} -P htpasswd.txt {Package Repository Directory}

  ex) pypi-server -p 8080 -P htpasswd.txt ~/packages &

 

  - 브라우저를 통해 접속하면 다음과 같이 Pypi 서버가 정상적으로 동작하는 것을 확인할 수 있다.

 

 

 

 

4. Client 설정

  - 다음과 같은 형식으로 

$ vi ~/.pypirc

 

[distutils]

index-servers =

  local

 

[local]

repository: {Priavte Server URL}

username: {ID}

password: {Password]

 

  - 현재 구축 환경에서는 다음과 같다.

 

 

 

5. Python 코드 Packaging을 위한 setup.py 작성

  - Packaging을 하기 위해서는 setup.py 작성해야 한다.

  - 자세한 setup.py에 대한 자세한 작성 방법은 아래 링크를 참고하면 된다.

    (https://docs.python.org/3.5/distutils/setupscript.html)

 

 

 

6. Python 코드 Package 업로드

$ python3 setup.py bdist_wheel upload -r local

 

 

 

  - 업로드 확인은 다음과 같이 Private Pypi 서버에서 확인이 가능하다.

 

 

 

7. Private Pypi 서버에서 Package 다운로드 및 설치

$ pip3 install --extra-index-url {Private Server URL} --trusted-host {Private Server IP} {Python Package Name}

  ex) pip3 install --extra-index-url http://192.168.0.101:8080 --trusted-host 192.168.0.101 pypitest

 

 

 

  - 다음과 같이 테스트용 Package인 Pypitest Package가 설치되는 것을 확인할 수 있다.

Docker는 리눅스 컨테이너 기반의 도구로 소프트웨어 패키징을 통하여 보다 편하게 배포가 가능하다.

 

이번 포스팅에서는 Docker에 대한 설치 방법을 설명한다.

설치 방법은 Docker 사이트에 자세히 설명되어 있으므로, 이를 기반으로 작성하였다.

Docker Installhttps://docs.docker.com/install/linux/docker-ce/ubuntu/

 

설치 환경은 Ubuntu 16.04이며, 다른 버전 및 OS에 대해서 Docker 사이트에서도 자세히 설명되어 있다.

 

1. Docker 패키지 저장소 설정

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

pub   4096R/0EBFCD88 2017-02-22

      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88

uid                  Docker Release (CE deb) <docker@docker.com>

sub   4096R/F273FCD8 2017-02-22

 

$ sudo add-apt-repository \

   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \

   $(lsb_release -cs) \

   stable"

 

 

2. Docker 패키지 설치

$ sudo apt-get update

$ sudo apt-get install docker-ce

 

  - Docker 패키지의 특정 릴리즈 버전을 알고 싶으면, 다음 명령어로 확인이 가능하다.

$ apt-cache madison docker-ce

 

 

 - 또한, 다음 명령어를 통해 특정 릴리즈 버전의 설치도 가능하다.

$ sudo apt-get install docker-ce={Version}

  ex) $ sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu

 

 

3. Docker 테스트

$ sudo docker run hello-world

 

 

+ Recent posts