Automation Config을 설치할 때 Automation Config 설치 관리자에 제공된 오케스트레이션 highstate를 실행합니다. highstate는 Salt 마스터에서 실행되며 다중 노드 환경을 설정합니다. 이는 PostgreSQL, Redis 및 RaaS 노드를 호스팅할 세 개의 다른 노드에 핵심 Automation Config 아키텍처를 설치합니다.

주의: 컨테이너에 Automation Config를 배포하는 것은 지원되지 않거나 권장되지 않습니다.

설치의 최종 목표는 각각 다른 호스트 기능을 가진 4개의 노드를 갖는 것입니다. 각 노드는 Salt 마스터의 미니언이기도 합니다.

  • Salt 마스터 노드
  • PostgreSQL 데이터베이스 노드
  • Redis 데이터베이스 노드
  • RaaS 노드(Automation Config 노드라고도 함)
경고:

특히 노드에 Salt 설치에 나열된 모든 단계를 따르는 것이 중요합니다. 특히 Automation Config 설치 관리자에 필요한 종속성을 설치의 4개 노드 모두에 반드시 설치해야 합니다. 그렇지 않으면 다중 노드 설치가 실패합니다.

필요한 종속성은 다음과 같습니다.

  • OpenSSL
  • EPEL(Enterprise Linux용 추가 패키지)
  • Python 암호화
  • Python OpenSSL 라이브러리

고가용성

여러 Salt 마스터 또는 여러 RaaS 노드를 설정할 수 있습니다. 한 노드에서 Salt 마스터 서비스를 실행하고 별도의 노드에서 둘 이상의 다른 서비스를 결합할 수도 있습니다. 이러한 종류의 시스템 아키텍처를 구성하는 단계는 이 가이드에서 완전히 설명되지 않습니다.

고가용성 또는 사용자 지정 아키텍처 요구 사항에는 컨설팅 서비스가 필요할 수 있습니다. 하지만, 동일한 유형의 여러 노드를 설정하기 전에 일반적으로 다중 노드 설치 시나리오부터 시작한 다음 나중에 추가 아키텍처를 구성합니다.

고가용성에 대한 자세한 내용은 필수 Automation Config 종속성 항목을 참조하십시오.

4개 노드에 대한 주요 데이터 기록

표준 설치를 시작하기 전에 설치와 관련된 4개의 노드 각각에 대한 주요 데이터를 기록합니다. 이러한 데이터는 설치 프로세스 중에 여러 지점에서 입력합니다.

설치와 관련된 4개의 노드 각각에 대해 다음과 같은 주요 데이터를 기록합니다.

  • IP 주소 또는 DNS 이름
  • 미니언 ID

어떤 IP 주소와 미니언 ID가 어떤 호스트(Salt 마스터 노드, RaaS 노드, PostgreSQL 데이터베이스 노드, Redis 데이터베이스 노드)에 속하는지 명확하게 표시해야 합니다.

가장 좋은 방법은 IP 주소 또는 DNS 이름이 올바른지 확인하는 것입니다. IP 주소 또는 DNS 이름이 잘못되면 다중 노드 설치 실패를 유발할 수 있기 때문입니다.

이 데이터는 참조용으로 쉽게 액세스할 수 있는 레코드에 보관하십시오. 오케스트레이션을 구성할 때 구성 파일의 여러 설정 및 변수에 이 데이터를 입력해야 합니다. 따라서 설치하는 동안 찾기 쉬운 곳에 이 레코드를 보관하는 것이 좋습니다.

참고:

가상화된 환경에 있는 경우 공용 주소가 아닌 내부 주소를 지정해야 합니다.

정적 IP 주소와 동적 IP 주소 비교

Redis 및 PostgreSQL 호스트에는 구성 파일이 참조하는 정적 IP 주소 또는 DNS 이름이 필요합니다. RaaS 노드가 배포되는 방식에 따라 정적 IP 주소 또는 DNS 이름도 필요할 수 있습니다. 구성에서 동적 IP 주소에 의존하면 환경이 변경되고 손상될 수 있습니다.

사용자 지정 미니언 ID 설정(선택 사항)

미니언 ID는 Salt 마스터가 관리하는 각 미니언에 부여되는 고유한 이름입니다. 기본적으로 미니언은 시스템의 호스트 이름을 통해 Salt 마스터에서 식별됩니다. 하지만 네트워크 내의 기능이나 위치를 설명하는 사용자 지정 ID를 할당할 수 있습니다.

미니언 ID를 사용자에 맞게 수정하려면, 간략하지만 역할을 설명하는 ID를 사용하는 것이 좋습니다. 예를 들어 apache-server-1을 사용하여 웹 서버 중 하나의 이름을 지정하거나 데이터 센터의 위치에 따라 datacenter-3-rack-2를 사용할 수 있습니다. 나중에 참조하기 쉽도록 설명이 포함된 유용한 이름을 만드는 것이 목표입니다.

미니언 ID를 선언하려면:

  1. 미니언의 터미널에서 미니언의 minion.conf 파일이 포함된 디렉토리로 이동합니다. 기본적으로 디렉토리 위치는 etc/salt/minion.d입니다.
  2. 편집기에서 minion.conf 파일을 엽니다. id 설정을 선호하는 미니언 ID로 변경합니다. 예를 들면 다음과 같습니다.
    id: postgres-database-1
  3. 미니언 ID를 변경한 후에는 Salt 마스터가 미니언의 키를 수락(또는 다시 수락)해야 합니다. 키 설정에 대한 자세한 지침은 마스터의 미니언 키 수락을 참조하십시오.

상위 상태 파일 복사 및 편집

이 설치 작업을 진행하는 동안 Automation Config 설치 관리자와 함께 제공된 오케스트레이션 파일을 Salt 마스터 노드에 복사합니다. 그런 다음 RaaS, Redis 데이터베이스 및 PostgreSQL 데이터베이스에 대한 세 개의 노드를 참조하도록 파일을 편집합니다.

오케스트레이션 구성 파일을 복사하고 편집하려면:

  1. Salt 마스터에서 sse-installer 디렉토리로 이동합니다.
  2. 다음 명령을 사용하여 sse_installer 디렉토리의 pillar 및 상태 파일을 Salt 마스터의 pillar_rootsfile_roots 파일로 복사합니다.
    sudo mkdir /srv/salt
    sudo cp -r salt/sse /srv/salt/
    sudo mkdir /srv/pillar
    sudo cp -r pillar/sse /srv/pillar/
    sudo cp -r pillar/top.sls /srv/pillar/
    sudo cp -r salt/top.sls /srv/salt/
    중요:

    이 지침에서는 사용자의 디렉토리 구조에 해당되지 않을 수 있는(특히 기존 Salt 설치가 있는 경우) 몇 가지 사항을 가정합니다. 지침에서 가정하는 내용은 다음과 같습니다.

    • Salt 마스터는 기본 디렉토리 구조를 사용하고 있습니다. 디렉토리 구조가 수정된 경우 사용자 지정 디렉토리 구조에 대해 이 지침을 수정해야 할 수 있습니다.
    • pillar 또는 구성 상태 루트에 sse라는 폴더가 아직 없습니다. 이 폴더가 있으면 수동으로 병합해야 할 수 있습니다.
    • pillar 또는 salt 디렉토리에 안에 top.sls라는 파일이 아직 없습니다. 이 파일이 있으면 기존 파일과 수동으로 병합해야 할 수 있습니다.
  3. 이제 /srv/pillar/ 디렉토리에 이전 단계의 설치 파일에서 복사한 top.sls라는 파일이 있습니다. 이 파일을 편집기에서 엽니다.
  4. 이 파일을 편집하여 PostgreSQL, Redis, RaaS 및 Salt 마스터에 대한 미니언 ID(IP 주소나 DNS 이름이 아님) 목록을 정의합니다. 이전에 기록한 ID를 사용합니다.

    예를 들면 다음과 같습니다.

    {# Pillar Top File #}
    
    {# Define SSE Servers #}
    
    {% load_yaml as sse_servers %}
      - postgres-database-1
      - redis-database-1
      - saltstack-enterprise-api-server-1
      - saltmaster-1
    {% endload %}
    
    base:
    
    {# Assign Pillar Data to SSE Servers #}
    {% for server in sse_servers %}
      '{{ server }}':
        - sse
    {% endfor %}
  5. 이제 /srv/salt/ 디렉토리에 2단계에서 복사한 top.sls라는 파일이 있습니다. 이 파일을 편집기에서 열고 다음과 일치하는지 확인합니다.
    base:
    
      {# Target SSE Servers, according to Pillar data #}
      # SSE PostgreSQL Server
      'I@sse_pg_server:{{ grains.id }}':
        - sse.eapi_database
    
      # SSE Redis Server
      'I@sse_redis_server:{{ grains.id }}':
        - sse.eapi_cache
    
      # SSE eAPI Servers
      'I@sse_eapi_servers:{{ grains.id }}':
        - sse.eapi_service
    
      # SSE Salt Masters
      'I@sse_salt_masters:{{ grains.id }}':
        - sse.eapi_plugin
    

노드에 highstate 적용

  1. Salt 마스터에서 Grain을 동기화하여 각 미니언에 필요한 Grain 데이터가 Salt 마스터에 있는지 확인합니다. 이 단계를 수행하면 Automation Config 기능을 위해 pillar 데이터를 제대로 생성할 수 있습니다.

    입자를 동기화하는 명령에서 모든 미니언을 대상으로 지정하거나, 괄호를 사용하여 노드에 대한 특정 미니언 ID 목록(Salt 마스터 자체 포함)을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

    모든 미니언을 대상으로 지정

    sudo salt \* saltutil.refresh_grains

    미니언 목록을 대상으로 지정

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
  2. 새로 고친 후 각 미니언이 sse_settings.yaml 파일에 정의된 pillar 데이터를 수신했으며 예상대로 나타나는지 확인합니다.

    pillar 데이터를 새로 고치는 명령에서 모든 미니언을 대상으로 지정하거나, 괄호를 사용하여 노드에 대한 특정 미니언 ID 목록(Salt 마스터 자체 포함)을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

    모든 미니언을 대상으로 지정

    sudo salt \* saltutil.refresh_pillar

    미니언 목록을 대상으로 지정

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
  3. 다음 명령으로 pillar에 대한 반환 데이터가 올바른지 확인합니다.
    sudo salt \* pillar.items

    Automation Config와 관련된 pillar 데이터가 보이는지 확인합니다.

    참고:

    또한 특정 미니언의 pillar 데이터를 대상으로 지정하여 pillar 데이터가 새로 고쳐졌는지 확인할 수도 있습니다.

  4. PostgreSQL 서버에 오케스트레이션 highstate를 적용하는 명령을 실행합니다. 이전에 PostgreSQL 서버에 대해 기록한 미니언 ID를 사용합니다.

    예를 들면 다음과 같습니다.

    sudo salt postgres-database-1 state.highstate
  5. 다음 서버에 대해 각 서버의 미니언 ID를 대체하고 이전 단계를 반복합니다.
    • Redis 노드
    • RaaS 노드
    • Salt 마스터 노드
    참고:

    highstate를 Salt 마스터에 처음 적용하는 동안 다음 오류 메시지가 표시될 수 있습니다. Authenticationerroroccurred.. 이 오류는 Salt 마스터가 RaaS 노드에 대해 아직 인증되지 않았기 때문에 표시되지만 마스터 플러그인 설치 상태가 Salt 마스터 서비스를 다시 시작하면 문제가 자동으로 해결됩니다.

highstate를 실행하는 동안 다른 오류가 발생하면 문제 해결을 참조하십시오.