هماهنگ‌سازی ابری در OmniLab ATS

برنامه Cloud Orchestration روشی مقیاس‌پذیر و با عملکرد بالا برای مدیریت نمونه‌های Cuttlefish، به‌ویژه برای دستگاه‌های مجازی مبتنی بر ARM‏ (CHD)، ارائه می‌دهد. ‫OmniLab ATS از «هماهنگ‌سازی ابری» پشتیبانی می‌کند تا بتوانید آزمایش‌ها را در دستگاه‌های مجازی اجرا کنید. قبل‌از شروع استفاده از دستگاه‌های مجازی، ایستگاه آزمایش Android‏ OmniLab را دنبال کنید تا OmniLab ATS را نصب کنید.

نمای کلی

«هماهنگ‌سازی ابری» به OmniLab ATS اجازه می‌دهد مدیریت نمونه‌های Cuttlefish را به سرویس «هماهنگ‌کننده ابری» اختصاصی واگذار کند. این رویکرد در مقایسه با حالت‌های محلی و از دور موجود مزایای متعددی دارد و درعین‌حال تجربه کاربری آشنایی را حفظ می‌کند:

  • راه‌اندازی نمونه موازی: امکان راه‌اندازی هم‌زمان چندین نمونه Cuttlefish را فراهم می‌کند و زمان سربار قبل‌از شروع آزمایش‌ها را به‌طور قابل‌توجهی کاهش می‌دهد.
  • مقیاس‌پذیری: برای محیط‌های آزمایشی در مقیاس بزرگ مناسب است.
  • جداسازی منابع: محیط اجرای آزمایش (کارگر ATS) را از محیط شبیه‌سازی دستگاه جدا می‌کند.

پیش‌نیازها

  • ماشین میزبان قادر به اجرای Docker
  • دسترسی به تصاویر Docker هماهنگ‌سازی Cuttlefish

راه‌اندازی سرویس Cloud Orchestrator

سرویس Cloud Orchestrator چرخه عمر نمونه‌های Cuttlefish را مدیریت می‌کند. می‌توانید این سرویس را در محیط‌های مختلف مستقر کنید و از هر دو معماری x86 و ARM پشتیبانی می‌کند:

  • میزبان یکسان با کارگر ATS: در محتوی Docker در همان ماشین اجرا می‌شود
  • ماشین جداگانه: در سرور داخلی که قابلیت اجرای Docker را دارد اجرا می‌شود
  • نمونه ابری: در ماشین مجازی در محیط ابری اجرا می‌شود، برای مثال، Google Compute Engine

نصب و راه‌اندازی سرویس

برای راه‌اندازی سرویس، Cloud Android Orchestration README را دنبال کنید.

احراز هویت و اجازه‌ها

اگر سرویس «هماهنگ‌کننده ابری» در ماشین ازراه‌دور اجرا می‌شود، مطمئن شوید که میزبان کارگر ATS اجازه‌های لازم را برای دسترسی به آن ازطریق درخواست‌های HTTP دارد. اگر اتصال HTTP مجاز نیست، ممکن است لازم باشد باز ارسال درگاه «پوسته امن» راه‌اندازی کنید. برای جزئیات، امتحان کردن هماهنگ‌کننده ابری را ببینید.

وضعیت موردانتظار

پس‌از اینکه سرویس Cloud Orchestrator باموفقیت شروع شد، باید بااستفاده از HTTP دردسترس باشد. می‌توانید وضعیت آن را با استعلام گرفتن از میانای برنامه‌سازی کاربردی آن تأیید کنید:

  • پینگ کردن سرویس: باید بتوانید از میزبان کارگر OmniLab ATS به نقطه پایانی سرویس دسترسی پیدا کنید. برای مثال، اجرای curl -I http://localhost:8080/v1/zones/local/hosts باید پاسخ موفقیت‌آمیز HTTP برگرداند (یا HTTP/1.1 200 OK یا 302 Found که به /username هدایت می‌کند)، و تأیید کند که سرویس فعال و دردسترس است.

پیکربندی OmniLab ATS برای Cloud Orchestration

قبل‌از شروع OmniLab ATS، مطمئن شوید که همه نمونه‌های Cuttlefish در میزبان کارگر OmniLab ATS متوقف شده‌اند. ‫OmniLab ATS به‌طور خودکار دستگاه‌های مجازی را درطول چرخه آزمایش راه‌اندازی و متوقف می‌کند، و نمونه‌های Cuttlefish موجود با نمونه‌های مدیریت‌شده توسط OmniLab ATS تداخل دارند. برای جزئیات بیشتر درباره متوقف کردن نمونه‌های Cuttlefish، به متوقف کردن Cuttlefish مراجعه کنید.

برای فعال کردن «هماهنگ‌سازی ابری» در OmniLab ATS، هنگام شروع OmniLab ATS پرچم‌های خاصی را ارسال کنید:

mtt start --max_orchestration_virtual_devices N \
  --orchestration_service_url=http://HOST:PORT \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • ‫--max_orchestration_virtual_devices: حداکثر تعداد دستگاه‌های مجازی را که Cloud Orchestrator مدیریت می‌کند و OmniLab ATS می‌تواند به‌طور هم‌زمان تخصیص دهد تنظیم می‌کند. عدد پیش‌فرض ۰ است.
  • ‫--orchestration_service_url: نشانی وبی را مشخص می‌کند که سرویس «هماهنگ‌سازی ابری» در آن گوش می‌دهد، برای مثال، http://localhost:8080.
  • ‫--use_host_network: از فضای نام شبکه میزبان برای محتوی استفاده می‌کند. این مورد برای دسترسی به سرویس Cloud Orchestration لازم است.
  • --force_ats_version 2: استفاده از OmniLab ATS 2.0 را اجباری می‌کند، که برای «هماهنگ‌سازی ابری» لازم است. برای اطلاعات بیشتر، راهنمای ارتقا OmniLab ATS 2.0 را ببینید.
  • ‫--force_update: جدیدترین ساختار ظرف را با ویژگی‌های ATS 2.0 و «هماهنگ‌سازی ابری» بیرون می‌کشد.

پیکربندی مشخصات سخت‌افزار دستگاه مجازی (اختیاری)

به‌طور پیش‌فرض، هر نمونه دستگاه مجازی هماهنگ‌شده با ابر با چهار CPU،‏ ۸۱۹۲ مگابایت (۸ گیگابایت) حافظه دسترسی تصادفی، سیم‌کارت معمولی، و تصویر کارت SD پیوست‌شده آماده‌سازی می‌شود. هنگام راه‌اندازی OmniLab ATS با Cloud Orchestration، می‌توانید هرکدام از این پیش‌فرض‌ها را با ارسال پرچم سرور آزمایشگاه مربوطه در فرمان mtt start بااستفاده از --extra_docker_args لغو کنید. هر پرچم مستقل است: فقط پرچم‌هایی را که می‌خواهید تغییر دهید ارسال کنید و بقیه را حذف کنید تا مقادیر پیش‌فرضشان حفظ شود.

  • ‫--android_jit_emulator_cpus: تعداد هسته‌های CPU را برای هر نمونه دستگاه مجازی تنظیم می‌کند. اگر تنظیم نشده باشد یا ۰ باشد، به‌طور پیش‌فرض روی 4 تنظیم می‌شود.
  • ‫--android_jit_emulator_memory_mb: حافظه را برحسب مگابایت (MB) برای هر نمونه دستگاه مجازی تنظیم می‌کند. اگر تنظیم نشده باشد یا ۰ باشد، به‌طور پیش‌فرض روی 8192 تنظیم می‌شود.
  • ‫--android_jit_emulator_modem_simulator_sim_type: نوع سیم‌کارتی را که شبیه‌ساز مودم برای هر نمونه دستگاه مجازی شبیه‌سازی می‌کند تنظیم می‌کند: 1 برای سیم‌کارت معمولی، یا 2 برای سیم‌کارت دارای امتیازات شرکت مخابراتی (موردنیاز CtsCarrierApiTestCases). اگر تنظیم نشده باشد یا ۰ باشد، به‌طور پیش‌فرض روی 1 تنظیم می‌شود.
  • --android_jit_emulator_use_sdcard: تعیین می‌کند که آیا تصویر کارت SD خالی ایجاد شود و به هر نمونه دستگاه مجازی (true یا false) پیوست شود یا نه. به‌طور پیش‌فرض true است. برای غیرفعال کردن ایجاد کارت SD، روی false تنظیم کنید.

مثال زیر هر چهار پیش‌فرض را ملغی می‌کند:

mtt start --max_orchestration_virtual_devices N \
  --orchestration_service_url=http://HOST:PORT \
  --use_host_network \
  --force_ats_version 2 \
  --force_update \
  --extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB --android_jit_emulator_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'

اجرای آزمایش با دستگاه‌های هماهنگ‌شده با فضای ابری

این بخش مراحل اجرای آزمایش روی دستگاه‌های مجازی هماهنگ‌شده با ابر را شرح می‌دهد.

دستگاه‌های خاص

در فهرست دستگاه‌ها، OmniLab ATS دستگاه‌های مجازی هماهنگ‌شده با ابر را به‌جای شماره سریال واقعی‌شان به‌عنوان جای‌بان نشان می‌دهد. جای‌بان‌ها در قالب HOSTNAME:PORT (برای مثال، thehostname:6520) نشان داده می‌شوند. وضعیت‌ها یا دردسترس یا اختصاص‌یافته هستند. جای‌بان در وضعیت دردسترس نشان می‌دهد که دستگاه مجازی درحال اجرا نیست و می‌تواند برای آزمایش اختصاص داده شود.

انتخاب دستگاه‌های سازمان‌دهی‌شده ابری

شکل ۱. درحال انتخاب دستگاه‌های مجازی هماهنگ‌شده با ابر.

افزودن کنش‌های دستگاه

وقتی آزمایشی در این دستگاه‌ها زمان‌بندی می‌شود، ATS به‌طور خودکار کنش‌های لازم دستگاه را برای تأمین و مدیریت نمونه‌های Cuttlefish درطول چرخه آزمایش اضافه می‌کند.

کنش‌های خودکار دستگاه

شکل ۲. کنش‌های خودکار دستگاه.

تنظیم منابع آزمایش

هنگام زمان‌بندی کردن آزمایش، باید منابع آزمایش موردنیاز را ارائه دهید. در بخش تنظیم منابع آزمایشی، مطمئن شوید فایل‌های بارگذاری‌شده را به نام‌های منبع صحیح اختصاص دهید:

  • بسته ابزارهای میزبان، برای مثال cvd-host_package.tar.gz، را به نام cvd_host_package نگاشت کنید.
  • فایل فشرده تصویر دستگاه را به نام cvd_device_image نگاشت کنید.

منابع آزمایشی برای Cloud Orchestration

شکل ۳. درحال نگاشت منابع آزمایشی.

مشاهده اجراها و گزارش‌های آزمایش

پس‌از تکمیل آزمایش، می‌توانید گزارش‌ها را در بخش فایل‌های خروجی مشاهده کنید. گزارش‌های خاصی که برای نمونه‌های تحت مدیریت Cloud Orchestrator جمع‌آوری می‌شود عبارت‌اند از:

  • ‫launcher.log: گزارش‌های راه‌انداز Cuttlefish
  • ‫kernel.log: گزارش استاندارد هسته Android