2.5. PostgreSQL 요구 사항

Red Hat Ansible Automation Platform은 PostgreSQL 13을 사용합니다. PostgreSQL 사용자 암호는 데이터베이스에 저장하기 전에 SCRAM-SHA-256 보안 해시 알고리즘으로 해시됩니다.

자동화 컨트롤러 인스턴스가 데이터베이스에 액세스할 수 있는지 확인하려면 명령 awx-manage check_db 명령을 사용하여 수행할 수 있습니다.

표 2.5. 데이터베이스

Service필수 항목참고

데이터베이스

  • 20GB 전용 하드 디스크 공간
  • 4개의 CPU
  • 16GB RAM
  • 150GB 이상 권장
  • 스토리지 볼륨은 높은 기준 IOPS(1500 이상)로 평가되어야 합니다.
  • 모든 자동화 컨트롤러 데이터는 데이터베이스에 저장됩니다. 데이터베이스 스토리지는 관리되는 호스트 수, 작업 실행 수, 팩트 캐시에 저장된 팩트 수, 개별 작업의 작업 수에 따라 증가합니다. 예를 들어 플레이북이 250개 호스트에서 매시간(하루 24회) 실행되고 20개의 작업이 포함된 플레이북은 매주 데이터베이스에 800000개 이상의 이벤트를 저장합니다.
  • 데이터베이스에 공간이 충분하지 않은 경우 이전 작업 실행 및 팩트를 정기적으로 정리해야 합니다. 자세한 내용은 자동화 컨트롤러 관리 가이드 의 관리 작업을 참조하십시오.

PostgreSQL 설정

선택적으로 Red Hat Ansible Automation Platform 설치 프로그램에서 관리하지 않는 별도의 노드로 PostgreSQL 데이터베이스를 구성할 수 있습니다. Ansible Automation Platform 설치 프로그램에서 데이터베이스 서버를 관리할 때 대부분의 워크로드에 일반적으로 권장되는 기본값으로 서버를 구성합니다. 데이터베이스 성능을 개선하는 데 사용할 수 있는 설정에 대한 자세한 내용은 데이터베이스 설정을 참조하십시오.

추가 리소스

PostgreSQL 서버 튜닝에 대한 자세한 내용은 PostgreSQL 설명서 를 참조하십시오.

2.5.1. 외부(고객 지원) 데이터베이스 설정

중요

Red Hat은 외부(고객 지원) 데이터베이스를 지원하지 않지만 고객이 사용합니다. 제품 설치 관점에서의 초기 구성에 대한 다음 지침은 관련 지원 요청을 방지하기 위해 제공됩니다.

자동화 컨트롤러와 함께 사용할 외부 PostgreSQL 호환 데이터베이스에서 데이터베이스, 사용자 및 암호를 생성하려면 다음 절차를 사용하십시오.

절차

  1. 슈퍼유저 권한으로 PostgreSQL 호환 데이터베이스 서버에 연결합니다.

    # psql -h <db.example.com> -U superuser -p 5432 -d postgres <Password for user superuser>:

    다음과 같습니다.

    -h hostname
    --host=hostname

    서버가 실행 중인 시스템의 호스트 이름을 지정합니다. 값이 슬래시로 시작되면 Unix-domain 소켓의 디렉터리로 사용됩니다.

    -d dbname
    --dbname=dbname

    연결할 데이터베이스의 이름을 지정합니다. 이는 명령줄에서 첫 번째 비옵션 인수로 dbname 을 지정하는 것과 동일합니다. dbname 은 연결 문자열일 수 있습니다. 이 경우 연결 문자열 매개 변수는 충돌하는 명령줄 옵션을 재정의합니다.

    -U username
    --username=username

    기본값 대신 사용자 이름으로 데이터베이스에 연결합니다. (이 작업을 수행할 수 있는 권한이 있어야 합니다.)

  2. createDB 또는 사용자에게 할당된 관리자 역할을 사용하여 사용자, 데이터베이스 및 암호를 만듭니다. 자세한 내용은 데이터베이스 역할을 참조하십시오.
  3. 데이터베이스 자격 증명 및 호스트 세부 정보를 자동화 컨트롤러 인벤토리 파일에 외부 데이터베이스로 추가합니다.

    다음 예제에서는 기본값을 사용합니다.

    [database]
    pg_host='db.example.com'
    pg_port=5432
    pg_database='awx'
    pg_username='awx'
    pg_password='redhat'
  4. 설치 프로그램을 실행합니다.

    자동화 컨트롤러가 있는 PostgreSQL 데이터베이스를 사용하는 경우 연결된 사용자가 데이터베이스를 소유하며 createDB 또는 관리자 역할이 할당되어야 합니다.

  5. 사용자, 암호 및 데이터베이스 이름을 사용하여 생성된 데이터베이스에 연결할 수 있는지 확인합니다.
  6. 사용자 권한을 확인합니다. 사용자에게 createDB 또는 관리자 역할이 있어야 합니다.
참고

이 절차 중에 외부 데이터베이스 범위를 확인해야 합니다. 자세한 내용은 https://access.redhat.com/articles/4010491에서 참조하십시오.

2.5.2. 자동화 허브 PostgreSQL 데이터베이스의 hstore 확장 활성화

Ansible Automation Platform 2.4에서 데이터베이스 마이그레이션 스크립트는 hstore 필드를 사용하여 정보를 저장하므로 자동화 허브 PostgreSQL 데이터베이스에 대한 hstore 확장을 활성화해야 합니다.

이 프로세스는 Ansible Automation Platform 설치 프로그램 및 관리형 PostgreSQL 서버를 사용할 때 자동으로 수행됩니다.

PostgreSQL 데이터베이스가 외부인 경우 자동화 허브를 설치하기 전에 수동으로 hstore 확장을 자동화 허브 PostreSQL 데이터베이스로 활성화해야 합니다.

자동화 허브를 설치하기 전에 hstore 확장 기능을 활성화하지 않으면 데이터베이스 마이그레이션 중에 오류가 발생합니다.

절차

  1. PostgreSQL 서버(자동화 허브 데이터베이스)에서 확장을 사용할 수 있는지 확인합니다.

    $ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"

    여기서 < automation hub database>의 기본값automationhub 입니다.

    hstore 를 사용할 수 있는 출력 예:

    name  | default_version | installed_version |comment
    ------+-----------------+-------------------+---------------------------------------------------
     hstore | 1.7           |                   | data type for storing sets of (key, value) pairs
    (1 row)

    hstore 를 사용할 수 없는 출력 예:

     name | default_version | installed_version | comment
    ------+-----------------+-------------------+---------
    (0 rows)
  2. RHEL 기반 서버에서 hstore 확장은 postgresql-contrib RPM 패키지에 포함되어 있으며 PostgreSQL 서버 RPM 패키지를 설치할 때 자동으로 설치되지 않습니다.

    RPM 패키지를 설치하려면 다음 명령을 사용하십시오.

    dnf install postgresql-contrib
  3. 다음 명령을 사용하여 자동화 허브 데이터베이스에 hstore PostgreSQL 확장을 생성합니다.

    $ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"

    결과는 다음과 같습니다.

    CREATE EXTENSION
  4. 다음 출력에서 installed_version 필드에는 hstore 가 활성화되었음을 나타내는 hstore 확장이 포함되어 있습니다.

    name | default_version | installed_version | comment
    -----+-----------------+-------------------+------------------------------------------------------
    hstore  |     1.7      |       1.7         | data type for storing sets of (key, value) pairs
    (1 row)

2.5.3. Ansible Automation Platform PostgreSQL 데이터베이스에 대한 스토리지 성능 벤치마킹

FIO(flexible I/O Tester) 툴을 사용하여 최소 Ansible Automation Platform PostgreSQL 데이터베이스 요구 사항을 충족하는지 확인합니다. FIO는 스토리지 시스템의 IOPS 성능을 작성하고 작성하는 데 사용되는 툴입니다.

사전 요구 사항

  • Fio(flexible I/O Tester) 스토리지 성능 벤치마킹 툴을 설치했습니다.

    fio 를 설치하려면 root 사용자로 다음 명령을 실행합니다.

    # yum -y install fio
  • fio 테스트 데이터 로그 파일을 저장할 충분한 디스크 공간이 있습니다.

    절차에 표시된 예제에는 /tmp 디렉토리에 최소 60GB의 디스크 공간이 필요합니다.

    • numjobs 는 명령으로 실행하는 작업 수를 설정합니다.
    • size=10G 는 각 작업에서 생성한 파일 크기를 설정합니다.
  • size 매개변수 값을 조정했습니다. 이 값을 조정하면 테스트 데이터 양이 줄어듭니다.

절차

  1. 임의의 쓰기 테스트를 실행합니다.

    $ fio --name=write_iops --directory=/tmp --numjobs=3 --size=10G \
    --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
    --verify=0 --bs=4K --iodepth=64 --rw=randwrite \
    --group_reporting=1 > /tmp/fio_benchmark_write_iops.log \
    2>> /tmp/fio_write_iops_error.log
  2. 임의의 읽기 테스트를 실행합니다.

    $ fio --name=read_iops --directory=/tmp \
    --numjobs=3 --size=10G --time_based --runtime=60s --ramp_time=2s \
    --ioengine=libaio --direct=1 --verify=0 --bs=4K --iodepth=64 --rw=randread \
    --group_reporting=1 > /tmp/fio_benchmark_read_iops.log \
    2>> /tmp/fio_read_iops_error.log
  3. 결과를 검토합니다.

    벤치마크 명령으로 작성된 로그 파일에서 iops 로 시작하는 행을 검색합니다. 이 행은 테스트의 최소, 최대값 및 평균 값을 표시합니다.

    다음 예제에서는 임의의 읽기 테스트에 대한 로그 파일의 행을 보여줍니다.

    $ cat /tmp/fio_benchmark_read_iops.log
    read_iops: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
    […]
       iops        : min=50879, max=61603, avg=56221.33, stdev=679.97, samples=360
    […]

    자체 비즈니스 요구 사항, 애플리케이션 워크로드 및 새로운 요구에 따라 로그 파일을 검토, 모니터링 및 다시 방문해야 합니다.