이전 cfengine2 설치를 대체하기 위해 Ansible을 살펴보기 시작했습니다. 다음과 같은 간단한 플레이 북이 있습니다.
- sudoers 파일을 복사
- 템플릿 화 된 resolv.conf를 복사합니다 (group_vars 및 host_vars 데이터와 함께 공급)
- 몇 가지 서비스가 실행 중인지 확인
- 로컬 사용자가 있는지 확인
플레이 북은 97 개의 머신 (1ms 미만의 LAN 대기 시간으로 빠른 1gig 또는 10gig 네트워킹을 통해 연결된)에 대해 실행하는 데 4 분 이상의 월 클럭 시간이 소요되며 2 코어 4G 메모리 VM에서 CPU의 50 % 이상을 소비합니다. 그것을 실행.
단일 시스템에 대해 실행하는 데 약 11 초가 걸리고 약 4 초의 사용자 + 시스템 CPU 시간이 소비되며 TBH는 여전히 관련 작업량에 비해 약간 과도한 것으로 보입니다.
명백한 비트 :
- Playbook-dir 로컬 ansible.cfg에서 파이프 라인을 명시 적으로 활성화했습니다.
- jsonfile에 사실 캐싱이 가능하고 동일한 로컬 ansible.cfg가 있습니다.
- 포크를 50으로 설정했습니다 (다른 값을 시도했습니다)
- Ansible이 Paramiko가 아닌 SSH를 사용하고 영구 제어 소켓을 사용하고 있다고 확신합니다. 실행 중에 SSH 프로세스가 시작되고 지속되는 것을 볼 수 있습니다.
이 수준의 성능이 정상입니까 아니면 설정에 문제가 있습니까? 그렇다면 어떻게 결정해야합니까?
편집 : 2017 년 8 월 현재이 문제가 계속 발생합니다. Ansible 버전은 2.2.1이며 플레이 북 크기가 커졌습니다. 최신 번호 :
- 호스트 98 명
ansible -m ping all
실제 4.6 초, 사용자 3.2 초, 시스템 시간 2.5 초 소요- 전체 플레이 북을 실행하는 데 100 % 사용자와 ~ 35 %의 시스템 CPU를 사용하여 4 분이 소요됩니다 (2 코어 VM 배포 서버에서 100 %는 전체 CPU 1 개임)
- 대상 OS는 대부분 CentOS 7, 일부 CentOS 6
- 프로파일 링시 특정 작업 핫스팟이 표시되지 않습니다
플레이 북이 훨씬 커졌지 만 여전히 플레이 북 서버의 CPU로드 수준을 정당화 할 수있는 요소가 없다고 생각합니다. 벽시계 시간 일 수도 있지만 배포 서버는 대부분의 실행에서 유휴 상태 여야합니다. 내가 볼 수있는 한, 그것은 주로 파일 사본이며 일부 템플릿 확장입니다.
우리는 host / groupvars를 상당히 광범위하게 사용하고 있습니다.
여러 사람들이 프로파일 링, 프로파일 링 실행의 꼬리에 대해 물었습니다.
Tuesday 01 August 2017 16:02:24 +0100 (0:00:00.539) 0:06:22.991 ********
===============================================================================
yumrepo : centos repos -------------------------------------------------- 9.77s
sshd : copy CentOS 6 sshd config ---------------------------------------- 7.41s
sshd : copy CentOS 7 sshd config ---------------------------------------- 6.94s
core : ensure core packages are present --------------------------------- 6.28s
core : remove packages on VM guests ------------------------------------- 5.39s
resolv : stop NetworkManager changing resolv.conf ----------------------- 5.25s
yumrepo : epel6 gpg key ------------------------------------------------- 3.94s
yumrepo : epel7 gpg key ------------------------------------------------- 3.71s
yumrepo : nsg gpg key --------------------------------------------------- 3.57s
resolv : build resolv.conf ---------------------------------------------- 3.30s
yumrepo : nsg repo ------------------------------------------------------ 2.66s
resolv : check NetworkManager running ----------------------------------- 2.63s
yumrepo : psp repo ------------------------------------------------------ 2.62s
yumrepo : ucs repo ------------------------------------------------------ 2.44s
yumrepo : epel repo ----------------------------------------------------- 2.27s
resolv : check for nmcli ------------------------------------------------ 2.08s
core : remove various unwanted files ------------------------------------ 1.42s
telegraf : write telegraf.conf file ------------------------------------- 1.13s
core : copy sudoers in place -------------------------------------------- 0.94s
core : ensure sshd is running ------------------------------------------- 0.90s
watch cat /proc/sys/kernel/random/entropy_avail
플레이 북이 실행되는 동안. 1000보다 작 으면 잠재적 인 문제가있는 것입니다. 64보다 작고 회복되지 않으면 명확한 엔트로피 기아 문제가 있습니다. (일부 VM 환경에서 일반적 임). 이는 관리 서버 및 관리중인 노드에도 적용됩니다.
ansible -i all all -m ping
300 개가 넘는 호스트 (대부분 VM)에 비해 1 분 미만이 소요되었습니다. 플레이 북이 사용자를 변경하기 위해 어떤 일을하고 있습니까 (beome / sudo 등). '-m ping'의 성능은 어떻습니까? 경험에 따르면 50 포크에 더 많은 메모리를 원한다고 말하고 싶습니다.
ANSIBLE_CALLBACK_WHITELIST=profile_tasks
하고로 더 철저한 디버깅을 수행하십시오ANSIBLE_DEBUG=1
. 또한 초기 ssh- 연결 속도에서 세심한주의를 기울이십시오.