بالا بردن آپ تایم سرور

m_maj2004

Member
با سلام
می خواستم ببینم سایت های مثل یاهو و گوگل چگونه سرور های خودشون رو با همدیگه لینک می کنن؟
چون چندین سرور دارن و اینکه یک دامنه چطور بین چند سرور لینک شده؟
من از یکی پرسدم گفتم با خاصیت clustring این کار انجام میشه کسی میدونه چطوریه؟
 

irlogo

Active Member
کمی پیچیدس ! ولی دوست دارم از زبان دوستان پیش کسوت بشنوم
 

Majid

مدیر سایت
عضو کادر مدیریت
برای این کار از Load Balancing استفاده میکنند . مثلا شما اگر دو تا سرور داری یک سرور هم باید اختصاص بدی برای بالانس کردن بین اون دو سرور. ابتدا درخواست به سرور Balancing میره و بعد اون سرور میاد تشخصی میده که الان کدوم سرور آزاد هست درخواست شما رو میفرسته بر روی سرور دیگه..
[MIUC]L1138044449[/MIUC]


اصطلاح این کار همون Web Cluster هست.

پس از اینکه شما Load Balancing رو راه انداختی باید چند سرور اختصاصی برای اینکار بگیری که توسط Load Balancing اونها مدیریت بشه




[MIUC]W1138044151[/MIUC]



مجید
 

irlogo

Active Member
با تشکر از شما اقا مجید
خوب این جوری سرعت لود پایین نمیاد؟
مثلا یا هو یا گوگل که صد عا سرور دارند چگونه مدیریت می کنند؟
مرسی
 

Majid

مدیر سایت
عضو کادر مدیریت
متاسفانه من اطلاعات بیشتری در مورد معماری این سرورها ندارم.
اما هیچ تاثیری قاعدتا در سرعت نخواهد داشت که قابل حس باشد

بر عکس با توجه به اینکه خلوت ترین سرور انتخاب میشه سرعت بیشتر هم خواهد بود


مجید
 

Navid4d

Member
سلام
من 1 سرور دارم با 3 تا وب سایت !

همیشه لود سرورم بالای 10 هست .
هر کاری هم که فکر کنید انجام دادم ولی درست نشد ( درست شدن = لود بین 5. تا 1.5 )
من از بهترین منیجرهای دنیا مثل platinumservermanagement.com برای حل این مشکل استفاده کردم ( تمام اسکریپت ها آپدیت شد ولی لود همچنان بالا موند )
روی سرور :
1 سایت با انجمن mybb هست با 5000 هزار عضو و روزانه 20000 بازدید و 5000 بازدیدکننده !
1 سایت هست با محتوای auto content با 3 تا crontab هر کدوم 1 بار در روز ( هر ساعت رو به 1 بار در روز کم کردم )
و یه سایت دانلود و آپلود .

سایت 1 و 2 اکثرا تمام cpu رو مصرف میکنند .
php 4 و mysql هم بیشترین آمار پردازش رو دارند .

من گاها لود 95 و 100 هم داشتم !
از اونجایی که اسکریپت های سرور و وب سایتها آپدیت هستند !
به نظر شما خرید load balance کمک میکنه یا ارتقای سرور :
من از سرور dedicated value - http://www.netrackservers.com/hostingsolutions-dedicated-servers.html استفاده میکنم .

ممنون.
 
آخرین ویرایش:
به نظر شما خرید load balance کمک میکنه یا ارتقای سرور :
من از سرور dedicated value - http://www.netrackservers.com/hostingsolutions-dedicated-servers.html استفاده میکنم .
با يک کانفيگ درست ميشه load رو زير 1.5 برد (البته در بيشتر مواقع)
ما مشتری های مختلفی داشتيم که ديگه فکر مي کردند کارشون از يک سرور گذشته و بايد به فکر دومين سرور باشند. اما وقتی سرور رو براشون کانفيگ کرديم ديگه هيچ مشکلی براشون بوجود نيمد و آپ تايمشون هم روز به روز بهتر شد.
نمونه خيلی تاثير گذاری که داشتيم سايت آفتاب لاگ بود که با يک سرور با مشخصات زير مشکل داشت:
کد:
2x Dual Core Xeon 3.0 GHZ Intel Guinue
2GB Ram ECC
load اونها تو شرايط عادی بين 8 تا 12 بود و تو بعضی از ساعت ها هم بالا می رفت و معمولا سرويس هاشون down می شد. (البته اگر کل سرور نمی خوابيد.)
الان يک VPS-Gold از ما گرفتند. load اونها الان زير 2 هستش. اين هم لينک آپتايمشون

البته نوع و مشخصات سرور تو وضعيت اون خيلی تاثير داره اما config و مديريت سرور نقش خيلی خيلی مهم تری داره.


با تشکر
علی اميری
 
در مورد cluster کردن دو يا چند تا سرور هم بايد بگم که با توجه به اينکه اگر database داريد بايد از يک سری نرم افزار های طراحی شده برای اين کار استفاده کنيد.
اين رو برای shared host توصيه نمی کنم.
اگر يک يا چند سايت پر ترافيک داريد و می خوای هيچ وقت نخوابند و ديگه کارشون از يک سرور گذشته استفاده از اين روش مناسب هستش.
روش هايي هستند که نيازی به سرور سوم هم نداری و دو سرور رو با هم cluster می کني.


با تشکر
علی اميری
 
در مورد cluster کردن دو يا چند تا سرور هم بايد بگم که با توجه به اينکه اگر database داريد بايد از يک سری نرم افزار های طراحی شده برای اين کار استفاده کنيد.
اين رو برای shared host توصيه نمی کنم.
اگر يک يا چند سايت پر ترافيک داريد و می خوای هيچ وقت نخوابند و ديگه کارشون از يک سرور گذشته استفاده از اين روش مناسب هستش.
روش هايي هستند که نيازی به سرور سوم هم نداری و دو سرور رو با هم cluster می کني.


با تشکر
علی اميری
البته dns cluter با load balancing تفاوت داره
 
البته dns cluter با load balancing تفاوت داره

من در مورد dns cluster اينجا چيزی ننوشتم. :)
dns cluster يه قابليتی هستش که در کنترل پنل whm هم وجود داره و تقريبا راحت ميشه اين کار رو انجام داد.
من در مورد cluster کردن يک سايت روی چند سرور توضيح دادم.
برای برای load balancing بايد cluter صورت بگيره. منظورم هم dns cluter نيست.
cluter کردن يک سايت روی دو سرور هستش.
يعنی هر چيزی که در سرور اصلی update ميشه در سرور يا سرور های ديگه هم خود به خود به روز ميشه.
اين کار هم توسط نرم افزار های مختلف قابل انجام هستش.
سخت ترين قسمت اين کار هم برای database هستش. چون عمليات های زيادی روش انجام ميشه.


با تشکر
علي اميری
 
من در مورد dns cluster اينجا چيزی ننوشتم. :)
dns cluster يه قابليتی هستش که در کنترل پنل whm هم وجود داره و تقريبا راحت ميشه اين کار رو انجام داد.
من در مورد cluster کردن يک سايت روی چند سرور توضيح دادم.
برای برای load balancing بايد cluter صورت بگيره. منظورم هم dns cluter نيست.
cluter کردن يک سايت روی دو سرور هستش.
يعنی هر چيزی که در سرور اصلی update ميشه در سرور يا سرور های ديگه هم خود به خود به روز ميشه.
اين کار هم توسط نرم افزار های مختلف قابل انجام هستش.
سخت ترين قسمت اين کار هم برای database هستش. چون عمليات های زيادی روش انجام ميشه.


با تشکر
علي اميری
راستش دوست عزیز تا اونجایی که من می دونم cluster کردن جریانش با load balancing فرق داره

کلاستر قابلیت load controller رو نداره یعنی نمی تونه لود رو مدیریت کنه و دو حالت هم بیشتر نداره یا تمام لود رو سرور اول یا تمام لود رو سرور دوم

بیشتر برای دور زدن بکار میره ...یه حالتی مثل mirror server

اما در load balancing این امکان وجود داره که مثلا فایل های شما از سرور یک لود بشه اما دیتابیس شما از سرور دیگه و می تونه لود رو کنترل کنه و بهترین گزینه برای بالانس رو انتخاب کنه

ضمنا load balancing معمولا توسط یک سخت افزار انجام میشه و یک سوئیچ چند لایه ای داره (multilayer switch) اما کلاستر نرم افزاریه و از این سوئیچ هم استفاده نمی کنه

موفق باشید
 
راستش دوست عزیز تا اونجایی که من می دونم cluster کردن جریانش با load balancing فرق داره
کلاستر قابلیت load controller رو نداره یعنی نمی تونه لود رو مدیریت کنه و دو حالت هم بیشتر نداره یا تمام لود رو سرور اول یا تمام لود رو سرور دوم
بیشتر برای دور زدن بکار میره ...یه حالتی مثل mirror server

خوب تا الان با هم به تفاهم رسيديم.
الان تونستيم دو تا سرور يا بيشتر داشته باشيم که اطلاعات تو هر دوی اونها يکسان هستش و با هم update ميشه.
حالا می تونيم به سايتمون 2 تا dns بديم.
ns1 روی سرور اول
ns2 روی سرور دوم
حالا داخل dns server سرور اول برای a record ها round robin رو اکتيو کنيم به صورتی که يک رکورد به سرور اول و رکورد دوم به سرور دوم اشاره کنه. (اينجا هم داره load balancing اتفاق می افته.)
در شرايطی که هر دو سرور up باشند هر کس روی يکی از دو سرور جواب می گيره.
حالا حالتی رو در نظر می گيريم که يکی از سرور ها از کار بيفته:
اگر سرور اول از کار افتاد dns server اون جوابی بر نمي گردونه پس به سراغ ns2 می ره و رکورد مربوط به سرور دوم رو درمياره و سايت رو از سرور دوم بالا مياره.
اگر سرور دوم از کار افتاد که round robin که روی dns server اول نصب شده با توجه به خاصيت fault tolerate تمامی درخواست ها رو به سرور اول می فرسته و کار بدون وقفه انجام ميشه.
تمامی کارهايي که انجام ميشه در لايه dns انجام ميشه پس در اين روش نياز به سخت افزار خاصی نداريم.
اما مسئله مهمتر اين هستش که چطور مطمئن باشيم data روی هر دو سرور يکسان و اطلاعات update رو داشته باشه. اگر داده ها static باشن که هيچ مشکل خاصی وجود نداره ولی اگر داده ها dynamic باشه (مثلا database) اينجاست که پای clustering (خوشه خوشه سازی) به ميان مياد.
برای اين کار نرم افزار های مختلفی وجود داره که هر کدوم کارايي مختلفی دارند و بايد درست انتخاب بشه.

اما در load balancing این امکان وجود داره که مثلا فایل های شما از سرور یک لود بشه اما دیتابیس شما از سرور دیگه و می تونه لود رو کنترل کنه و بهترین گزینه برای بالانس رو انتخاب کنه
ضمنا load balancing معمولا توسط یک سخت افزار انجام میشه و یک سوئیچ چند لایه ای داره (multilayer switch) اما کلاستر نرم افزاریه و از این سوئیچ هم استفاده نمی کنه.
يک سوال و اون هم اينکه اگر قرار باشه رو يک سرور فايل ها و رو سرور ديگه database باشه ديگه اون وقت چه نيازی به سخت افزارهای مختلف هستش؟
ضمنا تو روشی که شما می گيد ما ميتونيم تعداد زيادی سرور داشته باشيم اما همه اونها وابسته به همون database سرور هستش. اگر database سرور از کار بيفته اون وقت تمامی اون سرور ها بايد در انتظار بالا اومدن اون سرور باشند.


باز هم ممنون
علی اميری
 
آخرین ویرایش:

m_maj2004

Member
درسته اگر سروری که کار تنظیم بار رو انجام میده از کار بیفته احتمالا بقیه هم کار نمی کنند
باید دید سایت های بزرگ از چه روشی برای این کار استفاده می کنند واقعا گوگل و یاهو و یا ماکروسافت تا حالا یک لحظه هم داون نداشتن این یکی از رمز های موفقیت اونهاست.
در حالت dns که شما می گید فقط دو تا سرور میشه آیا راه گیری هست که بیشتر بشن؟
 
نه. تو اين روشی که من مي گم اگر سرور اول هم از کار بيفته باز سايت بدون مشکل از سرور دوم بالا مياد.
گر سرور اول از کار افتاد dns server اون جوابی بر نمي گردونه پس به سراغ ns2 می ره و رکورد مربوط به سرور دوم رو درمياره و سايت رو از سرور دوم بالا مياره.
اگر سرور دوم از کار افتاد که round robin که روی dns server اول نصب شده با توجه به خاصيت fault tolerate تمامی درخواست ها رو به سرور اول می فرسته و کار بدون وقفه انجام ميشه.

همچنين امکان زياد کردن سرور ها هم به هر تعدادی که بخواهيد وجود داره.



با تشکر
علی اميری
 
خوب تا الان با هم به تفاهم رسيديم.
الان تونستيم دو تا سرور يا بيشتر داشته باشيم که اطلاعات تو هر دوی اونها يکسان هستش و با هم update ميشه.
حالا می تونيم به سايتمون 2 تا dns بديم.
ns1 روی سرور اول
ns2 روی سرور دوم
حالا داخل dns server سرور اول برای a record ها round robin رو اکتيو کنيم به صورتی که يک رکورد به سرور اول و رکورد دوم به سرور دوم اشاره کنه. (اينجا هم داره load balancing اتفاق می افته.)
در شرايطی که هر دو سرور up باشند هر کس روی يکی از دو سرور جواب می گيره.
حالا حالتی رو در نظر می گيريم که يکی از سرور ها از کار بيفته:
اگر سرور اول از کار افتاد dns server اون جوابی بر نمي گردونه پس به سراغ ns2 می ره و رکورد مربوط به سرور دوم رو درمياره و سايت رو از سرور دوم بالا مياره.
اگر سرور دوم از کار افتاد که round robin که روی dns server اول نصب شده با توجه به خاصيت fault tolerate تمامی درخواست ها رو به سرور اول می فرسته و کار بدون وقفه انجام ميشه.
تمامی کارهايي که انجام ميشه در لايه dns انجام ميشه پس در اين روش نياز به سخت افزار خاصی نداريم.
اما مسئله مهمتر اين هستش که چطور مطمئن باشيم data روی هر دو سرور يکسان و اطلاعات update رو داشته باشه. اگر داده ها static باشن که هيچ مشکل خاصی وجود نداره ولی اگر داده ها dynamic باشه (مثلا database) اينجاست که پای clustering (خوشه خوشه سازی) به ميان مياد.
برای اين کار نرم افزار های مختلفی وجود داره که هر کدوم کارايي مختلفی دارند و بايد درست انتخاب بشه.


يک سوال و اون هم اينکه اگر قرار باشه رو يک سرور فايل ها و رو سرور ديگه database باشه ديگه اون وقت چه نيازی به سخت افزارهای مختلف هستش؟
ضمنا تو روشی که شما می گيد ما ميتونيم تعداد زيادی سرور داشته باشيم اما همه اونها وابسته به همون database سرور هستش. اگر database سرور از کار بيفته اون وقت تمامی اون سرور ها بايد در انتظار بالا اومدن اون سرور باشند.


باز هم ممنون
علی اميری
بله فرمایش شما برای کلاستر کاملا صحیحه اما همچنان با load balance فرق داره مثلا در لایه dnsانجام نمیشه

load balancing یک مبحث جداست :)
 
ضمنا load balancing معمولا توسط یک سخت افزار انجام میشه و یک سوئیچ چند لایه ای داره (multilayer switch) اما کلاستر نرم افزاریه و از این سوئیچ هم استفاده نمی کنه

من هنوز جواب سوالم در مورد استفاده از multilayer switch رو برای زمانی که قرار هستش web server روی يک سرور و database روی يک سرور ديگه قرار بگيره نگرفتم. اين کاری که شما ميگيد به راحتی و بدون استفاده از هيچ سخت افزاری انجام ميشه. (البته برای کارکرد منطقی بايد اين دو سرور با پهنای باند سريعی به هم متصل باشن که در اين روش پيشنهاد ميشه از uplink port جدا با کارت شبکه های جدا اين دو سرور به صورت مستقيم به هم وصل بشن.)
من منتظر جواب شما در اين باره هستم ؟!؟


با تشکر
علی اميری
 
شما اگر اين مطلب رو با دقت بخونيد ميبينيد که کار load balance انجام شده.
فشار سايت روی سرورها تقسيم ميشه و به يک سرور وابسته نيست.
مثلما اين روش کارايي بيشتری نسبت به روشی که شما مي گيد داره.
من گفتم روشی که شما مي گيد وابسته به يک سرور هستش و اگر اون سرور از کار بيفته ديگه عملا سودی وجود نداره که بقيه سرور ها سرويس بدند.
روشی که شما ميگيد split کردن سرويس ها هستش و البته يک نوع load balance هتسش ولی عملا کار اصولی نيستش و کاربرد اون هم محدود هستش و البته بزرگترين عيب اون هم وابستگی شديد سرور ها به هم و مخصوصا به سرور پايگاه داده ها هستش.
زمانی که سرور پايگاه داده سرويس نده عملا بالا بودن بقييه سرور ها معنی نمی ده و اونها فقط می تونن پيغام عدم دسترسی به پايگاه داده ها بدند. :D

در روشی که من بالا به طور کامل توضيح دادم هيچ سروری به سرور ديگه وابستگی نداره و ضمنا در تمام لحظات فشار بازديد کنندگان روی هر دو سرور يا بيشتر تقسيم ميشه و زماني که يکي از اونها سرويس نده (يا حالت بدتر و اون هم همه سرور ها به جز يک سرور سرويس نده) کار بدون هيچ خللی انجام ميشه.

با تشکر
علی اميری
 
من هنوز جواب سوالم در مورد استفاده از multilayer switch رو برای زمانی که قرار هستش web server روی يک سرور و database روی يک سرور ديگه قرار بگيره نگرفتم. اين کاری که شما ميگيد به راحتی و بدون استفاده از هيچ سخت افزاری انجام ميشه. (البته برای کارکرد منطقی بايد اين دو سرور با پهنای باند سريعی به هم متصل باشن که در اين روش پيشنهاد ميشه از uplink port جدا با کارت شبکه های جدا اين دو سرور به صورت مستقيم به هم وصل بشن.)
من منتظر جواب شما در اين باره هستم ؟!؟


با تشکر
علی اميری
خوب مثل اینکه شما در مفاهیم اولیه این دو مشکل دارید

فلسفه وجودی کلاستر و لود بالانسینگ متفاوت هست و بالانسینگ قابلیتی بود که بعدها به کلاستر اضافه شد

من کاری به خوب و بد بودن این دو ندارم و قصد مقایسه هم ندارم بنابراین سوال شما موضوعیت نداره چون از چند طریق قابل انجامه و این ربطی به رابطه کلاستر و لود بالانسینگ نداره

اگر اشتباه نکنم nt server 4.0 کلاسترینگ رو با قابلیت داشتن امکان نگهداری کپی المثنی از سرور مطرح کرده بود.این امکان باعث ایجاد حفاظت از اطلاعات در صورت آسیب رسیدن به هر بخشی از سرور می شد، اما قابلیت load-balancing در این نسخه نبود.Windows 2000 در نسخه های Advanced Server وDatacenter Server قابلیت لود بالانسینگ رو به clustering اضافه کرده

یعنی در اصل این دو مباحث جدایی بودن و روش های پیاده سازی مختلف که بعد ها با هم ادغام شدند اما هنوز هم استفاده از لود بالانسینگ فاقد قابلیت کلاسترینگ به دلایل شاید امنیتی رواج داره و اصولا وقتی حرف کلاسترینگ وسط میاد نمی شه سریع لود بالانسینگ رو بهش وصله کرد

راستش این روزها خیلی سرم شلوغه وگرنه خیلی دوست دارم یه سری مقاله راجع به همین مباحث بنویسم ...انشالله در آینده حتما این کار رو می کنم
 
در پست قبلی هم گفتم دنبال مقایسه این دو روش نیستم اما در جایی خونده بودم که کلاسترینگ از نظر امنیتی ریسکش بالاتره ...مطلب دقیقش یادم نیست اما خوب با توجه به اینکه کلاسترینگ در لایه سطح بالای dns عمل می کنه این ریسک منطقی هم به نظر میرسه

البته در عمل تفاوت چندانی رو شاهد نیستیم و شاید به قول شما کلاسترینگ با قابلیت لود بالانسینگ در عمل بهتر هم جواب بده اما از نظر تئوری تفاوت هایی هست:wink:

موفق باشید:)
 

amiri27

Member
فکر نمی کنم تقسيم ۲ سرویس بر روی ۲ سرور رو اسمش رو بشه حتی Load Balancing گذاشت. در حقیقت با این کار فقط سرویس ها تقسیم شدن بر روی ۲ تا سرور و عملا فشاری این وسط تقسیم نشده و فقط فشار DataBase از بقیه سرویس ها جدا شده. عملا Load Balancing برای این منظور استفاده میشه که بشه زمان بروز خطا در یک سرور از سرور های دیگه ای که در Cluster موجود هستن و همون ديتا رو دارن استفاده کرد ولی در روش شما هر کدوم از سرور ها که Down بشن دیگه سایت کارایی خودش رو از دست داده و از دسترسی خارج میشه.

این هم لینک مطالب مستدل درباره توضیحات داده شده در این تاپیک:

http://www.articleonramp.com/Article.cfm?ID=358
http://en.wikipedia.org/wiki/Round_robin_DNS

اسم روش هم DNS Load Balancing هست که همون طور که در ویکی پدیا هم گفته شده برای این روش نیاز به هیچ کونه سخت افزار اضافی نیستش.
http://en.wikipedia.org/wiki/Load_balancing_(computing)

به قسمت Alternative Method مراجعه کنید.

با تشکر
مصطفی امیری
 

جدیدترین ارسال ها

بالا