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

Mcollective 는 무엇인가?

Mcollective 는 병렬 job 실행에 대한 프레임워크를 제공함. 최대한 실시간으로 서버 클러스터를 변경하는데 필요한 조정 작업(command & control)을 하는데 사용을 한다.

Puppet/Chef/Salt 등과 같은 설정 관리 프로그램은 설정의 일관성을 관리하는데 사용을 하지만 Mcollective 는 보다 빠르게 전체 시스템에 걸쳐 특정 작업 또는 자주 하는 1회성 작업을 조정하는데 사용한다.

 

Chef, Pupet, Capistrano, Salt 등의 제한점. pssh 같은 병렬 실행 프로그램의 제한점

  • Loops through systems in order, processing a few at a time
  • Simplistic (or overly complex) authentication mechanisms
  • Requires customization for each alternative environment
  • Unable to respond to deviations in response
  • Too easy to overlook fatal error messages output to the screen
  • Doesn’t support or extend existing management tools

 

Mcollective 는 다른 툴과 다음 부분이 다르다.

  • 마스터 서버가 없는 환경을 제공해서 수천 대 이상의 시스템에서 병렬 작업을 실행할 수 있음
  • 커스터마이징할 수 있는 authentication(인증), authorization (인가) 메카니즘을 제공함
  • 서로 다른 플랫폼, 아키텍쳐, 로컬 환경을 투명하게 처리할 수 있음
  • Returns full data sets as result codes, allowing intelligent response (리턴 코드로 전체 데이터 셋을 제공하여 지능적인 응답을 할 수 있음.)
  • Directs results to a processor that takes action on responses
  • Puppet, Chef 같은 설정 관리 프로그램과 통합을 할 수 있음.

작동 방식

Mcollective 은 일관성 있고 반복할 수 있는 있는 결과를  보장하는 진정한 병렬 실행을 위해 만들어 졌다. Mcollective는 명령과 제어를 위해 중앙의 마스터를 사용하지 않기 때문에 중앙 마스터 서버의 리소스 문제를 피하고 있다. 또한 클러이언트에 순차적으로 접근하는 방식이 아니기 때문에 시스템 간의 drift 를 피할 수 있다. (순차적으로 명령을 실행하는 경우 각 시스템간에 실행 시간에 차이가 생김. )

 

Mcollective 는 클러이언트와 서버간의 요청을 전달하기 위해서 publish/subscribe 미들웨어를 사용한다. Controlled 노드는 mcollectived 라는 서버 애플리케이션을 실행한다. 이 서버는 message topics 에 sbuscribe 되어 있다. 클라이언트는 message topics에 요청을 하는 애플리케이션이다. publish/subscribe 작업은 미들웨어 브로커에 대한 persistent connections 를 통해서 처리가 된다.

 

mcollectived 서버는 미들웨어 브로커에 등록이 되고 listening 이나 IDLE 상태로 남아 있다. 클라이언트에서 미들웨어에 요청을 보낼 때마다 각 서버는 바로 그리고 독립적으로 요청을 받고 처리를 한다. mcollectived 는 요청에 대해서 확인을 하고 해당 요청을 처리할 agent 에 요청을 전달한다. 해당 agent 는 요청을 처리하고 응답을 보낸다.  Puppet Master 나 Chef 서버처럼 중앙의 리소스에서 정보를 가져오거나 보내지 않으며 사용하는 모든 리소스는 노드의 로컬 자원이다.

 

이러한 모델에서는 정확히 같은 시간에 몇십대, 몇백대, 몇천 대 이상의 노드에서 명령 실행이 가능하다. publish/subscribe 인프라스트럭쳐를 통해 확장가능하고 빠른 병렬 실행 환경을 만들 수 있다.

 

 

특 정 노드에만 명령을 실행할 경우에는 어떻게 하는가? Mcollective 는 어떤 노드에서 명령을 실행할지를 지정할 수 있는 방법을 제공한다. hostname, OS, 설치한 패키지, 실행하고 있는 프로세스 등으로 필터를 설정할 수 있다. 자신의 환경에 맞게 직접 agent 를 만들 수도 있다.

왜 Mcollective를 쓰는가?

  • Mcollective는 분산된 publish/subscribe 미들웨어를 이용하여 중앙 마스터/슬레이브 환경에서 생기는 리소스 문제를 해결한다
  • Mcollective는 hostname, OS 등 일반적으로 많이 사용하는 정보 뿐만 아니라 커스텀 모듈에서 지정할 수 있는 어떤 정보든지 이용을 하여 필터링을 할 수 있다.
  • Mcollective agent는 내부적으로 호스트에 특정한 루틴을 구현하여 서로 다른 OS에 동일한 명령을 내릴 수 있다.
  • Mcollective agent 는 성공, 실패, 특정 리턴 코드,전체 프로세스에서 만든 데이타 타입 등을 레포팅 할 수 있다.
  • Puppet, Chef에 대해서 제어하고, 재사용할 수 있는 agent 가 있다.
Labels
  • No labels