تبلیغات
وبلاگ تخصصی لینوکس - کش سرور وارنیش - Varnish Cache Server
 
وبلاگ تخصصی لینوکس
درباره وبلاگ


به نام خداوند جان افرین

حکیم سخن در زبان آفرین



من كاربر علاقه مند به لینوكس و فارق التحصیل IT سال 89

در این وبلاگ اطلاعاتی كه در رابطه با لینوكس كسب
می كنم رو خواهم گذاشت تا مورد استفاده دیگران
قرار بگیره

مدیر وبلاگ : azam keimasi
مطالب اخیر
نویسندگان
سه شنبه 27 خرداد 1393 :: نویسنده : azam keimasi
سرویسVarnish  یک کش سرور است که فقط با سرویس httpd کار می کند و در اصل برای ارائه سرعت بهتر و بالاتر در پاسخ گویی به کاربران و مشتری های وب سایت کاربرد دارد. وارنیش رو برای هر سروری که با http کار میکند می توان نصب کرد و محتوای آن را کش کرد. وارنیش جزء نرم افزار های رایگان و تحت مجوز BSD است. پروژه وارنیش سال 2005 شروع شد و نسخه 1 اون سال 2006 ریلیز شد.
سرویس وارنیش معمولا برای سایت هایی که بازدید زیادی دارند و بصورت داینامیک سرویس می دهند مورد استفاده قرار میگیرد. در این سایت ها منابع سیستمی به شدت درگیر می شوند و اکثرا منجر به کندی سرور و یا عدم پاسخ گویی به مشتری ها می شوند.
نحوه ی کار Varnish  بدین صورته که اطلاعات صفحات وب سایت را در کش خود ذخیره می کند و در صورت وجود درخواست مشابه پاسخ کاربر را از کش خود می دهد و دیگر به وب سرور ارجاع نخواهد داد.
با وجود کانقیگ Varnish، درخواست کاربران دیگر سمت وب سرویس نخواهد رفت و تمام درخواست ها در ابتدا به Varnish می روند.
با توجه به استفاده بسیار زیاد از وب سرور Apache و عدم پاسخ گویی آن در زمان هایی که تعداد کانکشنهای آن زیاد میشود و مصرف منابع سیستمی افزایش می یابد، نیاز به بهینه سازی وب سرور پیش می آید. استفاده از Varnish به عنوان کش سرور که یکی از روش های موجود در افزایش سرعت لود شدن وب سایت برای کاربران و کاهش استفاده از منابع سیستمی (RAM & CPU)  است می تواند تاثیر زیادی در عملکرد وب سرویس داشته باشد.
نحوه ی عملکرد وارنیش کش بر سر راه آپاچی بدین شکله که کل صفحه وب سایت و محتوای http توسط وارنیش کش میشود. هم صفحه ی داینامیک و هم استاتیک. وارنیش کش از زبان VCL پشتیبانی می کند. از مزایای این زبان انعطاف پذیری بالای اون هست برای تعریف policy هایی که بتونه درخواست های کاربران رو هندل کنه. برای مثال میشه پالیسی تعریف کرد که در صورت درخواست فلان محتوا نحوه ی درخواست چه طور و از کجا باشد. برای کار با وارنیش می بایست یک سری کارها انجام شود. تا قبل از وارنیش آپاچی روی پورت 80 کار میکرد و درخواست کاربرها مستقیم به سمت آپاچی می رفت. اما بعد از نصب وارنیش می بایست پورت آپاچ رو تغییر بدیم که با وارنیش کار کنه و پورت وارنیش رو به 80 تغییر بدیم. بعد از انجام این تغییرات درخواست کاربران مستقیم به وارنیش میرسه.
در مثالی که در این پست اومده وارنیش روی خود وب سرور نصب شده است. اما در صورت نیاز میتوان روی سرور جداگانه ای نصب شود. در این صورت کانفیگ فایل ها تغییر میکند. برای مثال در فایل default.vcl آدرس IP های وب سرور یا سرورهای مورد نظر را نیز بایستی اضافه کنیم.

نصب پکیج های وارنیش بر روی CentOS:
برای نصب وارنیش از دو یسته ی varnish-libs-2.0.6-1.1.x86_64.rpm و varnish-2.0.6-1.1.x86_64.rpm  استفاده کردم.





کانفیک Varnish برای کار کردن با Apache:
بعد از انجام پروسه نصب چه از طریق فایل rpmو چه source code  فایل varnish  رو در مسیر /etc/sysconfig/ ویرایش می کنیم:
البته من از فایل اصلی یه backup میگیرم!

[root@localhost user1]# cp /etc/sysconfig/varnish /etc/sysconfig/varnish.bkp

[root@localhost user1]# vi /etc/sysconfig/varnish

در این فایل چند 4 مدل کانفیگ اومده که همشون یکی هستند اما هرکدوم به یه شکلی نوشته شدند. من کانفیگ Alternative2 را انتخاب می کنم و مابقی خطوط رو با گذاشتن # کامنت می کنم.
مقدار حافظه ای که می توان به وارنیش برای کش کردن اختصاص دهیم می بایستی 70%-80% مقدار کل RAM باشد. مابقی RAM برای کارهای سیستمی درنظر گرفته شده است. مقدار مورد نظر را به malloc می بایستی اختصاص دهیم. (Memory allocation)




ویرایش کانفیگ فایل default.vcl در مسیر /etc/varnish/:
از این فایل هم یک backup میگیرم و بعد با ادیتور مورد دلخواهم (Vi) فایل رو ویرایش می کنم.

[root@localhost user1]# cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bkp

[root@localhost user1]# vi /etc/varnish/default.vcl


در این فایل نحوه ی ارتباط با آپاچ ذکر میشود و به وارنیش میگه که کجا باید بره و محتوای وب سرور رو پیدا کنه. که در این مثال پورت 8080 آپاچ هست که روی localhost وجود داره. آپاچ حالا به عنوان backend برای ما کار میکنه دیگه و همینطور varnish که به عنوان frontend هست.



کانفیگ Apache برای کار کردن با Varnish:
کانفیگ فایل آپاچ httpd.conf که در مسیر /etc/httpd/conf/httpd.conf/  قرار دارد را می بایست ویرایش کنیم. تا قبل از وارد شدن varnish آپاچ و وب سایتمون با پورت 80 کار میکردن که در حال حاضر می بایستی اون خط از کانفیگ فایل رو کامنت کنیم و پورت 8080 رو برای localhost اضافه کنیم.  در صورتیکه Virtualhost ی هم داریم پورت آن نیز می بایست تغییر کند.
*وارنیش و آپاچ روی پورت 8080 (پورت دلبخواه بزرگتر از 1024) با هم کار میکنند.
VirtualHost 127.0.0.1:8080


فعال کردن سرویس Varnish در runlevel های 3,4,5:
اصولا فعال کردن سرویس ها در runlevel به این معنیه که در زمان بوت شدن سیستم عامل بعد از هر ریست و خاموش و روشن شدنی سرویس اتوماتیک بالا بیاد! در صورتیکه سیستم عامل روی هرکردوم از runlevel ها بالا بیاد، Varnish هم جز سرویس هایی میشه که اسکریپتش در زمان بوت شدن خونده میشه. در
نتیجه نیاز به فعال کردن یا start کردن سرویس بصورت دستی نیست.

root@localhost user1]# chkconfig --level 345 varnish on

[root@localhost user1]# chkconfig --list |grep varnish

varnish 0:off 1:off 2:off 3:on 4:on 5:on 6:off


الان دیگه میتونیم سرویس های آپاچ و وارنیش رو start کنیم. در صورتیکه هرکدوم از سرویس هامون در زمان start کردنشون failed  بدن باید کانفیگ فایل ها مجدد بررسی بشه تا مشکل بوجود آمده برطرف شود.

[root@localhost user1]# service httpd restart

Stopping httpd: [ OK ]

Starting httpd: [ OK ]



[root@localhost user1]# /etc/init.d/varnish start

Starting varnish HTTP accelerator:

[ OK ]



برای اطمینان از صحت کار هرکدام از سرویس هامون با پورت خودشون از netstat کمک می گیریم:
شکل زیر نشون میده که وارنیش روی پورت 80، listen هست.



شکل زیر نشون میده سرویس آپاچمون هم داره روی 8080 کار میکنه.



همینطور به کامند زیر هم میتونیم صحت اجرای Varnish رو چک کنیم:


سرویس وارنیش فعاله و داره کار میکنه پس لاگینگش هم می بایست فعال بشه!
در حال حاضر در مسیر /var/log/varnish/ هیچ لاگ فایلی نیست. بنابراین دو تا سرویس از وارنیش رو که برای فعال کردن لاگ ها هستند رو می بایست start  کنیم.

[root@localhost user1]# ls –l /var/log/varnish/

Total 0

[root@localhost user1]#

[root@localhost user1]# /etc/init.d/varnishncsa start

Starting varnish ncsa logging daemon: [ OK ]

[root@localhost user1]# /etc/init.d/varnishlog start

Starting varnish logging daemon: [ OK ]











نوع مطلب : سرویس‌های لینوکسی، نرم افزار آزاد، 
برچسب ها : Varnish Cache، وارنیش کش، کش سرور وارنیش،
لینک های مرتبط :
سه شنبه 15 تیر 1395 03:06 ب.ظ
سلام

وبلاگ خیلی زیبایی داری!

به منم سر بزن!

منتظرم!


پنجشنبه 19 تیر 1393 08:23 ب.ظ
ممنون خیلی از این مطلب خوشم اومد
azam keimasiخواهش :)
چهارشنبه 28 خرداد 1393 08:43 ب.ظ
مطلب بسیار آموزنده‌ای بود
تونستم در ۱۰ دقیقه چیز مفیدی یاد بگیرم
ممنونم

خدا نگهدار شماست:)
azam keimasiممنون دوست عزیز :)
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :

برای اجرای یک دستور خاص در زمانی مشخص می‌توانید از دستور at استفاده نمایید. مانند:

$ echo 'cp -r /home/* /data/' | at 12:35

برای خواندن خطوطی در فایل‌های متنی که حاوی کلمه خاصی می‌باشد از دستور grep استفاده نمایید. با اضافه کردن گزینه color-- کلمه ممورد نظر بصورت رنگی علامت‌گذاری خواهد شد. مانند:

$ grep --color word /data/myfile

برای ایجاد یک فایل فشرده شده از یک دایرکتوری خاص می‌توانید از دستور زیر استفاده نمایید: $ tar -czf myarchive.tar.gz dirname