ایلانماسک برای ارسال یک ماهواره به مدار زمین، نیازمند یک کلاستر ردیس میباشد؛ اما او، پس از ریزش شدید dogecoin، بهشدت بیپول شده است و نمیتواند هزینهی اجارهی چند سرور ابری برای ایجاد یک کلاستر ردیس را پرداخت کند. بنابراین میخواهد یک کلاستر ردیس را بر روی چند docker container با کمک Ansible بالا بیاورد. او در این مسیر نیازمند کمک شماست.
برای دانلود پروژهی اولیه روی این لینک کلیک کنید.
در ابتدای کار، برای ایجاد کانتینرهای ردیس، نیاز است که فایل docker-compose.yml
را تکمیل کنید. توجه داشته باشید که شما اجازهی build کردن یک Image جدید نخواهید داشت و باید از Imageهای استاندارد استفاده کنید. بهطور خاص، برای Redis میتوانید از Image زیر استفاده کنید:
توجه داشته باشید که باید فایل docker-compose.yml
را بهشکلی تکمیل کنید که پس از up
کردن آن، ۶ کانتینر Redis اجرا شوند که ۳ تا از آنها برای Nodeهای master و ۳ تای دیگر آنها برای Nodeهای slave استفاده خواهند شد. پس توجه داشته باشید که ما از شما انتظار داریم که به ازای هر Node اصلی، یک replica ایجاد شود همچنین network همهی کانتینرها host
باشد و در نظر داشته باشید ایمیج registry.gitlab.com/qio/standard/redis:latest
برابر با همان ایمیج redis
اصلی است و داکیومنت آن در این لینک قابل مشاهده است.
۱. نام containerها باید حتماً به شکل زیر باشد:
توجه کنید، آن کانتینری که نامش با master شروع میشود، در انتهای کار، باید واقعاً حاوی یک Node از ردیس Master باشد و آن کانتینری که نامش با slave شروع میشود، در انتهای کار، باید واقعاً حاوی یک Node از ردیس Slave یا replica باشد.
۲. هریک از این containerها باید روی پورت مشخصی که مربوط به آنها میباشد قرار گیرند. دقیقاً به شکل زیر:
در صورتیکه نیاز دارید فایل یا مسیری را به درون هریک از containerها Volume کنید، میتوانید از پوشهای بهنام data
استفاده کنید. و برای ایجاد Volume از Relative Path استفاده کنید. برای مثال:
فراموش نکنید که فایل somefile
را درون پوشهی data
قرارداده و آن را برای داوری ارسال نمایید. برای مثال، پوشهی ارسالی شما برای داوری کوئرا به شکل زیر میتواند باشد:
درصورتی که علاقهمند به استفاده از پوشهی data
نیستید نیز مشکلی نیست و میتوانید آن را ارسال نکنید.
توجه: سیستم داوری کوئرا بهصورت خودکار فایل docker-compose.yml
را با کامند up
اجرا میکند. شما نیازی به کد یا اسکریپتی برای اجرای این کار ندارید.
پس از بالا آمدن containerهای Redis، که سیستم داوری کوئرا بهصورت خودکار آنها را با استفاده از فایل docker-compose.yml
شما بالا میآورد، شما نیازمند ایجاد هماهنگی میان این Nodeهای Redis خواهید بود. برای ایجاد این هماهنگی (یا اصطلاحاً ایجاد cluster)، میتوانید از Ansible استفاده کنید.
پس از بالا آمدن کامل همهی containerهای Redis، فایل site.yml
با دستور ansible-playbook
اجرا خواهد شد. شما میتوانید فایل cluster.yml
را به هر صورتی که نیاز دارید تغییر دهید، بهشکلی که cluster مربوط به Nodeهای Redis ایجاد شود.
توجه: شما در سیستم host، به redis-cli
دسترسی ندارید. در واقع، redis-server
در سیستم host نصب نیست. (راهنمایی: اما در تمامی Nodeها نصب است!)
در صورتی که علاقهمند به استفاده از Ansible برای اجرای کلاستر نیستید، میتوانید از آن استفاده نکنید. تمامی نمرهای که شما دریافت میکنید، مربوط به اجرای درست و دقیق کلاستر خواهد بود. پس اگر میتوانید بدون استفاده از Ansible، یک کلاستر ردیس میان ۶ کانتینر ایجاد کنید، این کار را انجام دهید. بههرحال این امکان برای شما وجود دارد که از Ansible برای اجرای دستوراتی که علاقهمند به اجرای آنها در سیستم host هستید استفاده کنید.
شما فقط میتوانید مسیرهای هایلایت شده را تغییر دهید:
در نهایت این پوشه را zip کرده و ارسال کنید. توجه کنید که پس از extract کردن فایل zip شما، باید فایل docker-compose.yml
را ببینیم.