Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나
Skip to end of metadata
Go to start of metadata

여기에서는 Mcollective 환경을 구현하지만 세부적인 환경 설정까지 설명을 하지는 않는다.

기본 설정은 다음과 갈이 구성을 한다.

  • 메시징 브로커 미들웨어로 ActiveMQ 사용
  • clients 와 servers 사이에 데이터 유효성을 확인하기 위해 Pre-Shared Key (PSK) 플러그인 사용
  • A simple Admin User has Totla Control authorization scheme

요구사항

OS

시간 동기화가 동작하고 있어야 함. ntp 이용하여 시간 동기화해서 사용

Ruby 1.8.7, 1.9.3, 2.0 : Mcollective 는 Ruby 1.8.7 이하의 ruby  에서는 동작하지 않음. http://docs.puppetlabs.com/mcollective/deploy/install.html 문서를 보면 2.0은 공식 지원은 하지 않지만 동작은 한다고 나와 있음.

Ruby STOMP gem 1.2.10, 1.3.2, or higher : STOMP 는 Simple Text Oriented Messaging Protocol 임.

5MB 디스크 공간

256MB 메모리

git 클라이언트 : 소스로 Mcollective 를 설치하거나 플러그인을 설치할 때만 필요함.

미들웨어 브로커

최소 500MB 메모리

STOMP connector 를 지원하는 ActiveMQ 5.8 또는 이상 버전. http://activemq.apache.org/stomp.html

STOMP connector 를 지원하는RabbitMQ 3.2 또는 이상 버전. http://www.rabbitmq.com/stomp.html

디스크 공간은 미들웨어에 따라 다르며 ActiveMQ는 45MB, RabbitMQ는 10MB 필요함.

 

대부분의 최신 OS에서는 수백대의 Mcollective 서버 연결을 처리할 수 있습니다. 수천의 동시 연결을 처리하도록 브로커를 튜닝하려면 "Large-Scale Broker configurations" 참고.(p118)

어디에 설치해야 하나?

CentOS 6.5 또는 Ubuntu 1.310 xi86 이상을 추천함.

Passoword and Keys

보안에 대한 부분은 11장 Midlleware Security, 13장 Mcollective Security 에서 자세히 다룸.

이 책에서는 openssl 로 랜덤하게 패스워드 만드는 것을 설명하고 있음.

Client password : clients 가 ActiveMQ에 접속해서 서버 호스트에 명령을 내릴 때 필요함.

Server password : server 에서 ActiveMQ에 접속하여 command channels 에 subscribe 하기 위해서 필요함.

Pre-Shared Key : 서버와 클라이언트간의 통신을 할 때 통신을 검증하기 위해서 필요함. SSL/TSL 에 대해서는 13장 Mcollective Security 에서 설명을 함.

보안을 위하여 Client 와 Server password 는 서로 다르게 할 것을 추천함.

Puppet Labs Repository

Puppet Lab에서 APT, YUM repo를 제공한다. Puppet Lab repo를 통하여 Mcollective, Puppet, Facter, ActiveMQ 등과 RHEL 5.X 에서 Ruby 1.8.7 과 같은 의존성 있는  패키지를 설치할 수 있다.

RHEL6, RHEL5, Fedora, Debian 과  Ubuntu 등을 제공한다.

https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html 참고.

RHEL6, CentOS6 에서는 다음과 같이 Puppet Lab yum repo를 설정할 수 있다.

ActiveMQ 설정하기

Mcollective 에서는 publish/subscribe 미들웨어가 반드시 필요하다. Puppet Labs 에서는 성능, 확장성, 테스팅 등에서 ActiveMQ를 추천하고 있다.

activemq는 Java 프로그램이기 때문에 사전에 먼저 jdk/jre 를 설치한 후 activemq를 설치한다.

설정파일 업데이트

상세한 내용은 p101 "Detailed Configuration Review"에서 설명한다.

CentOS6 에서는 /etc/activemq/activemq.xml 파일을 편집한다.

  • Enable purging in the broker
    • schedulePeriodForDestinationPurge 을 추가해준다. 오래된 큐를 정리하는데 필요한 옵션이다.

  • Disable producerFlowControl
    • topics, queues 에서 flow control 을 비활성화하고 stale queues 에 대한 가비지 컬렉션을 활성화한다.
    • In topic and queue names, the > character is a wildcard that will match any character until the end of the string. 모든 topic 과 queue 에 대해서 적용할 룰이다.
  • Define logins for clients and servers in simpleAuthenticationPlugin
    • Mcollective servers 와 clients 에서 사용할 사용자 이름, 비밀번호를 지정한다. 여기서 설정한 사용자 이름, 비밀번호는 mcollective 설정에서 동일하게 사용을 해야 한다.

    • groups 는 해당 사용자를 인가(authorization)에 사용하기 위한 그룹에 할당한다.

  • Define permissions for clients and servers in authorizationPlugins
    • 앞에서 생성했던 사용자에 대해서 권한을 설정한다.

  • Transports
    • 오 직 하나의 transport 만 활성화를 해야 한다. 다른 transports 를 삭제하거나 주석처리하고 STOMP transport만 활성화를 한다. nio는 JAVA Non-blocking i/o를 지원하는 것이며 나중에 따로 설명을 한다.

  • Disable the web console : mcollective 에서 ActiveMQ web console 은 필요하지 한다. 보안을 위해서 비활성화를 한다.
  • 여기에서 설정한 activemq 설정파일은 2. Installation2. Installation 내용을 참고

서비스 시작 및 확인

ActiveMQ 를 시작하고 ActiveMQ가 TCP port 61613 에서 정상적으로 올라오는지 확인을 한다. 문제가 있으면 로그 파일을 통해서 확인을 한다.

ActiveMQ web console

상세 내용은 http://activemq.apache.org/web-console.html 참고.

ActiveMQ web console 을 활성화한 경우 시스템 상태 등 ActiveMQ의 정보를 볼 수 있다. localhost 를 해당 ip로 바꾸어 접근하면 된다. 기본은 사용자 인증은 가능하지만 비활성화되어 있다.

http://localhost:8161/admin

사용자 인증을 이용하려면 ${ACTIVEMQ_HOME}/conf/jetty.xml 에서 authenticate 를 true 로 변경한다. (CentOS6 /etc/activemq/jetty.xml)

그 러면  ${ACTIVEMQ_HOME}/conf/jetty-realm.properties (CentOS6 /etc/activemq/jetty-realm.properties)에 지정되어 있는 계정과 비밀번호를 이용할 수 있다. 기본은 admin/admin 으로 되어 있다.

<property name="authenticate" value="false" />

authenticate 를 true로 변경함.

<property name="authenticate" value="true" />

Server 설치하기

mcollectived 애플리케이션 서버는 clients 에서 요청한 처리를 처리할 모든 노드에 설치해야 한다.

CentOS6 에서 mcollective를 설치한다. mcollective로 관리할 모든 서버에 설치를 해야 한다.

/etc/mcollective/server.cfg 파일을 편집한다. plugin.activemq.pool.1.host 는 설정 환경에 맞게 변경하고 plugin.activemq.pool.1.user, plugin.activemq.pool.1.password  도 ActiveMQ에 설정한 것과 동일하게 맞춘다.

mcollective 를 시작하고 서비스를 확인한다. mcollective 서버가 ActiveMQ 서버의 포트 연결을 확인한다. (server.cfg 파일과 activemq.xml 파일에 지정한 포트)

 

Client 생성하기

mcollective-client 설치

/etc/mcollective/client.cfg 파일을 다음과 같이 설정한다. host, port, user, password 는 실제 설정에 맞추어야 한다.

/etc/mcollective/client.cfg 파일에 대한 보안을 위하여 다음과 같이 퍼미션을 바꾼다.

소스로 설치하기

설명 생략

설치한 것 테스팅 하기

미들웨어 호스트를 설정하고 나면 최소 하나의 서버와 하나의 클라이언트가 있으며 설정이 동작하는지 테스팅을 할 수 있다. 

mcollective client 에서 mco ping 명령을 이용하여 각 노드가 통신을 하는지 확인할 수 있다. ping 은 각 서버 노드가 midlleware 를 통해서 통신을 하고 있는지 확인을 하는 명령어이다.

문제 찾기

mco ping 이 제대로 작동하지 않는다면 Passwords, Networking, Connector Names 등을 확인해야 한다.

자세한 내용은 책 참고.

 

문태준 추가 - MCollective Vagrant 예제

vagrant 로 Mcollective 데모를 할 수 있다.

https://docs.puppetlabs.com/mcollective/deploy/demo.html

이 사이트에 가면 https://github.com/ripienaar/mcollective-vagrant 로 링크가 되어 있다.

사전에 virtualbox, vagrant 설치를 하고 난 후 vagrant 에서 mcollective 이미지를 다운받아 실행하면 된다.

OS는 CentOS 6.3 x86_64 이며 ruby는 1.8.7 이 설치가 되어 있다.

middleware 는 redis 를 이용하고 있다.

 

아래는 vagrant 로 설치를 했을 때 기본 사용가능한 mcollective client 예제이다.

mco 의 경우 mcollective 클라이언트에만 설치를 하면 되지만 지금의 demo에서는 middleware 를 포함 모든 노드에 설치를 하고 있다.

실제 구현을 할 때는 mcollective 클라이언트는 꼭 필요한 곳에만 설치를 해야 한다. 안 그러면 mcollective 클라이언트가 설치된 곳에서 각종 작업을 할 수 있는 위험이 있다.

Labels
  • No labels