قرار دادن سرویسهای نقشهای در کلاستر-موسسه چشم انداز-آموزش کاربردی GIS و RS
تا اینجا سه کلاستر از ماشینها را ایجاد کردیم و با توجه به نمودار شبکه، یک طرح کلاستربندی پیادهسازی کردیم. ماشینها را بر اساس منابع، هزینههای شبکه و دوری و نزدیکی به شبکه کلاستربندی کردیم. حالا به روی دیگر سکه نگاهی بیاندازیم. حالا میخواهیم سرویسها را به یک کلاستر تخصیص دهیم. شاید سوال پیش بیاید که کدام کلاستر را برای انتشار GIS سرویسها انتخاب کنیم؟ برای پاسخ به این سوال ابتدا باید رفتار و نوع این سرویسها را مشخص کنیم. در حال حاضر چهار سرویس نقشهای Parcels، Buildings، Electricity و extraction geoprocessing وجود دارند.
سرویس Parcels شامل عملیات زوم، پیمایش و جستجو است. این عملیات به منابع زیادی نیاز ندارد. اگر این سرویس را به کلاستر Power یا Remote تخصیص دهیم، منابع را بیهوده هدر میدهیم. کلاستر commodity میتواند بهخوبی از این سرویس نگهداری کند.
شاید بخواهید این سرویس را مجهز به cache کنید اما میزبانی این سرویس روی کلاستر commodity گران تمام میشود زیرا cache باید درون همهی 5 کامپیوتر کپی شود.
برای تخصیص یک سرویس به یک کلاستر میتوانید موقع انتشار سرویس و در فرم Service Editor و یا از طریق ArcGIS Server Manager تخصیص را انجام دهید.
ArcGIS Server Manager را بازکنید و روی سرویس Parcels کلیک کنید. در سمت چپ پنجره روی Parameters کلیک کنید. از لیست بازشوی کلاستر، گزینهی Commodity Computers را انتخاب کنید. روی Save کلیک کنید تا تغییرات ذخیره شوند.
قراردادن سرویس نقشهای مجهز به cache در کلاستر
دومین سرویس نقشهای Buildings است که ویژگیهای زیادی دارد. از آنجا که این سرویس به کرات استفاده میشود، مصمم شدیم تا این سرویس را cache کنیم. شاید فکر کنید که فضای زیادی برای کاشه بندی نیاز است، خصوصاً اگر بخواهید روی مقیاسهای زیادی، کاشه بندی را پیادهسازی کنید. بیائید یک بار دیگر کلاسترها را بررسی کنیم:
1- کلاستر Remote: در این کلاستر، سرور قدرتمندی با اتصال VPN با سرعت اینترنت 42 مگابایت در ثانیه وجود دارد.
2- کلاستر Power: در این کلاستر، دو سروری که از منابع زیادی استفاده میکنند وجود دارد که با سرعت یک گیگابایت در ثانیه به پایگاه داده متصل هستند.
3- کلاستر Commodity: در این کلاستر، 5 کامپیوتر خوب قرار دارند.
حالا باید یکی از این کلاسترها را برای میزبانی GIS سرویس Buildings انتخاب کنیم. کلاستر Remote را انتخاب میکنیم. از آنجا که این سرویس نیازی به اتصال به پایگاه داده ندارد زیرا مجهز به cache است؛ و یک ترابایت فضای هارددیسک را توسط کاشه بندی این سرویس ارائه میدهیم. دوری این سرور مهم نیست زیرا نیازی به اتصال پایگاه داده نداریم. بدین ترتیب همهی پهنای باند برای دانلود تصاویر کاشی شده استفاده خواهد شد. پسوند فایلهای تصویری PNG است پس به سرعت بازیابی میشوند.
برای تخصیص یک سرویس به یک کلاستر میتوانید هنگام انتشار سرویس و از فرم Service Editor استفاده کنید یا از ArcGIS Server Manager اقدام کنید. ArcGIS Server Manager را بازکنید. روی سرویس Buildings کلیک کنید. در سمت چپ پنجره روی Parameters کلیک کنید و از لیست بازشوی کلاستر، گزینهی Remote را انتخاب کنید. روی Save کلیک کنید تا تغییرات ذخیره شوند.
حالا که سرویس نقشهای Buildings را به کلاستر Remote تخصیص دادیم، همهی cache روی سرور راه دور ایجاد خواهد شد. این فرآیند کمی زمانبر است. بهتر است این کار را هنگامیکه پایگاه داده مشغول نیست انجام دهید. همچنین میتوانید بهصورت محلی cache را ایجاد کنید و سپس روی سرور آپلود کنید. مزیت این تخصیص این است که سرویس پر استفادهای را از راه دور بدون اینکه منابع ما را استفاده و تمام کند، مدیریت و اجرا میکنیم.
نگاشت یک سرویس نقشهای
حال باید سرویس نقشهای Electricity را به کلاستر مناسبی تخصیص دهیم. این سرویس اغلب بدون استفاده است؛ اما هنگامیکه استفاده میشود، عملیات پیچیدهای مانند پیمایش شبکهی هندسی، پیمایش بهترین و کوتاهترین مسیر و … را انجام میدهد. این گونه عملیات به ماشینهای قدرتمندی نیاز دارند. از آنجا که دادهی موجود در این سرویس مدام در حال تغییر و پویا است، نمیتوان این داده را Cache کرد. این سرویس باید ارتباط ثابتی با پایگاه داده داشته باشد. کلاستر Commodity به اندازهی کافی قدرتمند نیست تا درخواستها وعملیات این سرویس را ارائه و اجرا کند. میتوانیم این سرویس را به کلاستر Remote تخصیص دهیم ولی پهنای باند شبکهای محدودی داریم. ایجاد ارتباط با پایگاه داده روی یک شبکهی VPN باعث افت بسیار بالایی میشود درنتیجه سرویس اجرای خوبی نخواهد داشت. ظاهراً کلاستر Power بهخوبی میتواند این سرویس را ارائه و اجرا کند. تلاش ما این است که راه حلی با مصرف کمترین منابع مانند CPU و حافظه ارائه دهیم؛ اما این سرویس به یک سرور با منابع زیاد نیاز دارد که این سرور بهصورت محلی در حال اجرا است. سرویس Electricity را به کلاستر Power تخصیص میدهیم.
ایجاد یک سرویس geoprocessing
آخرین سرویس مورد بررسی ما، یک سرویس geoprocessing است که پایگاه داده را جستجو میکند و محدودهی مورد نظر کاربر را استخراج میکند و سرویسی است که پهنای باند بالایی نیاز دارد و حجم بالایی از دادهها در این سرویس منتقل میشود. به یک ماشین قدرتمندی نیاز داریم تا این دادهها را خرد کند و دادههای خرد شده را پردازش کند. کلاستر Remote با وجود اینکه قدرتمند است نمیتواند این سرویس را به کار بیاندازد. این کلاستر میزبان یک شبکه با سرعت 42 مگابایت در ثانیه شده است و این سرعت شبکه، سرویس geoprocessing را نمیتواند ارائه و اجرا کند. میتوانیم این سرویس را روی کلاستر Commodity اجرا کنیم. این کلاستر در شبکهای قرار دارد که پایگاه داده نیز در آنجا قرار دارد. اگر یک درخواست geoprocessing دریافت شود، کل این درخواست به یکی از ماشینهای موجود در کلاستر commodity تخصیص داده میشود و یک ماشینی که قدرت متوسطی دارد برای اجرای این درخواست دچار مشکل خواهد شد و زمان زیادی برای اجرای این درخواست نیاز دارد.
میتوان درخواست geoprocessing را به چندین بلوک تقسیم بندی کرد و اصطلاحاً خرد کرد. سپس این بلوکها بهصورت موازی و همزمان روی گروهی از ماشینها اجرا شود، دقیقاً مانند معماری Hadoop. پس این سرویس را به کلاستر Commodity تخصیص میدهیم.
Hadoop: یک فریم ورک متن باز است که برای ذخیره سازیهای حجیم و پردازش بالا از کلاسترهای محاسباتی commodity استفاده میکند.
قبلاً مشکل عملکرد را هنگام نصب ArcGIS for Server، بصورت توازن درخواستها روی GIS سرویسها حل کردهایم.
اگر کلاستر پیشفرض را پاک کردهاید و با مشکلات انتشار سرویسهایتان روبرو شده اید، باید مطمئن شوید که سرویسهای سیستمی در ArcGIS Manager در حال اجرا هستند و به یک کلاستر در حال کار تخصیص دادهشدهاند. بخاطر داشته باشید که سرویسهای سیستمی باید به پایگاه داده نزدیک باشند و روی ماشینهای قدرتمندی اجرا شوند.
کلاسترهای متناسب و متوازن
نصب اولیهی ArcGIS for Server را تمام کردیم و GIS سرورها، GIS سرویسها و کلاسترها را تعیین کردیم. حال کاربران زیاد شدهاند و پیکربندی و تنظیمات اولیه این حجم از درخواستها را نمیتواند پشتیبانی کند. زمان تصمیم گیری فرا رسیده است آیا میخواهید یک کلاستر را با اضافه کردن ماشینهای بیشتر، متناسب و متوازن کنید؟ یکبار که کلاسترها ایجاد شدند، به آسانی متوازن میشوند. اضافه کردن یک GIS سرور به یک کلاستر ساده است: بدین ترتیب که باید ArcGIS forServer را روی ماشین جدیدی که میخواهید به کلاستر اضافه کنید، نصب کنید سپس ماشین را به سایت سرور متصل کنید. این کار را در فصل اول در بخش ” نصب ArcGIS for Server” انجام دادهاید. اگر فقط یک کلاستر روی سایت سرور دارید، ماشین جدید مستقیماً به کلاستر پیشفرض اضافه خواهد شد. اگر سایت چندین کلاستر دارد میتوانید یکی از آنها را انتخاب کنید. ذکر این نکته مهم است که با استفاده از قابلیت توازن و تناسب میتوانیم ماشینهای فیزیکی ایجاد کنیم و نه ماشینهای مجازی. بدین ترتیب قدرت محاسباتی بیشتری از هر ماشین داریم. اضافه کردن ماشینهای مجازی به یک کلاستر، هیچ ارزش و امتیازی ندارد.
برای اضافه کردن یک ماشین به یک کلاستر، GIS سرور را روی ماشین جدید نصب کنید سپس ArcGIS Manager را بازکنید. پیامی ظاهر میشود که یا یک سایت سرور جدید ایجاد کنید و یا به سایت سرور موجود متصل شوید. GIS-SERVER04 ماشین جدیدی است که میخواهید آن را به سایت سرور متصل کنید. آدرس URL برای ArcGIS Manager بهصورت http://GIS-SERVER04:6080/arcgis/manager است.
روی Join Existing Site کلیک کنید تا GIS-SERVER04 به سایت متصل شود. سپس آدرس URL سایت سرور را وارد کنید. هر ماشینی که به این سایت متصل میشود را به سایت سرور ارجاع خواهد داد. نام کاربری و رمز مدیر اولیه سایت را وارد کنید و روی Next کلیک کنید.
اگر در اتصال به سایت سرور مشکلی دارید، بهجای واردکردن URL از آدرس IP استفاده کنید.
وقتی سایت سرور بیشتر از یک کلاستر دارد پیامی ظاهر میشود که یک کلاستر موجود را برای اتصال این ماشین انتخاب کنید. پس از انتخاب کلاستر، ماشین به آن کلاستر تخصیص داده میشود. پس کلاستر را انتخاب کنید و روی Next کلیک کنید.
کلاستر انتخابی روی پورت TCP ارتباط برقرار میکند. پورت TCP برای کسب اطلاعات ورودی و خروجی هر ماشین روی آن کلاستر، باید باز نگه داشته شود. اگر پورت بسته شود، نمیتوانید به کلاستر متصل شوید. در این مرحله خلاصهای از پیکربندی نمایش داده خواهد شد. روی Finish کلیک کنید تا به سایت سرور متصل شوید.
محدودیتها
اضافه کردن ماشینهای بیشتر به یک کلاستر به معنی عملکرد بهتر نیست. اگرچه زمان اجرای یک درخواست خاص برای یک سرویس به همان اندازه خواهد بود، زیرا درخواست نهایتاً به یک ماشین ارسال خواهد شد و آن ماشین مسئول بازیابی دادههای موردنیاز از پایگاه داده و پردازش آنها است. معماریهای محاسباتی توزیع شده مانند Hadoop برای بهبود قدرت پردازشهای موازی استفاده میشوند. این معماریها، داده را به چند قسمت تقسیم میکنند و تکههای داده را روی ماشینهای یک کلاستر جهت پردازش موازی توزیع میکنند. این فرآیند از مفهوم MapReduce استفاده میکند. قدرت Hadoop برخاسته از مفهوم محل داده است. در اینکه دادههای پایگاه داده در کجا استفاده شدهاند و نتایج در کجا بازیابی شدهاند، تقسیم بندی دادهها به چند قسمت و توزیع این قسمتها بین چند ماشین جهت پردازش، در این مفهوم قرار دارند. در این مفهوم ماشینها نیازی به جستجو در پایگاه داده ندارند و عدم جستجو در پایگاه داده از افت شبکه جلوگیری میکند. ماشینها روی دادهای که بهصورت محلی روی هارد دیسک قرار دارد، کار میکنند که باعث افزایش کارآئی و عملکرد میشود. بهتر است پیادهسازی Hadoop شرکت esri را ببینید. Hadoop به صنعت GIS نفوذ کرده است.
MapReduce: یک مدل برنامهنویسی برای پردازش حجم بالای دادههایی است که این دادهها روی گروهی از ماشینها که از مفهوم محل داده استفاده میکنند، قرار دارند. این مدل شامل دو تابع است.1- تابع Map: این تابع طبق معیارهایی دادهها را بررسی میکند و موارد غیر ضروری را حذف میکند و نتایج را آماده میکند.2- تابع Reduce: این تابع کار واقعی را انجام میدهد و نتایج را خلاصه سازی میکند.
محدودیت دیگری که وجود دارد این است که تعداد بالای کلاسترها میتواند امنیت را به خطر بیاندازد که با یک سیستم آسیبپذیر روبرو میشوید.
برگرفته از کتاب نصب، اجرا و مدیریت Arc GIS for server
نویسنده: دکتر محمد بافقی زاده
نشر: انتشارات اکادمیک
بدون دیدگاه