Chúng tôi đang bắt đầu xem xét Ansible để thay thế một bản cài đặt cfengine2 cũ. Tôi có một cuốn sách đơn giản rằng:
- sao chép một tập tin sudoers
- sao chép một tệp độ phân giải templated (được cung cấp với dữ liệu nhóm và dữ liệu lưu trữ)
- kiểm tra một vài dịch vụ đang chạy
- kiểm tra sự hiện diện của người dùng cục bộ
Playbook mất hơn 4 phút thời gian để chạy trên 97 máy (tất cả được kết nối qua mạng 1gig hoặc 10gig nhanh, với độ trễ LAN dưới 1ms) và tiêu thụ hơn 50% CPU trên máy ảo 4G 2 nhân khi tôi chạy nó
Mất khoảng 11 giây để chạy với một máy duy nhất, với khoảng 4 giây thời gian sử dụng CPU của người dùng + sys, mà TBH vẫn có vẻ hơi quá so với số lượng công việc liên quan.
Các bit rõ ràng:
- Tôi đã kích hoạt đường ống một cách rõ ràng trong một plays-dir cục bộ ansible.cfg
- Tôi có bộ nhớ đệm thực tế để jsonfile được bật, cùng một địa phương ansible.cfg
- Tôi có các dĩa được đặt thành 50, tương tự (Tôi đã thử các giá trị khác)
- Tôi chắc chắn rằng Ansible đang sử dụng SSH chứ không phải Paramiko và nó đang sử dụng ổ cắm điều khiển liên tục - Tôi có thể thấy các quy trình SSH đang được bắt đầu và duy trì trong suốt quá trình chạy.
Mức hiệu suất này có bình thường không hoặc có gì sai với thiết lập của tôi? Làm thế nào tôi có thể đi về việc xác định những gì, nếu vậy?
Chỉnh sửa: Kể từ tháng 8 năm 2017, chúng tôi vẫn thấy vấn đề này. Phiên bản Ansible là 2.2.1 và kích thước playbook đã tăng lên. Số cập nhật:
- 98 máy chủ
ansible -m ping all
mất 4,6 giây thực, 3,2 giây người dùng, 2,5 giây sys lần- một lần chạy toàn bộ Playbook mất 4 phút, sử dụng 100% người dùng và ~ 35% CPU hệ thống trong khi thực hiện (trên máy chủ triển khai VM 2 lõi, 100% là một CPU đầy đủ)
- HĐH mục tiêu phần lớn là CentOS 7, một số CentOS 6
- hồ sơ không tiết lộ bất kỳ điểm nóng nhiệm vụ cụ thể AFAICT
Mặc dù playbook bây giờ lớn hơn nhiều, tôi vẫn không nghĩ có gì ở đó để biện minh cho mức tải CPU đó trên máy chủ playbook - có lẽ là thời gian, nhưng máy chủ triển khai sẽ không hoạt động trong hầu hết thời gian chạy, theo như tôi có thể thấy, chủ yếu là các bản sao tệp và một số bản mở rộng mẫu.
Lưu ý rằng chúng tôi đang sử dụng khá nhiều máy chủ / nhóm
Một số người đã hỏi về hồ sơ, đuôi của một cuộc chạy với hồ sơ:
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
trong khi playbook đang chạy Nếu ít hơn 1000, bạn có một vấn đề tiềm ẩn; nếu nó ít hơn 64 và không phục hồi, thì bạn có vấn đề chết đói entropy xác định. (phổ biến trong một số môi trường VM). Điều này áp dụng cho máy chủ quản lý của bạn và cả các nút bạn đang quản lý.
ansible -i all all -m ping
chống lại hơn 300 máy chủ (chủ yếu là VM) mất chưa đến 1 phút. Playbook của bạn có làm gì để thay đổi người dùng không (trở thành / sudo / v.v.). '-M ping' hoạt động như thế nào? Tôi sẽ, dựa trên kinh nghiệm, nói rằng bạn muốn có thêm bộ nhớ cho 50 dĩa.
ANSIBLE_CALLBACK_WHITELIST=profile_tasks
và để gỡ lỗi kỹ lưỡng hơn vớiANSIBLE_DEBUG=1
. Cũng chú ý ở tốc độ kết nối ssh ban đầu.