728x90
SaltStack은 대규모 인프라를 관리하기 위한 자동화 관리 시스템 입니다.
위 그림처럼 Salt-master 하나가 여러개의 Salt-minion에게 명령을 publish 하고 그 결과를 취합하여 보여주는 구조입니다. 1대의 master가 수천대의 minion을 관리할 수 있습니다.
Salt-Master
Server 의 역할을 담당하며 minion들에게 명령을 publish 하고 그 결과를 보여줍니다. 따라서 데이터 저장소, 원격 명령 실행, 다른 시스템 상태 제어 센터의 역할을 담당합니다. ZeroMQ 라는 비동기 메시징 라이브러리를 통해 minion에게 통신합니다. Salt-Master를 설치하면 ZeroMQ도 함께 설치됩니다.
Salt-Minion
Agent 역할을 담당하며 구성 자동화를 하기위한 서버에 설치합니다. Master의 명령을 기다리다가 명령이 오면 작업을 수행합니다. 서버에 Agent를 설지하기 어렵다면 SSH로 명령 push 가 가능합니다 (Agentless 형태)
ZeroMQ
Salt-Master <-> Salt-Minion 간 통신에 사용되는 비동기 메시징 라이브러리입니다. Salt-Master를 설치하면 ZeroMQ도 함께 설치됩니다. 기본적으로 명령을 전달하는 publish port는 4505이고, minion들이 수행한 작업 결과를 받게되는 return port는 4506입니다.
SaltStack의 특징
- 구조가 심플하다
- Server - Agent 구조로 매우 단순합니다
- Server의 경우 DB를 사용하지 않으면 별도의 plug-in을 통해 db사용이 가능합니다
- 빠르다
- 요청에 대해 ZeroMQ를 통해 비동기 병렬로 처리함으로 Agent가 많아도 빠르게 처리가 가능합니다
- 다양한 모듈 지원
- 다양한 내부모듈이 있으며 대규모 인프라를 코드 몇줄로 단순하게 처리가 가능합니다
- Python 기반
- SaltStack은 Python을 기반으로 개발되었으며 Module/Function으로 구현되어있습니다.
- AES 암호화 통신
- Minion이 Master에 처음 등록될때 Minion은 Master에게 자신의 public key 전달됩니다.
- Master는 해당 Minion의 public key 저장하고 해당 minion의 등록을 허가합니다.
- ZeroMQ로 통신할때 publicKey와 AES Key를 이용해 암호화 되어 통신됩니다.
- Characterizable
- 각 특성을 가진 Minion에게 별도의 명령을 내릴 수 있습니다.
- Minion은 Master에게 전달받은 명령을 확인해 자신의 특성과 일치하는지 판별후 일치하면 실행합니다
- Performance
- MessagePack을 사용하여 Message(Master의 명령)을 효율적으로 직렬화할 수 있습니다.
- Salt는 비동기 네트워킹 라이브로리로 Python Tornado를 사용하며 멀티쓰레딩 및 동시성에 대한 최신 접근 방식을 사용합니다.
Salt 문법
- target: 타겟하는 minion. ('*'일 경우 모든 Minion에 전달합니다.)
- module.function: 사용하는 module과 function의 조합으로 명령을 내립니다.
- arguments: module.function에 인자값을 부여합니다
출처:
- SaltStack
728x90
'Network' 카테고리의 다른 글
[네트워크] 커버로스(kerberos)란? (0) | 2023.04.11 |
---|---|
[네트워크] 분산 서버 환경에서 세션공유 문제 해결법 (0) | 2022.11.01 |
[네트워크] HTTP vs HTTPS (0) | 2022.11.01 |
[네트워크] TCP와 UDP (0) | 2022.11.01 |
[네트워크] OSI 7 계층, OSI 참조모델 (0) | 2022.11.01 |