2.4. PostgreSQL 요구 사항

Red Hat Ansible Automation Platform은 PostgreSQL 13을 사용합니다.

  • PostgreSQL 사용자 암호는 데이터베이스에 저장하기 전에 SCRAM-SHA-256 보안 해시 알고리즘으로 해시됩니다.
  • 자동화 컨트롤러 인스턴스가 데이터베이스에 액세스할 수 있는지 확인하려면 awx-manage check_db 명령을 사용하여 이를 수행할 수 있습니다.

표 2.2. 데이터베이스

Service필수 항목참고

각 자동화 컨트롤러

40GB 전용 하드 디스크 공간

  • 파일 및 작업 디렉터리 저장을 위해 최소 20GB를 /var/ 에 전용
  • 스토리지 볼륨은 최소 1500 IOPS 기준으로 평가되어야 합니다.
  • 프로젝트는 제어 및 하이브리드 노드에 저장되며 작업 기간 동안 실행 노드에도 저장됩니다. 클러스터에 많은 대규모 프로젝트가 있는 경우 디스크 공간 오류를 방지하려면 /var/lib/awx/projects에 2GB를 사용하는 것이 좋습니다.
  • 150GB 이상 권장
  • 스토리지 볼륨은 높은 기준 IOPS(1500 이상)로 평가되어야 합니다.

각 자동화 허브

60GB 전용 하드 디스크 공간

스토리지 볼륨은 최소 1500 IOPS 기준으로 평가되어야 합니다.

데이터베이스

20GB 전용 하드 디스크 공간

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

PostgreSQL 설정

선택적으로 Red Hat Ansible Automation Platform 설치 프로그램에서 관리하지 않는 별도의 노드로 PostgreSQL 데이터베이스를 구성할 수 있습니다. Ansible Automation Platform 설치 프로그램에서 데이터베이스 서버를 관리할 때 대부분의 워크로드에 일반적으로 권장되는 기본값으로 서버를 구성합니다. 그러나 ansible_memtotal_mb 가 데이터베이스 서버의 총 메모리 크기인 독립 실행형 데이터베이스 서버 노드에 대해 이러한 PostgreSQL 설정을 조정할 수 있습니다.

max_connections == 1024
shared_buffers == ansible_memtotal_mb*0.3
work_mem == ansible_memtotal_mb*0.03
maintenance_work_mem == ansible_memtotal_mb*0.04

추가 리소스

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

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

다음 절차에서는 스토리지 시스템의 쓰기/읽기 IOPS 성능을 벤치마킹하여 최소 Ansible Automation Platform PostgreSQL 데이터베이스 요구 사항이 충족되는지 확인하는 방법을 설명합니다.

사전 요구 사항

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

    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
    […]

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