PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نیاز به راهنمایی جهت ساخت Load Balancing Cluster



حامد سپهر
August 10th, 2015, 00:05
خب از عنوان مشخصه که من میخوام چیکار کنم! ولی یه سری مشکل دارم که ممنون میشم راهنماییم کنین!


مشکل اول اینه که راهی هست که یه دامنه رو بشه همزمان روی دوتا سرور ست کرد؟ جوری که اگه یکی از سرورها از دسترس خارج شد به طور اتومات از سرور دوم بره اطلاعات رو بگیره؟ من خودم یه سرچی که زدم به HAP-roxy رسیدم (جای ستاره ها تو لینک خودتون بنویسین پـروکـسی)

https://www.howtoforge.com/tutorial/ubuntu-load-balancer-ha*****/
ولی مساله این هست که باز هم به یک سرور با آپ تایم ۱۰۰٪ نیاز هست و اینکه کاربر مستقیم با سرور حاوی اطلاعات ارتباط برقرار نمیکنه و یه سرور این وسط نقش پـروکسی رو داره...


مشکل بعدی سینک کردن فایل‌های روی دوتا سرور هست. برای این کار به rsync رسیدم

http://www.tecmint.com/sync-two-apache-websites-using-rsync/
ولی دوتا مشکل وجود داشت، باید دستورات رو از طریق crontab اجرا میکردم واین یعنی اطلاعات در لحظه سینک نمیشن و یه تاخیری این وسط وجود داره. مشکل دوم هم این بود که اگه فایلی رو از روی یک سرور پاک میکردم سرور دوم متوجه نمیشد که فایل پاک شده و باید پاک بشه! وسرور اول دوباره میرفت اون فایل رو از سرور دوم میگرفت :|


سینک کردن دیتابیس ها... دیتایبس‌های روی دوتا سرور رو باید مستر-مستر با هم سینک کنم. برای این کار به اینجا رسیدم

https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication
ولی هرکاری کردم دیتابیس‌ها به صورت مستر-اسلیو سینک میشدن. درواقع باتوجه به این آموزش همیشه سرور D من میشد مستر و سرور C من میشد اسلیو.

klax0n
August 10th, 2015, 08:55
دوست عزیز برای قسمت اول سوالت نظری ندارم
ولی برای قسمت دومش از nfs یعنی network file system استفاده کن
خودش اتوماتیک فایل ها رو تو دوتاسرور نگه میداره

SCN
August 10th, 2015, 10:26
سلام
به جای HA Pro-xy از Varnish یا Nginx برای لایه Load balancer استفاده کن.
Nginx برای لود بالانسینگ تنظیماتش یکم سخت تر از Varnish هست اما میبینیم که Cloudflare هم برای Load balancing از nginx استفاده می کنه.
برای مورد دیتابیس ، Master Master انجام دادین اما نتیجه ء مطلوبو نگرفتین؟

webhosts
August 10th, 2015, 12:05
سلام

همان طور که میدونید هنگام تنظیم کردن فایل config ، میاین درون این فایل به ترتیب IP سرورها را وارد می کنید. سپس HAPROX کاربران را به ترتیب IP به سرورها منتقل می کند.
در مورد دامنه مطمئن نیستم ولی شاید بتوان a record تعریف کرد.

وقتی که Load balancing میکنید ، یک سرور فقط مخصوص Load balancing میشود پس اگر این سرور down شود load balancing شما از کار می افتد در نتیجه سایت شما از دسترس خارج میشود. برای جلوگیری از بروز این مشکل از horizontal scaling استفاده کنید. روش کارش به این صورت است که تقریباً میشه گفت همه سرورها به عنوان Load balancing میشود پس اگر سرور اصلی که مخصوص load balancing هست از دسترس خارج شود ، بقیه سرورها به صورت اتوماتیک ، یک سرور را به عنوان load balance در نظر میگیرند و سایت شما از دسترس خارج نمیشود.

موفق باشید

jahromweb
August 10th, 2015, 13:22
سلام

درمورد داون شدن لود بالانسر به نظرم از دو لود بالانسر استفاده کنید واز طریق دی ان اس کاربر رو به اون ها ارسال کنید با تکنولوژی round-robin

درمورد سینک کردن داده ها دوستان توضیح دادند.

یک مورد مهم دیگر کش کردن روی لود بالانسر ها هست اگر از nginx استفاده میکند حتما کش کنید و یا از وارنیش استفاده کنید که عالی هست در این مورد.

درمورد دیتابیس اگر وردپرس هست یک پلاگین عالی برای این مورد موجود هست البته روشی که گفتید هم اوکی هست اما مشکلی که داره اینه که بازم single point of failure اتفاق میفته !

همچنین درمورد دی ان اس که گفتم میشه بدون لود بالانسر مستقیم کاربر رو به یک از سرور ها منتقل کرد.
مهم ترین نکته در این مورد استفاده از ttl مناسب هست بسته به سایتتون و فشاری که روی دی ان اس سرور دارید مقدار دهی میکنید که باید خیلی کمتر از مقدار معمول اون باشد.
موفق باشید

- - - Updated - - -

درضمن :‌ میتونید کاری کنید که اگر سرور های backend و همچنین database داون شود و فقط لود بالانسر و یکی از دی ان اس سرور ها اپ باشد نیز سایت شما برای مدتی (grace period ) اپ باشد (بخش هایی کار کنند) این مدت هم میتواند از حدود ۱۰ دقیقه تا یک ساعت باشد ... که اپتایم سایتتان را خیلی بالا میبرد.
برای استفاده از ان حتما نیاز به کش دارید.
موفق باشید

- - - Updated - - -

درضمن :‌پیشنهاد میدم اگر توانایی این مورد رو دارید کل داده های استاتیک روی سرور جدا باشه و مستقیم کاربر به اون ها دسترسی داشته باشه روی یک ساب دامنه جدا . درصورت امکان به صورت CDN .
برای این مورد بهترین وب سرور nginx هست و از طریق همان round-robin میتوانید کاربر را به سرور ها منتقل کنید البته با کش کردن روی لود بالانسر نیز این اتفاق می افتد.

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

hamid.soltani92
August 10th, 2015, 13:25
سلام.
لطفا بفرمایید منظورتون از load-balancing چیه. میخواید بار پردازشی رو بین چند سرور پخش کنید یا صرفا یک failover load balancing میخواید راه‌اندازی کنید؟

حامد سپهر
August 10th, 2015, 23:32
دوست عزیز برای قسمت اول سوالت نظری ندارم
ولی برای قسمت دومش از nfs یعنی network file system استفاده کن
خودش اتوماتیک فایل ها رو تو دوتاسرور نگه میداره

باتوجه به توضیحاتی که خوندم nfs هم به دردم نمیخوره! چون من میخوام فایل‌ها به صورت همزمان رو دوتا سرور نگهداری بشن و نه اینکه روی یک سرور نگهداری بشن و سرور دوم هم فایل‌ها رو بره از سرور اول بگیره!

- - - Updated - - -


سلام
به جای HA Pro-xy از Varnish یا Nginx برای لایه Load balancer استفاده کن.
Nginx برای لود بالانسینگ تنظیماتش یکم سخت تر از Varnish هست اما میبینیم که Cloudflare هم برای Load balancing از nginx استفاده می کنه.
برای مورد دیتابیس ، Master Master انجام دادین اما نتیجه ء مطلوبو نگرفتین؟

درباره varnish ممنون. حتما دربارش مطالعه میکنم. درباره دیتابیس هم با توجه به همون لینیک که تو پست اول دادم همه مراحل رو چند مرتبه رفتم ولی نتیجه شد دوتا دیتابیس که با هم به صورت master-slave سینک شدن :(

- - - Updated - - -


سلام

همان طور که میدونید هنگام تنظیم کردن فایل config ، میاین درون این فایل به ترتیب IP سرورها را وارد می کنید. سپس HAPROX کاربران را به ترتیب IP به سرورها منتقل می کند.
در مورد دامنه مطمئن نیستم ولی شاید بتوان a record تعریف کرد.

وقتی که Load balancing میکنید ، یک سرور فقط مخصوص Load balancing میشود پس اگر این سرور down شود load balancing شما از کار می افتد در نتیجه سایت شما از دسترس خارج میشود. برای جلوگیری از بروز این مشکل از horizontal scaling استفاده کنید. روش کارش به این صورت است که تقریباً میشه گفت همه سرورها به عنوان Load balancing میشود پس اگر سرور اصلی که مخصوص load balancing هست از دسترس خارج شود ، بقیه سرورها به صورت اتوماتیک ، یک سرور را به عنوان load balance در نظر میگیرند و سایت شما از دسترس خارج نمیشود.

موفق باشید

اگه لینکی دارید که توضیحات کاملی درباره horizontal scaling داره ممنون میشم بدید.

- - - Updated - - -


سلام

درمورد داون شدن لود بالانسر به نظرم از دو لود بالانسر استفاده کنید واز طریق دی ان اس کاربر رو به اون ها ارسال کنید با تکنولوژی round-robin

درمورد سینک کردن داده ها دوستان توضیح دادند.

یک مورد مهم دیگر کش کردن روی لود بالانسر ها هست اگر از nginx استفاده میکند حتما کش کنید و یا از وارنیش استفاده کنید که عالی هست در این مورد.

درمورد دیتابیس اگر وردپرس هست یک پلاگین عالی برای این مورد موجود هست البته روشی که گفتید هم اوکی هست اما مشکلی که داره اینه که بازم single point of failure اتفاق میفته !

همچنین درمورد دی ان اس که گفتم میشه بدون لود بالانسر مستقیم کاربر رو به یک از سرور ها منتقل کرد.
مهم ترین نکته در این مورد استفاده از ttl مناسب هست بسته به سایتتون و فشاری که روی دی ان اس سرور دارید مقدار دهی میکنید که باید خیلی کمتر از مقدار معمول اون باشد.
موفق باشید

- - - Updated - - -

درضمن :‌ میتونید کاری کنید که اگر سرور های backend و همچنین database داون شود و فقط لود بالانسر و یکی از دی ان اس سرور ها اپ باشد نیز سایت شما برای مدتی (grace period ) اپ باشد (بخش هایی کار کنند) این مدت هم میتواند از حدود ۱۰ دقیقه تا یک ساعت باشد ... که اپتایم سایتتان را خیلی بالا میبرد.
برای استفاده از ان حتما نیاز به کش دارید.
موفق باشید

- - - Updated - - -

درضمن :‌پیشنهاد میدم اگر توانایی این مورد رو دارید کل داده های استاتیک روی سرور جدا باشه و مستقیم کاربر به اون ها دسترسی داشته باشه روی یک ساب دامنه جدا . درصورت امکان به صورت CDN .
برای این مورد بهترین وب سرور nginx هست و از طریق همان round-robin میتوانید کاربر را به سرور ها منتقل کنید البته با کش کردن روی لود بالانسر نیز این اتفاق می افتد.

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

خیلی ممنون از توضیحات کاملتون! فکر کنم یک هفته‌ای درگیر توضیحات شما باشم :D

- - - Updated - - -


سلام.
لطفا بفرمایید منظورتون از load-balancing چیه. میخواید بار پردازشی رو بین چند سرور پخش کنید یا صرفا یک failover load balancing میخواید راه‌اندازی کنید؟

من میخوام اطلاعاتم (دیتابیس، وب سرور و ...) روی دوتا سرور و یا بیشتر باشن تا در صورتی که هرکدوم از سرورها داون شدند کاربر بتونه بدون هیچ مشکلی به اطلاعات از طریق سرور دیگه دسترسی داشته باشه. و اون سرور داون شده هم وقتی بالا اومد سریع بره از سرورهایی که بالا بودن بپرسه چه گذشته تو مدتی که داون بوده و تغییرات رو اتومات روی خودش اعمال کنه. باتوجه به توضیحاتی که خوندم این کار میشه load balancing cluster و دنبال آموزش برای این کار هستم. اگه آموزش کاملی برای این کار دارید (مشکلی خاصی با انگلیسی ندارم) ممنون میشم بهم بدید.

- - - Updated - - -


سلام.
لطفا بفرمایید منظورتون از load-balancing چیه. میخواید بار پردازشی رو بین چند سرور پخش کنید یا صرفا یک failover load balancing میخواید راه‌اندازی کنید؟

من میخوام اطلاعاتم (دیتابیس، وب سرور و ...) روی دوتا سرور و یا بیشتر باشن تا در صورتی که هرکدوم از سرورها داون شدند کاربر بتونه بدون هیچ مشکلی به اطلاعات از طریق سرور دیگه دسترسی داشته باشه. و اون سرور داون شده هم وقتی بالا اومد سریع بره از سرورهایی که بالا بودن بپرسه چه گذشته تو مدتی که داون بوده و تغییرات رو اتومات روی خودش اعمال کنه. باتوجه به توضیحاتی که خوندم این کار میشه load balancing cluster و دنبال آموزش برای این کار هستم. اگه آموزش کاملی برای این کار دارید (مشکلی خاصی با انگلیسی ندارم) ممنون میشم بهم بدید.