안녕하세요. 이번 포스팅에서는 최근에 새롭게 사용하게 된 오픈소스인 Saltstack을 학습하면서 동시에 포스팅을 작성해나갑니다.
0. Saltstack(솔트스택)??
saltstack 은 ansible, puppet 등과 같은 대규모 인프라를 관리하기 위한 자동화 관리 시스템입니다.
엔터프라이즈들은 인프라의 규모가 점점 더 커지며 클라우드 환경에서의 IaC(Infrastructure As a Code)를 위해 코드를 통한 인프라 관리가 가능한 툴들을 사용하게 되는데 Saltstack도 이 중 하나입니다.
1. Saltstack의 특징
많은 자동화 툴중에서 saltstack을 사용하는 데에 장점이 무엇인지 살펴봅니다.
1). 심플한 아키텍처(구조)
saltstack은 Server-agent 기반의 구조로 단순합니다. 명칭은 조금 다르지만 Server 역할을 하는 Master와 agent가 심겨지는 minion으로 구성됩니다. 특히 서버의 입장에서는 DB를 기본적으로 사용하지 않는 구조라 더욱 더 심플하게 됩니다. 물론 이는 Plug-in 방식으로 DB 또한 지원하므로 원하느대로 사용 가능합니다.
2). 빠른 속도
saltstack은 server와 agent간의 통신에서 zeromq라는 메세지큐를 사용합니다. 요청에 대해 비동기 병렬로 처리하므로 agent가 많아지는 상황에서도 병렬처리로 처리시간을 최소화합니다.
3). 다양한 모듈 지원
saltstack은 자체적으로 인프라를 코드로 관리(IaC)하기 위한 모듈들을 다양하게 제공합니다.
이 모듈들은 대규모의 인프라를 코드 몇줄로 단순하게 처리가능하게 합니다.
2. Saltstack의 아키텍처
saltstack의 아키텍처는 위에서 말씀드린대로 Server-Agent 구조를 사용하며 이는 곧 Master-Minion의 형태로 나타납니다.
위의 장표에서 saltstack의 기본이 되는 요소들에 대해서 정리합니다.
1. Master
Master는 saltstack에서 server 역할을 합니다. 이 master는 단독적으로 수천 대의 agent가 관리가 가능합니다.
Master는 agent가 설치된 Minion 들에게 명령을 zeromq를 통해 보낼 수 있고 이 처리 결과들을 취합합니다.
2. Minion
Minion은 saltstack의 agent가 설치되는 역할입니다. agent 설치 시에 해당 master와 연결이 가능하며 Master의 명령을 대기하다가 이를 수신할 시에 처리합니다.
만약, Minion에 agent를 설치하기 어려운 환경이거나 아키텍쳐일 경우 Ansible의 agentless 방식과 비슷하게 SSH를 통한 명령 Push 또한 가능합니다.
3. zeromq
saltstack에서 master와 minion 사이에서의 통신은 zeromq라는 비동기 병렬 메세지큐를 사용합니다.
이는 master가 설치되는 노드에 zeromq 또한 자동으로 설치되며,
송신 port 4505 / 수신 port 4506 를 사용합니다. 물론 이는 설정에서 다른 포트로 수정이 가능합니다.
4505 포트는 master의 송신을 위한 publisher 로 작동하며, 통신을 위해 Minion들이 해당 포트를 Listening 상태로 열어놔야 합니다.
master는 이 포트를 통해 명령을 전송(publish) 하며 minion들은 이를 비동기 형태로 동시에 받아 처리합니다.
4506 포트는 minion 의 송신을 위한 포트로 작동합니다.
master는 이 포트를 통해 minion들이 처리한 작업의 결과를 전달 받게 되며, 추가적으로 minion이 master에게 요청을 할 때도 사용합니다.
본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
'IT > Saltstack_솔트스택' 카테고리의 다른 글
[Saltstack / 솔트스택] Saltstack 설치 후 master, minion 기본설정 / 싱글노드 테스트 (0) | 2022.07.01 |
---|---|
[Saltstack / 솔트스택] Saltstack 패키지 설치 튜토리얼 (CentOS7 버전) (0) | 2022.06.20 |
댓글