SaltStack-개요

이 장에서 우리는 SaltStack의 기초를 배울 것입니다. SaltStack의 원격 실행 기능을 통해 관리자는 유연한 타겟팅 시스템과 함께 다양한 머신에서 명령을 실행할 수 있습니다. 솔트 구성 관리는 마스터 미니언 모델을 설정하여 주어진 정책에 따라 인프라 구성 요소를 빠르고 쉽고 유연하고 안전하게 가져옵니다.

SaltStack이란 무엇입니까?

Salt는 매우 강력한 자동화 프레임 워크입니다. 솔트 아키텍처는 원격으로 명령을 실행한다는 아이디어를 기반으로합니다. 모든 네트워킹은 원격 실행의 일부 측면을 중심으로 설계되었습니다. 이것은 질문하는 것만 큼 간단 할 수 있습니다.Remote Web Server정적 웹 페이지를 표시하거나 셸 세션을 사용하여 원격 서버에 대해 대화식으로 명령을 실행하는 것처럼 복잡합니다. 솔트는보다 복잡한 원격 실행 유형 중 하나의 예입니다.

Salt는 사용자가 명시 적으로 여러 컴퓨터에 직접 명령을 내리고 지정할 수 있도록 설계되었습니다. 소금은 하나 또는 그 이상을 제어하는 ​​스승의 아이디어를 기반으로합니다.Minions. 명령은 일반적으로 마스터에서 대상 미니언 그룹으로 발행되며, 그런 다음 명령에 지정된 작업을 실행 한 다음 결과 데이터를 다시 마스터로 반환합니다. 마스터와 미니언 간의 통신은ZeroMQ message bus.

SaltStack 모듈은 지원되는 미니언 운영 체제와 통신합니다. 그만큼Salt Master기본적으로 Linux에서 실행되지만 모든 운영 체제는 미니언이 될 수 있으며 현재 Windows, VMware vSphere 및 BSD Unix 변형이 잘 지원됩니다. 솔트 마스터와 미니언은 키를 사용하여 의사 소통합니다. 미니언이 처음으로 마스터에 연결하면 마스터에 키를 자동으로 저장합니다. SaltStack은 또한Salt SSH, "에이전트없는"시스템 관리를 제공합니다.

SaltStack 필요

SaltStack은 속도와 확장 성을 위해 만들어졌습니다. 이것이 LinkedIn, WikiMedia 및 Google에서 수만 대의 서버로 대규모 인프라를 관리하는 데 사용되는 이유입니다.

여러 서버가 있고 해당 서버에 대해 작업을 수행하려고한다고 가정 해보십시오. 각각에 로그인하고 각각에 대해 한 번에 하나씩 작업을 수행 한 다음 소프트웨어를 설치 한 다음 특정 기준에 따라 해당 소프트웨어를 구성하는 것과 같은 복잡한 작업을 수행 할 수 있습니다.

서버가 10 대 또는 100 대라고 가정 해 보겠습니다. 한 번에 하나씩 각 서버에 개별적으로 로그인하여 100 대의 컴퓨터에서 동일한 명령을 실행 한 다음 100 대의 모든 컴퓨터에서 구성 파일을 편집하는 작업이 매우 지루한 작업이된다고 상상해보십시오. 이러한 문제를 극복하려면 하나의 명령을 입력하기 만하면 모든 서버를 한 번에 업데이트 할 수 있습니다. SaltStack은 이러한 모든 문제에 대한 정확한 솔루션을 제공합니다.

SaltStack의 특징

SaltStack은 오픈 소스 구성 관리 소프트웨어 및 원격 실행 엔진입니다. Salt는 명령 줄 도구입니다. Python으로 작성되었지만 SaltStack 구성 관리는 언어에 구애받지 않고 간단합니다. Salt 플랫폼은 SSH 프로토콜을 통해 명령을 실행하기 위해 푸시 모델을 사용합니다. 기본 구성 시스템은YAMLJinja templates. 소금은 주로Puppet, ChefAnsible.

Salt는 다른 경쟁 도구와 비교할 때 많은 기능을 제공합니다. 이러한 중요한 기능 중 일부는 다음과 같습니다.

  • Fault tolerance− 솔트 미니언은 사용 가능한 모든 마스터의 YAML 목록으로 마스터 구성 매개 변수를 구성하여 한 번에 여러 마스터에 연결할 수 있습니다. 모든 마스터는 Salt 인프라에 명령을 전달할 수 있습니다.

  • Flexible− Salt의 전체 관리 접근 방식은 매우 유연합니다. 동일한 환경에서 에이전트 및 서버, 에이전트 전용, 서버 전용 또는 위의 모든 항목과 같이 가장 많이 사용되는 시스템 관리 모델을 따르도록 구현할 수 있습니다.

  • Scalable Configuration Management − SaltStack은 마스터 당 1 만 개의 미니언을 처리하도록 설계되었습니다.

  • Parallel Execution model − Salt는 명령이 원격 시스템을 병렬로 실행할 수 있도록합니다.

  • Python API − Salt는 간단한 프로그래밍 인터페이스를 제공하며 모듈 식으로 쉽게 확장 할 수 있도록 설계되어 다양한 애플리케이션에 쉽게 성형 할 수 있습니다.

  • Easy to Setup − Salt는 설치가 쉽고 서버 수에 관계없이 다양한 요구 사항을 관리 할 수있는 단일 원격 실행 아키텍처를 제공합니다.

  • Language Agnostic − 솔트 상태 구성 파일, 템플릿 엔진 또는 파일 유형은 모든 유형의 언어를 지원합니다.

SaltStack의 이점

간단하고 기능이 풍부한 시스템이기 때문에 Salt는 많은 이점을 제공하며 다음과 같이 요약 할 수 있습니다.

  • Robust − Salt는 강력하고 강력한 구성 관리 프레임 워크이며 수만 개의 시스템에서 작동합니다.

  • Authentication − Salt는 인증을 위해 간단한 SSH 키 쌍을 관리합니다.

  • Secure − Salt는 암호화 된 프로토콜을 사용하여 안전한 데이터를 관리합니다.

  • Fast − Salt는 원격 실행 엔진의 기반을 제공하는 매우 빠르고 가벼운 통신 버스입니다.

  • Virtual Machine Automation − Salt Virt Cloud Controller 기능은 자동화에 사용됩니다.

  • Infrastructure as data, not code − Salt는 간단한 배포, 모델 기반 구성 관리 및 명령 실행 프레임 워크를 제공합니다.

ZeroMQ 소개

Salt 기반 ZeroMQ라이브러리이며 포함 가능한 네트워킹 라이브러리입니다. 가볍고 빠른 메시징 라이브러리입니다. 기본 구현은C/C++ 다음을 포함한 여러 언어에 대한 기본 구현 Java.Net 사용할 수 있습니다.

ZeroMQ는 브로커가없는 피어-피어 메시지 처리입니다. ZeroMQ를 사용하면 복잡한 통신 시스템을 쉽게 설계 할 수 있습니다.

ZeroMQ에는 다음과 같은 5 가지 기본 패턴이 있습니다.

  • Synchronous Request/Response − 요청을 보내고 각 전송에 대한 후속 응답을받는 데 사용됩니다.

  • Asynchronous Request/Response− 요청자는 요청 메시지를 전송하여 대화를 시작하고 응답 메시지를 기다립니다. 공급자는 들어오는 요청 메시지를 기다렸다가 응답 메시지로 응답합니다.

  • Publish/Subscribe − 단일 프로세스 (예 : 게시자)에서 여러 수신자 (예 : 구독자)에게 데이터를 배포하는 데 사용됩니다.

  • Push/Pull − 연결된 노드에 데이터를 배포하는 데 사용됩니다.

  • Exclusive Pair − 두 피어를 연결하여 쌍을 형성하는 데 사용됩니다.

ZeroMQ는 클러스터, 클라우드 및 기타 다중 시스템 환경간에 메시지를 교환하기위한 매우 유연한 네트워킹 도구입니다. ZeroMQ는default transport library SaltStack에서 제공됩니다.