کانال تلگرام منطقه لینوکسی ها
نمایش نتایج: از 1 به 6 از 6

موضوع: آموزش نصب Varnish Cache (توسعه دهنده HTTP) و انجام تست لود با استفاده از Apache و Nginx

  1. #1
    مدیریت کل انجمن
    تاریخ عضویت
    Jun 2013
    محل سکونت
    Tehran
    سن
    33
    نوشته ها
    1,318
    تشکر ها
    761
    62
    میزان امتیاز
    6
    Array

    آموزش نصب Varnish Cache (توسعه دهنده HTTP) و انجام تست لود با استفاده از Apache و Nginx

    در این مقاله ما میخواهیم نحوه نصب/تنظیمات وارنیش کش (Varnish Cache) به همراه تنظیمات آن روی وب سرورهای Apache و Nginx را در Debian/Ubuntu و CentOS/RedHat به شما توضیح دهیم. آیا تا به حال فکر کرده اید که زمانیکه شما به این صفحه وارد میشوید چه اتفاقی می افتد. یا زمانیکه شما روی لینکی که از طریق یک خبرنامه و یا لینکی از صفحه خانگی منطقه لینوکسی ها کلیک میکنید و به این مقاله وارد میشوید چه اتفاقی در پشت صحنه روی میدهد.

    به عبارت ساده، شما (یا در واقع مرورگرتان) یک درخواست HTTP (یا http request) به سمت وب سروری که این سایت روی آن میباشد ارسال میکند، و وب سرور یک پاسخ HTTP (یا http response) را بر میگرداند.

    varnish-logo-linux-zone-forums-2-jpg

    ساده به نظر میرسد، اما این مرحله شامل مراحل بیشمار دیگری نیز میباشد. به منظور ارائه صفحه ای که به درستی و تمام کمال طراحی شده به طوریکه شما بتوانید تمامی منابع درون آنرا مشاهده کنید پردازش های زیادی باید سمت سرور صورت پذیرد. شما میتوانید فرض کنید که اگر وب سرور بخواهد به درخواست های زیادی شبیه به این و به صورت همزمان پاسخ دهد میتواند خودش یا کل سیستم را به مدت طولانی در اختیار crawl ها قرار دهد.

    و این جایی است که Varnish (یک توسعه دهنده ی با عملکرد بالا برای HTTP و reverse proxy) میتواند تا حد بالایی کار شما را آسان کند. در این پست ما به شما نحوه نصب و استفاده از وارنیش به عنوان یک front-end برای آپاچی یا انجین ایکس به منظور کش کردن سریعتر درخواست های HTTP بدون لود اضافی روی وب سرور، را آموزش خواهیم داد.

    به هر حال، از آنجایی که وارنیش به صورت نرمال کش خود را در مموری (به جای ذخیره روی دیسک) ذخیره میکند ما نیاز خواهیم داشت که با دقت باشیم و فضای RAM موجود برای cache را محدود کنیم. درباره نحوه انجام دادن آن بحث خواهیم کرد.

    1-varnish-cache-server-png

    کلاینت ها درخواست های HTTP خود را به آنچه که آنها با عنوان یک سرویس وب سرور منظم میبینند، ارسال میکنند اما در حقیقت آنچه که این درخواست ها را دریافت میکند Varnish میباشد. وارنیش در عوض درخواست ها را به Apache یا Nginx ارجاع میدهد و پاسخ ها را در cashe خود ذخیره میکند به طوریکه درخواست های بعدی به جای اینکه از طریق عملیات پردازش دیگری در وب سرور پاسخ داده شوند مستقیما از کش وارنیش فراخونی میشوند. این موضوع زمان پاسخ را سرعت بخشیده و پردازش لود در خود وب سرور را کاهش میدهد.



    نصب Varnish

    در این پست ما فرض میکنیم که شما یک سرور LAMP یا LEMP نصب شده آماده دارید. در غیر اینصورت لطفا یکی از آنها را با استفاده از پست های زیر قبل از ادامه کار نصب کنید.



    داکیومنت های رسمی به شما پیشنهاد میکنند که وارنیش را از طریق ریپازیتوری توسعه دهنده آن نصب کنید به این دلیل که آنها همیشه آخرین ورژن ها را ارائه میدهند. شما همچنین میتوانید انتخاب کنید که پکیج را از ریپازیتوری های رسمی توزیع لینوکس خود (اگر چه کمی قدیمی باشد) نصب کنید.

    همچنین لطفا توجه کنید که ریپازیتوری های مورد نظر تنها از سیستم های 64 بیتی پشتیبانی میکنند در حالیکه برای سیستم های 32 بیتی شما باید از ریپازیتوری های رسمی توزیع مورد نظر خود استفاده کنید.

    در این پست ما Varnish را از طریق ریپازیتوری های رسمی که توسط هر توزیع پشتیبانی میشوند نصب خواهیم کرد. هدف اصلی پشت این تصمیم در حقیقت ایجاد یکپارچگی در روش نصب و اطمینان از برطرف کردن اتوماتیک مشکلات dependency (پیش نیاز) برای تمام معماری های سیستمی میباشد.

    روی Debian و Ubuntu
    کد PHP:
    # aptitude update && aptitude install varnish     [بهتر است دستورات را با sudo اجرا کنید.] 

    روی RedHat, CentOS و Fedora

    برای centos و redhat شما نیاز خواهید داشت که قبل از نصب Varnish ریپازیتوری EPEL را فعال کنید.
    کد PHP:
    # yum update && yum install varnish 

    اگر نصب با موفقیت کامل شود شما یکی از ورژن های زیر را با توجه به توزیع لینوکسی تان خواهید داشت.
    • Debian: 3.0.2-2+deb7u1
    • Ubuntu: 3.0.2-1
    • Fedora, CentOS, و RHEL ورژن 4.0.2 (وارنیش در این ورژن همانند بالا در ریپازیتوری EPEL فعال میباشد.)



    در نهایت، اگر پروسه نصب خودش Varnish را start نکرد شما نیاز دارید که به صورت دستی آنرا start کنید، و همچنین start اتوماتیک آنرا به هنگام Boot فعال کنید.

    روی Debian, Ubuntu, CentOS/RHEL 6.x و Fedora 15-20
    کد PHP:
    # service varnish start
    # service varnish status
    # chkconfig --level 345 varnish on 

    روی CentOS/RHEL 7.x و Fedora 21
    کد PHP:
    # systemctl start varnish
    # systemctl status varnish
    # system enable varnish 

    تنظیمات Varnish

    برای کار با Varnish شما نیاز خواهید داشت که با دو فایل کانفیگ آشنا شوید.

    1 - پارامترهای فایل تنظیمات Varnish :
    • /etc/sysconfig/varnish (در RHEL/CentOS 6.x/Fedora machines) یا /etc/default/varnish (در سیستم های Debian و Ubuntu (Varnish ورژن 3.0)
    • /etc/varnish/varnish.params در سیستم های RHEL/CentOS 7 و Fedora 21 (Varnish ورژن 4.0)


    2 - فایل تنظیمات VCL (زبان تنظیمات وارنیش / Varnish Configuration Language) فایل /etc/varnish/default.vcl

    فایل اول یک فایل کانفیگ محیطی است که شامل تمام اطلاعات مورد نیاز برای وارنیش است تا به درستی کار کند، در حالیکه فایل دوم به شما امکان تعریف پالیسی های caching تان را فراهم میآورد.

    از آنجایی که شما در این پست با ورژن هایی متفاوتی از وارنیش روبه رو هستید ما تنظیمات مشترک را مشخص خواهیم کرد و برای اطلاعات بیشتر به داکیومنت های هر ورژن (3.0 و 4.0) مراجعه نمایید.

    همانطور که قبلا گفتیم Varnish بین Client ها و Web Server قرار میگیرد. به همین دلیل و به منظور اینکه عملیات کش برای کاربران نهایی شفاف شود ما نیاز خواهیم داشت :

    1 - Port پیش فرض را که Varnish به آن گوش میدهد را به 80 تغییر دهیم.

    2 - Port پیش فرض را که وب سرور به آن گوش میدهد را به 8080 (به جای پورت پیش فرض 80) تغییر میدهیم.

    3 - و در آخر ترافیک های ورودی از وارنیش را به وب سرور redirect میکنیم. خوشبختانه وارنیش این مورد را بعد از اینکه ما مراحل 1 و 2 را انجام دادیم خودش به صورت اتوماتیک انجام میدهد.

    جدول زیر فایل های تنظیمات و تغییراتی که ما باید به ازای هر ورژن باید ایجاد کنیم را لیست میکند.

    varnish-table-list-configuration-png

    تمام این تنظیمات در فایل های کانفیگ به صورت کامل توضیح داده شده اند. به هر حال، فکر میکنم ضرری ندارد که آنرا توضیح دهیم.
    کد PHP:
    VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
    or
    VARNISH_STORAGE="malloc,512M" 
    که به این معنی است که به منظور کش کردن 512MB از بلاک مموری را اشغال خواهد کرد. شما میتوانید میزان مموری را با توجه به ریسورس های سخت افزاری تان تغییر دهید و یا انتخاب کنید که فایل های کش شده را در دیسک ذخیره کند.

    مورد دوم (که در اینجا توضیح نخواهیم داد) اینکه شما میتوانید تنها از خط پیش فرض VARNISH_STORAGE استفاده کنید که به صورت پیش فرض در فایل کانفیگ موجود است.

    اکنون فایل کانفیگ وب سرور را ویرایش میکنیم.

    varnish-webserver-configuration-png

    بعد از تغییرات بالا فراموش نکنید Varnish و webserver را restart کنید.


    تست Varnish

    اولین تست ایجاد یک درخواست HTTP از طریق curl و بررسی چیزی است که از طریق وارنیش کنترل میشود.
    کد PHP:
    # curl -I http://localhost 



    وارنیش همچنین شامل دو ابزار ساده نیز میباشد :

    • نمایش log های Varnish به صورت real time که varnishlog نامیده میشود.
    • نمایش آمار کش Varnish که varnishstat نامیده میشود.


    به عنوان تست بعدی که در تصویر بعد مشاهده میکنید ما هم log و هم آمار وارنیش را روی سرور CentOS 7 (در حقیقت dev1 در نیمه بالایی تصویر) و روی یک سرور Debian 7.5 (در حقیقت dev2 در نیمه پایینی تصویر) هنگامیکه درخواست های HTTP ارسال و پاسخ ها دریافت میشوند نمایش خواهیم داد.

    سومین و آخرین تست ما شامل آنالیز و تحلیل وب سرور و وارنیش با ابزار ab و همچنین مقایسه زمان response و لود CPU در هر مورد میباشد. در این مثال ما از سرور CentOS 7.0 استفاده خواهیم کرد اما شما میتوانید هر توزیع دیگری را استفاده کنید و نتایج مشابهی به دست آورید. میانگین لود (load avarage) را در بالای خروجی و request ها در خط دوم خروجی ab مشاهده نمایید.

    با استفاده از ab، ما 50 درخواست همزمان در یک لحظه (با استفاده از آپشن -c 50) را ارسال خواهیم کرد و تست را 1000000 بار تکرار میکنیم. (با استفاده از -n 1000000). وارنیش یک تعداد بالاتری از درخواست ها را در ثانیه ارسال میکند و میانگین لود بسیار پایین تری را مصرف میکند.

    نکته : لطفا به خاطر داشته باشید که وارنیش روی پورت 80 (پورت پیش فرض HTTP) در حال listen کردن است در حالیکه Apache روی پورت 8080 لیسن میکند. همچنین به میزان زمان مورد نیاز برای تکمیل هر تست دقت کنید.
    کد PHP:
    # ab -c 50 -n 100000 http://localhost/index.html 



    نتیجه:

    در این مقاله ما درمورد نحوه ی راه اندازی کشینگ وارنیش در مقابل یک وب سرور (آپاچی یا انجینکس) صحبت کردیم.توجه کنید که ما عمیقا روی فایل کانفیگ default.vcl بحث نکردیم که برای ما امکان تغییرات دلخواه روی پالیسی های caching را فراهم میاورد.
    برای مثالهای بیشتر پیشنهاد میکنیم که به داکیومنتهای رسمی مراجعه نمایید.(لینکهایی که در ابتدای این مقاله جایی که فایلهای کانفیگ وارنیش را لیست کردیم مشاهده نمایید )
    کانال تلگرام : https://telegram.me/linuxzone
    گروه فیس بوک : https://www.facebook.com/groups/linux.zone
    گوگل پلاس : https://plus.google.com/communities/...85817219667474
    گروه لینکدین : https://www.linkedin.com/groups/13521922
    پروفایل تویتر : https://twitter.com/Mohammad_Habili
    پروفایل اینستاگرام : https://www.instagram.com/mohammad_habili

  2. کاربر مقابل از Habili عزیز به خاطر این پست مفید تشکر کرده است:

    mehrdadali14  (10-07-2017)

  3. #2
    عضو انجمن
    تاریخ عضویت
    May 2015
    سن
    34
    نوشته ها
    11
    تشکر ها
    23
    0
    میزان امتیاز
    0
    Array
    باسلام من توی سنتوس 7 مراحل بالا رو رفتم بعد از نصب ورنیش راه اندازی نشد خطا زیر رو داد
    کد PHP:
    # systemctl status varnish.service
    ● varnish.service Varnish Cachea high-performance HTTP accelerator
       Loaded
    loaded (/usr/lib/systemd/system/varnish.servicedisabledvendor preset:       disabled)
       
    Activefailed (Result: exit-codesince Sat 2017-10-07 06:22:08 CEST1min 15s ag      o
      Process
    8344 ExecStart=/usr/sbin/varnishd -/var/run/varnish.pid -f $VARNISH_VCL_      CONF -${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} -${VARNISH_ADMIN_LISTEN_AD      DRESS}:${VARNISH_ADMIN_LISTEN_PORT} -S $VARNISH_SECRET_FILE -u $VARNISH_USER -g $VARN      ISH_GROUP -s $VARNISH_STORAGE $DAEMON_OPTS (code=exitedstatus=126)


    Oct 07 06:22:08 sv555.p..........................com systemd[1]: Starting Varnish Cache...
    Oct 07 06:22:08 sv555.p..........................com varnishd[8344]: Message from C-compiler:
    Oct 07 06:22:08 sv555.p..........................com varnishd[8344]: /bin/sh: /usr/bin/gcc:...
    Oct 07 06:22:08 sv555.p..........................com varnishd[8344]: /bin/shline 0exec:...
    Oct 07 06:22:08 sv555.p..........................com varnishd[8344]: Running C-compiler fai...
    Oct 07 06:22:08 sv555.p..........................com varnishd[8344]: VCL compilation failed
    Oct 07 06
    :22:08 v555.p..........................com systemd[1]: varnish.servicecontrol p...
    Oct 07 06:22:08 sv555.p..........................com systemd[1]: Failed to start Varnish Ca...
    Oct 07 06:22:08 sv555.p..........................com systemd[1]: Unit varnish.service enter...
    Oct 07 06:22:08 sv555.p..........................com systemd[1]: varnish.service failed.
    HintSome lines were ellipsized, use -l to show in full
    ویرایش توسط Habili : 10-07-2017 در ساعت 05:57 PM

  4. #3
    مدیریت بخش
    تاریخ عضویت
    Aug 2013
    سن
    33
    نوشته ها
    817
    تشکر ها
    287
    9
    میزان امتیاز
    5
    Array
    سلام این پیغام میگه که سرویس وارنیش شما استارت نشده. با دستور systemctl start varnishd اونو استارت کنید.
    سال 95 :: دانسته هایمان را به اشتراک میگذاریم
    رویاهای خودت رو دنبال کن

  5. #4
    عضو انجمن
    تاریخ عضویت
    May 2015
    سن
    34
    نوشته ها
    11
    تشکر ها
    23
    0
    میزان امتیاز
    0
    Array
    نقل قول نوشته اصلی توسط amir نمایش پست ها
    سلام این پیغام میگه که سرویس وارنیش شما استارت نشده. با دستور systemctl start varnishd اونو استارت کنید.
    با تشکر از جوابتون خدمتتون عرض کنم که اونم زدم ارور میداد
    systemctl start varnishd
    Failed to start varnishd.service: Unit not found.

  6. #5
    مدیریت بخش
    تاریخ عضویت
    Aug 2013
    سن
    33
    نوشته ها
    817
    تشکر ها
    287
    9
    میزان امتیاز
    5
    Array
    ظاهرا وارنیش نصب نشده روی سیستم تون. کامندی varnish رو بزنید ببینید چه ارروری رو برمیگردونه.
    سال 95 :: دانسته هایمان را به اشتراک میگذاریم
    رویاهای خودت رو دنبال کن

  7. #6
    عضو انجمن
    تاریخ عضویت
    May 2015
    سن
    34
    نوشته ها
    11
    تشکر ها
    23
    0
    میزان امتیاز
    0
    Array
    Package varnish-4.0.5-1.el7.x86_64 already installed and latest version

موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 10-21-2015, 05:10 PM
  2. کانفیگ varnish cache سر راه وب سرور
    توسط Gravity در انجمن General Server
    پاسخ: 0
    آخرين نوشته: 09-28-2014, 12:01 AM
  3. پاسخ: 0
    آخرين نوشته: 09-27-2014, 11:57 PM
  4. عملکرد پلاگین های nginx و varnish سر راه آپاچی
    توسط Gravity در انجمن Web Server and Databases
    پاسخ: 0
    آخرين نوشته: 09-27-2014, 11:21 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
درباره ما
سایت منطقه لینوکسی ها در سال 1392 با هدف ارائه خدمات نوین در حوزه فناوری اطلاعات و ارتباطات در راستای پیاده سازی ارتباطات صدا، تصویر، دیتا و بالا بردن سطح علمی و عمومی کاربران از طریق انجمن در سطح جهانی راه اندازی شده و با بهره گیری از توان تخصصی و تجارب حرفه ای مدیران و کارشناسان خود، پیشگام بودن در ارائه راه کارهای برتر را آرمان خود قرار داده است. امید است این سایت بتواند زمینه ساز رشد و ترقی جامعه ایرانی در سرتاسر دنیا گردد.
شبکه های اجتماعی
ایمیل مدیر کل
habili@linux-zone.org