بلاگ

اتفاقات روزمره، اخبار مهم و دیگر مطالب ابر آروان

دسته‌بندی‌های بلاگ دسته‌بندی‌های بلاگ دسته‌بندی‌های بلاگ

۲۴ اردیبهشت ۹۹
یادداشت فنی
وحید اشرفیان
۲۴ اردیبهشت ۹۹
یادداشت فنی

به زودی دسترسی به پلتفرم ابری آروان در دیتاسنتر مبین‌نت برای کاربران بسته می‌شود و کاربران باید سرویس‌ها و داده‌های خود را به دیتاسنتر آسیاتک منتقل کنند.

این راهنما به‌منظور کمک به کاربران برای انتقال داده‌های خود، ارایه شده است. هم‌چنین کاربران پلتفرم ابری آروان در صورت برخورد با مشکل در روند انتقال داده‌های خود، می‌توانند با ثبت تیکت در بخش پشتیبانی، مساله را با کارشناسان ما مطرح و در راستای حل آن، راهنمایی‌های لازم را دریافت کنند. براساس این راهنما شما می‌توانید سرویس‌های خود را به دیتاسنتر دیگری منتقل کنید. توجه داشته باشید که باید روند انتقال را به ترتیب بیان شده در این راهنما، انجام دهید.

 

ساخت پروژه در دیتاسنتر آسیاتک

در گام اول، باید پروژه‌ای را در پلتفرم ابری آروان در دیتاسنتر آسیاتک تعریف کنید. توجه کنید که نام این پروژه می‌تواند مشابه یا متفاوت با نام پروژه در دیتاسنتر مبین‌نت باشد. برای انجام این کار، در پنل کاربری ابر آروان به صفحه‌ی پیش‌خوان پلتفرم ابری بروید و از قسمت بالا سمت راست گزینه‌ی دیتاسنتر، دیتاسنتر آسیاتک را انتخاب کنید و سپس پروژه‌ای را با نام دلخواه خود (با رعایت قوانین نام‌گذاری) بسازید.

برای انجام برخی از گام‌ها لازم است تا بین دیتاسنترها جابه‌جا شوید. با کمک گزینه‌ی دیتاسنتر که در تصویر بالا نشان داد شده است، می‌توانید این کار را انجام دهید.

 

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

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

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

پس از جابه‌جایی، حتمن سرویس‌های ایجاد شده از طریق کاتالوگ را از روی پلتفرم ابری آروان حذف کنید تا در بخش‌های بعدی دچار مشکل نشوید.

توجه کنید که اگر تاکنون فقط از کاتالوگ‌ها استفاده کرده اید، کار در این نقطه به اتمام می‌رسد و نیازی به ادامه‌ی مطالعه‌ی این راهنما نیست. تنها اگر از کاتالوگ‌هایی مانند mysql استفاده کرده‌اید و نیاز دارید داده‌های موجود در پایگاه داده‌ی خود را به دیتاسنتر جدید منتقل کنید، به ضمایم پایانی این مقاله مراجعه و داده‌های خود را به دیتاسنتر جدید منتقل کنید.

اگر خود، deployment یا statefulSet یا سایر اجزا مانند secret, configMap و… را ایجاد کرده‌اید، در مراحل بعدی شیوه‌ی جابه‌جایی این اجزا توضیح داده شده است. توجه داشته باشید که برای اجرای دستورات این راهنما نیاز به سیستم‌عامل مک یا لینوکس است. هم‌چنین نیاز است تا command line ابر آروان را برای این سیستم‌عامل‌ها دانلود کنید:

توجه داشته باشید که باید فایل command line را در PATH خود قرار دهید و آن را قابل اجرا (executable) کنید. اگر تاکنون در command line لاگین نکرده‌اید در بخش تنظیمات < کلیدهای API از پنل، یک کلید جدید تولید یا از یکی از کلیدهای فعلی خود استفاده کنید و با استفاده از دستور login، وارد شوید. در این مرحله از انتخاب دیتاسنتر مبین‌نت که اپلیکیشن‌های فعلی شما در آن وجود دارد، اطمینان پیدا کنید.

arvan login

نکته: پیش از شروع اجرای دستورات بعدی این راهنما، بهتر است که خطوط فرمان را در یک folder که جدید اجرا کرده‌اید، انجام دهید. برای نمونه، می‌توانید از دستور زیر استفاده کنید.

mkdir /tmp/migrate && cd /tmp/migrate

 

خروجی گرفتن از secretها

پیش از شروع این بخش اطیمنان پیدا کنید که هیچ سرویس ساخته شده از طریق کاتالوگی در دیتاسنتر مبین‌نت باقی نمانده و همه‌ی آن‌ها پاک شده‌اند.

در این بخش به جابه‌جایی secretهای ساخته شده می‌پردازیم. دقت داشته باشید که برخی از secretها به‌وسیله‌ی خود پلتفرم ابری آروان در پروژه‌ی شما ایجاد شده‌اند و به هیچ وجه نباید این secretها را منتقل کنید (چرا که در دیتاسنتر مقصد نیز این secretها وجود و مقادیر خاص خود را دارند).

برای انجام این کار، باید در command line پلتفرم ابری آروان، دستور زیر را وارد کنید.

arvan paas get secret | grep -Ev 'builder-dockercfg-|builder-token-|default-dockercfg-|default-token-|deployer-token-|deployer-dockercfg-’

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

NAME                                    TYPE                                                DATA      AGE
b8bf9147-8c98-11ea-a563-0a580a800248    Opaque                                                7        6h
docker-registry-ssd-parametersy0qna     Opaque                                                1        6h
private-reg                             kubernetes.io/dockerconfigjson                        1        6d

اگر secretهای فهرست شده در خروجی دستور را شما ایجاد نکرده‌اید، می‌توانید از این مرحله چشم‌پوشی کنید و به مرحله‌ی بعد بروید.

حال باید خروجی yaml هریک از secretها را به‌شکل جداگانه وارد یک فایل کنید. البته برخی فیلدهای اضافی در خروجی yaml وجود دارند که برای انتقال نیاز است تا حذف شوند. با دستور زیر می‌توان تنظیمات هر secret را به‌شکل yaml خروجی گرفت.

arvan paas get secret <secret-name>  -o yaml

در خروجی دستور بالا باید فیلدهای uid، resourceVersion، namespace ،selfLink، creationTimestamp حذف شوند. با دستور زیر (پس از جایگزینی <secret-name>  با نام secretها)، ضمن ذخیره کردن خروجی secret در یک فایل با همان نام، خطوط اضافی را نیز حذف کنید.

arvan paas get secret <secret-name>  -o yaml | sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d'  > <secret-name>.yaml

تمامی secretها را نیز به ترتیب بالا ذخیره کنید. در پایان، تمامی خروجی‌های گرفته شده را به دیتاسنتر جدید منتقل کنید.

 توجه داشته باشید، اگر secretها برای سرویس‌های ساخته شده از طریق کاتالوگ ساخته شده‌اند، نیازی به انتقال آن‌ها نیست و اگر نیاز به انتقال دارید باید در خروجی  فایل‌های ایجاد شده، فیلد ownerReferences و تمامی زیرمجموعه‌های آن را حذف کنید.

 

خروجی گرفتن از configMapها

گام بعدی جابه‌جایی configMapها است. برخلاف secret، نیازی به خروجی گرفتن از تک‌تک configMapها و هم‌چنین سایر اجزا نیست. چرا که سایر عناصر، پیش‌فرض‌های ساخته شده به‌وسیله‌ی پلتفرم ابری آروان را ندارند و به‌شکل کامل، ساخته‌ی کاربر یا سرویس‌های ساخته شده به‌وسیله‌ی کاتالوگ هستند. بنابراین پس از پاک کردن کاتالوگ‌ها، تنها اجزای ساخته شده به‌وسیله‌ی کاربر باقی می‌ماند.

البته، سایر اجزا هم‌چنان پس از خروجی گرفتن دارای فیلدهای اضافی هستند که باید پاک شوند. با دستور زیر می‌توانید تمامی configMapها را در قالب yaml و در یک فایل خروجی بگیرید و فیلدهای اضافی را حذف کنید.

arvan paas get configmap -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' > configmaps.yaml

دستور بالا تمامی configMapها را در خروجی خود نمایش می‌دهد، در قالب یک فهرست در فایل ذخیره و فیلدهای اضافی را حذف می‌کند.

 

خروجی گرفتن از deploymentها

همانند گام قبل نیازی به خروجی گرفتن از تک‌تک deploymentها نیست و می‌توانید با یک دستور از تمام deploymentها خروجی بگیرید.

arvan paas get deployment -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' > deployments.yaml

دستور بالا تمامی deploymentها را در خروجی خود نمایش می‌دهد، در قالب یک فهرست در فایل ذخیره و فیلدهای اضافی را حذف می‌کند.

اگر در پروژه‌ی شما deploymentconfig نیز وجود دارد، با استفاده از دستور زیر می‌توانید از آن‌ها خروجی yaml بگیرید.

arvan paas get deploymentconfig -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' > deploymentconfigs.yaml

 

خروجی گرفتن از serviceها

مانند گام قبل همان دستور را برای serviceها اجرا می‌کنیم.

arvan paas get service -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' > services.yaml

 

خروجی گرفتن از routeها

انتقال routeها مانند گام‌های قبل با یک دستور امکان‌پذیر است با این تفاوت که در این مرحله پسوند تمامی دامنه‌های شما برای انتقال به دیتاسنتر آسیاتک باید عوض شود و از apps.ir-thr-mn1.arvan.run به apps.ir-thr-at1.arvan.run تغییر کند. دستور زیر این کار را انجام می‌دهد.

arvan paas get route -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' | sed s/.apps.ir-thr-mn1.arvan.run/.apps.ir-thr-at1.arvan.run/g > routes.yaml

 

خروجی گرفتن از statefulSetها

گام بعدی جابه‌جایی statefulSetها است. اگر statefulSet ندارید، می‌توانید از این گام چشم‌پوشی کنید. برای چک کردن وجود statefulSet از دستور زیر استفاده کنید.

arvan paas get statefulset

انتقال statefulSet مانند گام قبل با یک فرمان امکان‌پذیر است، اما توجه کنید با انجام این عمل داده‌های موجود روی دیسک‌های statefulSet منتقل نمی‌شوند. انتقال این داده‌ها با توجه به سرویسی که statefulSet اجرا می‌کند، می‌تواند متفاوت باشد و در این راهنما پوشش داده نمی‌شود.

arvan paas get statefulset -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision/d' > statefulsets.yaml

دستور بالا تمامی statefulSetها را در خروجی خود نمایش می‌دهد، در قالب یک فهرست در فایل ذخیره و فیلدهای اضافی را حذف می‌کند.

 

انتقال PersistentVolumeClaimها

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

هم‌چنین بهتر است PersistenVolumeClaim را مجدد ایجاد کنید و از دیتاسنتر مبین‌نت تنظیمات آن را منتقل نکنید. اگر تنها نیاز به انتقال تنظیمات PersistenVolumeClaim دارید، مشابه قبل از دستور زیر استفاده کنید.

arvan paas get pvc -o yaml |  sed '/uid\|selfLink\|resourceVersion\|creationTimestamp\|namespace\|last-applied-configuration\|revision\|volumeName\|phase:\|pv.kubernetes.io/d' > pvc.yaml

اگر persistentVolumeClaim را در یک statefulSet تعریف کرده باشید، دیسک‌های مربوط به خود را می‌سازد و شما باید تنها داده‌های دیسک را منتقل کنید.

 

انتقال تمامی فایل‌های خروجی به دیتاسنتر جدید

ابتدا با استفاده از دستور login، دیتاسنتر آسیاتک را انتخاب کنید.

arvan login

سپس با استفاده از دستور زیر تمام فایل‌های yaml خروجی گرفته شده را در دیتاسنتر آسیاتک apply کنید.

arvan paas apply -f .

نکته: اگر در این دستور به خطای Unexpected args برخورد کردید، فایل‌ها را به‌شکل تک‌تک، apply کنید. برای نمونه، برای apply فایل ،deployments.yaml دستور مشابه زیر است.

arvan paas apply -f deployments.yaml

نکته: اگر در زمان apply با خطای زیر مواجه شدید:

Error from server (Invalid): error when creating “secret-name“: Secret “secret-name” is invalid: metadata.ownerReferences.uid: Invalid value: “”: uid must not be empty

به این معناست که secretای که خروجی گرفته‌اید، متعلق به یکی از سرویس‌های ایجاد شده از طریق کاتالوگ است. تمامی سرویس‌های موجود در کاتالوگ را می‌توانید دوباره در پنل و کاتالوگ دیتاسنتر آسیاتک ایجاد کنید. اگر نیاز به انتقال دارید باید در خروجی، فایل‌های ایجاد شده‌ی فیلد ownerReferences و تمامی زیرمجموعه‌های آن را حذف کنید.

 

ضمیمه ۱: انتقال داده‌های MySQL 

در این بخش، به شیوه‌ی انتقال داده‌های MySQL ساخته شده به‌وسیله کاتالوگ‌های پلتفرم ابری آروان، از دیتاسنتر مبین‌نت به آسیاتک پرداخته می‌شود.

همان‌طور که در بخش‌های پیشین گفته شد، برای انتقال کاتالوگ‌ها ابتدا باید مشابه همان کاتالوگ را در دیتاسنتر آسیاتک ایجاد کرد. حال برای انتقال داده‌های MySQL، کافیست ابتدا وارد پنل phpmyadmin مربوط به کاتالوگ MySQL شوید. (phpmyadmin همراه MySQL نصب شده است. هم‌چنین نیاز است تا user و password مربوط به root MySQL را وارد کنید) سپس از سربرگ Export، می‌توانید از پایگاه داده، نسخه‌ی پشتیبان تهیه کنید (توجه کنید که تمامی پایگاه داده‌های ساخته شده به‌وسیله‌ی شما انتخاب شده باشند. برای اطمینان می‌توانید گزینه‌ی Custom – display all possible options را انتخاب کنید).

پس از تهیه‌ی نسخه‌ی پشتیبان، برای بازگردانی آن، به پنل phpmyadmin مربوط به MySQL ساخته شده در دیتاسنتر آسیاتک وارد شوید و سربرگ Import را انتخاب کنید. از بخش File to Import، گزینه Choose File را انتخاب و فایل نسخه‌ی پشتیبان تهیه شده از MySQL در دیتاسنتر مبین‌نت را انتخاب و بارگذاری کنید. پس از چند لحظه، داده‌ها منتقل می‌شوند.

این مقاله را با دوستان خود به اشتراک بگذارید

نظرات