자동화된 SaltStack(개요 및 간단한 구성 사례)

생산 환경에서 서버는 종종 한 대에 그치지 않고 수천 수만 대일 수도 있다.운영자에게 있어서 만약에 각 서버를 단독으로 관리한다면 작업의 난이도는 정말 너무 크다.SaltStack은 서버 인프라 관리 도구로 설정 관리, 원격 실행, 모니터링 등 기능을 갖추고 있다.SaltStack은 Python 언어로 작성되어 매우 간단하고 사용하기 쉬우며 가벼운 관리 도구입니다.
SaltStack 환경을 배포하여 수천 수만 대의 서버에서 명령을 대량 실행할 수 있습니다.서로 다른 업무에 대해 집중 관리, 파일 분배, 데이터 수집, 소프트웨어 패키지 관리 등을 하면 운영 인원들이 업무 효율을 높이고 업무 배치와 조작을 규범화하는 데 유리하다.

SaltStack 원리


SaltStack은 Master와 Minion으로 구성되어 있으며 Master는 서버를 표시합니다.Minion은 여러 서버를 나타내는 고객 서비스입니다.Master에서 조건에 맞는 Minion에 명령을 보내면 Minion은 상응하는 명령을 실행하고 Master와 Minion 사이에는 ZeroMQ(메시지 대기열)를 통해 통신한다.SaltStack의 Master 측은 4505와 4506 포트를 감청하고 4505는 Master와 Minion 인증 통신 포트이며 4506는 Master가 명령을 보내거나 Minion의 명령을 수신하여 되돌아오는 정보를 실행합니다.클라이언트가 시작되면 마스터 측에 주동적으로 접속하여 등록하고 이 TCP 연결을 유지하며 마스터는 이 TCP 연결을 통해 클라이언트를 제어합니다.연결이 끊어지면 마스터는 클라이언트를 제어할 수 없습니다.단, 클라이언트가 연결이 끊어진 것을 확인한 후, 정기적으로 마스터 측에 연결 등록을 요청합니다.

SaltStack 일반 모듈


SaltStack은 운영 체제의 기본 기능과 자주 사용하는 도구를 쉽게 조작할 수 있도록 매우 많은 기능 모듈을 제공합니다.
  • (1)pkg모듈 pkg모듈의 역할은 패키지 관리이고 삭제 업데이트를 포함한다..
  • (2) file 모듈 file 모듈의 역할은 파일 작업을 관리하는 것이다. 파일 동기화, 파일 권한 설정과 소속 사용자 그룹, 파일 삭제 등을 포함한다
  • (3)cmd모듈 cmd모듈의 역할은 Minion에서 명령이나 스크립트를 실행하는 것이다..
  • (4)user 모듈user 모듈의 역할은 시스템 계정 조작을 관리하는 것이다..
  • (5) 서비스 모듈 서비스 모듈의 역할은 시스템 서비스 조작을 관리하는 것이다
  • (6)cron 모듈cron 모듈의 역할은cron 서비스 조작을 관리하는 것이다..

  • 사례: SaltStack 대량 배포 및 Apache 구성


    수요 분석


    1. 사례 목적


    생산 환경에서는 종종 서로 다른 업무 수요에 따라 Nginx 서버를 그룹으로 배치하고 설정해야 한다.이 사례는 세 대의 서버를 사용했는데 모두 CentOS7.4 시스템 버전으로 인터넷에 연결할 수 있도록 했고 SELinux와 방화벽은 모두 닫혔다.주의해야 할 것은 세 대의 서버는 반드시 완전한 FQDN을 도메인 이름과 같은 형식으로 설정해야 한다. 그렇지 않으면 메인 컨트롤러에서 원격 명령이나 설정을 실행할 때 기다리는 시간이 매우 길고 심지어는 다른 통제할 수 없는 문제가 발생할 수도 있다.

    2. 배포 환경


    역할
    호스트 이름
    IP 주소
    그룹 이름
    master
    master.saltstack.com
    192.168.88.13
    ——
    minion
    web01.saltstack.com
    192.168.88.14
    group1
    minion
    web02.saltstack.com
    192.168.88.15
    group2

    작업 단계


    1. SaltStack 설치


    1.1 먼저 epel 소스를 설치합니다. 뒤에 SaltStack 서버와 클라이언트를 설치해야 하기 때문입니다. 뒤에 아파치도 포함됩니다.
    yum install epel-release -y     // 

    1.2 메인 컨트롤러(master)는salt-master를 설치하고, 피컨트롤러(minion)는salt-minion을 설치한다
    [root@master ~]# yum install salt-master -y
    [root@web01 ~]# yum install salt-minion -y
    [root@web02 ~]# yum install salt-minion -y

    1.3 메인 컨트롤러 프로필/etc/salt/master를 설정합니다. 기본 마스터 파일은 모두 주석입니다.마스터 측 수정 내용은 다음과 같습니다.
    [root@master ~]# cat /etc/salt/master | grep -v ^$ | grep -v ^#
    interface: 192.168.88.13        // 15 
    
    auto_accept: True               // 215 
    
    file_roots:                     // 416 saltstack , 
      base:
        - /srv/salt
    
    pillar_roots:                   // 529 , 
      base:
        - /srv/pillar
    
    pillar_opts: True               // 552 pillar 
    
    nodegroups:                     // 710 
      group1: 'web01.saltstack.com'
      group2: 'web02.saltstack.com'

    1.4salt 파일 루트 디렉터리 및 pillar 디렉터리 만들기
    [root@master ~]# mkdir /srv/salt
    [root@master ~]# mkdir /srv/pillar

    1.5salt-master 서비스 시작 및 포트 확인
    [root@master ~]# systemctl start salt-master.service 
    [root@master ~]# netstat -natp | egrep '4505|4506'
    tcp        0      0 192.168.88.13:4505      0.0.0.0:*               LISTEN      3316/python         
    tcp        0      0 192.168.88.13:4506      0.0.0.0:*               LISTEN      3338/python

    1.6 감시 대상 두 개의 프로필/etc/salt/minion 설정 (기본 minion 파일은 모두 주석임)
    master:192.168.88.13            //16 , IP
    id:web01.saltstack.com          //72 , , web02.saltstack.com

    1.7 각각 두 대의 피제어단 서비스를 시작하고 메인 제어단에서 메인 제어단과 피제어단의 통신 상태를 간단하게 테스트한다. 만약에 모두 True로 돌아간다면 정상이다.
    [root@web01 salt]# systemctl start salt-minion.service
    [root@web02 ~]# systemctl start salt-minion.service
    [root@master ~]# salt '*' test.ping
    web02.saltstack.com:
        True
    web01.saltstack.com:
        True

    2. SaltStack Apache 대량 배포


    2.1 주 제어 포트에 포털 파일 top을 생성합니다.sls
    [root@master salt]# vim top.sls
    base:
     '*':
       - apache

    2.2 피제어기의 실행 상태를 정의하고apache 소프트웨어를 설치하고 파일을 설정하고 시작합니다
    [root@master salt]# vim apache.sls
    apache-service:
      pkg.installed:
        - names:
          - httpd
          - httpd-devel
      service.running:
          - name: httpd
          - enable: True

    2.3 서비스를 재개한 후 메인 컨트롤러에서state 명령을 갱신하여 두 개의 컨트롤러가apache를 설치하고 설정하도록 합니다
    [root@master salt]# systemctl restart salt-master.service 
    [root@master salt]# salt '*' state.highstate 
    web02.saltstack.com:
    ----------
              ID: apache-service
        Function: pkg.installed
            Name: httpd
          Result: True
         Comment: The following packages were installed/updated: httpd
         Started: 15:19:03.880968
        Duration: 47422.538 ms
         Changes:   
                  ----------
                  apr:
                      ----------
                      new:
                          1.4.8-3.el7_4.1
                      old:
                  apr-util:
                      ----------
                      new:
                          1.5.2-6.el7
                      old:
                  httpd:
                      ----------
                      new:
                          2.4.6-80.el7.centos.1
                      old:
                  httpd-tools:
                      ----------
                      new:
                          2.4.6-80.el7.centos.1
                      old:
    ... 

    2.4 피제어단으로apache가 성공적으로 설치되었는지 확인하고 포트를 보십시오
    [root@web01 salt]# rpm -q httpd
    httpd-2.4.6-80.el7.centos.1.x86_64
    [root@web01 salt]# netstat -natp | grep 80
    tcp        0      0 192.168.88.14:42808     192.168.88.13:4505      ESTABLISHED 3487/python         
    tcp6       0      0 :::80                   :::*                    LISTEN      4186/httpd          
    [root@web02 ~]# rpm -q httpd
    httpd-2.4.6-80.el7.centos.1.x86_64
    [root@web02 ~]# netstat -natp | grep 80
    tcp6       0      0 :::80                   :::*                    LISTEN      4316/httpd

    이렇게 하면 SaltStack을 통해 아파치를 대량으로 배치할 수 있습니다!

    좋은 웹페이지 즐겨찾기