WAN 연결을 통한 SUSE Manager 서버와 프록시 간의 긴 동기화 시간 문제 해결

WebUI에서 실행되는 변경사항이나 배포 또는 시스템 설정에 대한 API 호출을 통해 실행되는 변경사항에 따라, cobbler sync 명령은 SUSE Manager 서버에서 SUSE Manager 프록시 시스템으로 파일을 전송하기 위해 필요할 수 있습니다. 이를 위해 Cobbler는 /etc/cobbler/settings에 지정된 프록시 목록을 사용합니다.

설계상 cobbler sync는 변경되거나 최근에 추가된 파일만 동기화하는 것이 불가능합니다.

대신 cobbler sync를 실행하면 /etc/cobbler/settings에 구성된 모든 지정된 프록시에 대한 /srv/tftpboot 디렉토리의 전체 동기화가 트리거됩니다. 또한, 관련 시스템 간의 WAN 연결 대기 시간의 영향을 받습니다.

/var/log/cobbler/의 로그에 따라, 동기화 프로세스를 완료하는 데 상당한 시간이 걸릴 수 있습니다.

예를 들어, 다음에 시작됨:

Thu Jun  3 14:47:35 2021 - DEBUG | running python triggers from /var/lib/cobbler/triggers/task/sync/pre/*
Thu Jun  3 14:47:35 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*

및 다음에 종료됨:

Thu Jun  3 15:18:49 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/post/*
Thu Jun  3 15:18:49 2021 - DEBUG | shell triggers finished successfully

전송량은 약 1.8GB였습니다. 전송에 약 30분이 걸렸습니다.

이에 비해 /srv/tftboot와 같은 크기의 대용량 단일 파일 복사는 몇 분 내에 완료됩니다.

SUSE Manager 서버와 프록시 간에 파일을 복사하는 rsync 기반 접근 방식으로 전환하면 전송 및 대기 시간을 줄이는 데 도움이 될 수 있습니다.

이 작업을 수행하기 위한 스크립트는 https://suse.my.salesforce.com/sfc/p/1i000000gLOd/a/1i000000ll5B/B2AmvIJN2_JsAyjTQzCVP_x5ioVgd0bYN9X9NpMugS8에서 다운로드할 수 있습니다.

스크립트는 명령줄 옵션을 승인하지 않습니다. 스크립트를 실행하기 전, 스크립트를 수동으로 편집하고 올바르게 작동하려면 SUMAHOSTNAME, SUMAIPSUMAPROXY1 변수를 올바르게 설정해야 합니다.

스크립트의 개별 조정에 사용할 수 있는 지원은 제공되지 않습니다. 스크립트와 내부 주석은 고려해야 할 프로세스 및 단계에 대한 개요를 제공하는 것을 목표로 합니다. 추가적인 도움이 필요한 경우 SUSE Consulting에 문의하십시오.

스크립트를 사용하는 제안된 접근법은 다음 환경에서 유용합니다.

  • SUSE Manager 프록시 시스템이 WAN 연결을 통해 연결됩니다.

  • /srv/tftboot에 배포용 파일 및 클라이언트 PXE 부팅 파일이 많이 포함되어 있으며, 전체 파일이 수천 개 있습니다.

  • /etc/cobbler/settingsl의 모든 프록시가 비활성화되었습니다. 그렇지 않으면 SUSE Manager는 컨텐트를 프록시에 계속 동기화합니다.

    #proxies:
    # - "sumaproxy.sumaproxy.test"
    # - "sumaproxy2.sumaproxy.test"

절차: 새로운 동기화 속도 분석

  1. SUSE Manager 및 관련 시스템 간의 TCP 트래픽 덤프를 가져옵니다.

    • SUSE Manager 서버에서:

      tcpdump -i ethX -s 200 host <ip-address-of-susemanagerproxy> and not ssh
    • SUSE Manager 프록시에서:

      tcpdump -i ethX -s 200 host <ip-address-of-susemanager> and not ssh
    • 그러면 분석을 실행하기에 충분한 200개의 패키지 크기만 캡처됩니다.

    • SUSE Manager가 프록시와의 통신에 사용하는 각 네트워크 인터페이스에 대한 ethX를 조정합니다.

    • 마침내, 더 이상 패키지 수를 줄이기 위해 ssh 통신이 캡처되지 않습니다.

  2. Cobbler 동기화를 시작합니다.

    • 동기화를 강제 실행하려면, 우선 Cobbler json 캐시 파일을 삭제한 후 Cobbler sync 실행:

      rm /var/lib/cobbler/pxe_cache.json
      cobbler sync
  3. Cobbler가 완료되면 TCPdump를 중지합니다.

  4. Wireshark를 사용하여 TCPdump를 열고 통계 > 대화로 이동하여 덤프가 분석될 때까지 기다립니다.

  5. TCP 탭으로 전환합니다. 이 탭에 표시된 숫자는 SUSE Manager와 SUSE Manager Proxy 간에 캡처된 총 대화 수를 나타냅니다.

  6. 기간 열 찾기:

    • 파일 전송에 소요된 최소 시간을 확인하려면 우선 오름차순으로 정렬합니다.

    • 내림차순으로 계속 정렬하여, 예를 들어 커널 및 initrd 전송과 같은 대용량 파일의 최대값을 찾습니다.

      포트 4505 및 4506은 Salt 통신에 사용되므로 무시합니다.

TCP 덤프를 분석한 결과 SUSE Manager 서버에서 프록시로 약 1,800바이트 크기의 작은 파일을 전송하는 데 약 0.3초가 걸렸습니다.

대용량 파일이 많지는 않았지만, 전송된 모든 단일 파일에 대해 새로운 TCP 연결이 생성되기 때문에 작은 파일의 수가 많으면 많은 수의 연결이 설정됩니다.

그러므로 최소 전송 시간과 필요한 연결 수(예시에서는 약 5,000개)를 알면 전체 전송 시간에 대한 대략적인 예상 시간이 5000 * 0.3 / 60 = 25분이라는 것을 알 수 있습니다.