איך להאיץ את Apache עם Varnish Cache על CentOS 7

מטמון Varnish (ידוע גם כ-Varnish), הוא כלי קידום מהירות HTTP reverse-proxy מקור פתוח המיועד להאצת שרתי אינטרנט. הוא מיועד לנקודות קצה של API בשימוש רב וגם לאתרים דינמיים שמספקים תוכן עשיר וחוויית גלישה גבוהה.

בגדול, הוא עוזר להפחתת עומס ה-CPU; תומך באיזון עומס בשרתי האינטרנט ומאפשר לדפדפן אינטרנט לטעון אתרים במהירות עקב האחסון של המטמון בזיכרון המהיר. מספר חברות גדולות משתמשות בו כולל פייסבוק, טוויטר, ו-ויקיפדיה רק כדי לציין כמה.

דרישות

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

במאמר זה, אסביר כיצד להתקין ולהשתמש ב-מטמון Varnish 6.5 כקדמי לשרת אינטרנט Apache ב-CentOS 7 (פועל גם ב-RHEL 7).

שלב 1: התקנת שרת אינטרנט Apache על CentOS 7

1. התקן תחילה את שרת ה-HTTP של Apache ממאגרי התוכנה המוגדרים כברירת מחדל של CentOS באמצעות מנהל החבילות YUM כך:

# yum install httpd
Install Apache on CentOS 7

2. לאחר התקנת Apache, הפעל אותו לזמן הנוכחי ואפשר אותו להתחיל באופן אוטומטי בעת האתחול של המערכת.

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Start and Enable Apache

3. לאחר מכן עדכן את כללי הגישה של מערכת האש בצד השרת כדי לאפשר חבילות נכנסות בפורט 80 באמצעות הפקודות הבאות.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload
Open Apache Port on Firewall

שלב 2: התקן את Varnish Cache על CentOS 7

4. כעת קיימות חבילות RPM מקודמות עבור גרסה האחרונה של Varnish Cache 6 (כלומר 6.5 בזמן כתיבת המאמר), לכן עליך להוסיף את המאגר הרשמי של Varnish Cache.

לפני כן, עליך לאפשר את מאגר ה-EPEL כדי להתקין מספר חבילות תלות כפי שמוצג.

# yum install -y epel-release

5. לאחר מכן, התקן את pygpgme, חבילה לטיפול בחתימות GPG ואת yum-utils, אוסף של כלים שימושיים המרחיבים את היכולות הטבעיות של yum בדרכים שונות.

# yum install pygpgme yum-utils

6. כעת צור קובץ בשם /etc/yum.repos.d/varnishcache_varnish65.repo המכיל את התצורה של המאגר הבא.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

חשוב: ודא שאתה מחליף את el ואת 7 בתצורה שלך להפצת Linux ולגרסה:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. כעת הרץ את הפקודה הבאה כדי לעדכן את מטמון ה-yum המקומי שלך ולהתקין את חבילת varnish cache (אל תשכח לאשר את מפתח ה-GPG על ידי הקלדת y או yes במהלך ההתקנה):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. לאחר התקנת Varnish Cache, הקובץ הניתן להרצה הראשי יותקן בתיקיית /usr/sbin/varnishd וקבצי התצורה של Varnish ימוקמו בתיקיית /etc/varnish/:

  • /etc/varnish/default.vcl – זהו קובץ התצורה הראשי של Varnish, הוא נכתב בשפת התצורה vanish configuration language (VCL).

9. כעת הפעל את שירות ה-Varnish, הפעל אותו כך שיתחיל באופן אוטומטי במהלך האתחול של המערכת, ווודא את מעמדו כדי לוודא שהוא פועל כפי שצריך.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. תוכל לוודא שההתקנה של Varnish הצליחה על ידי ראיית מיקום הקובץ הניתן להרצה של Varnish והגרסה שהותקנה במערכת שלך.

$ which varnishd
$ varnishd -V
פלט דוגמה
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

שלב 3: הגדר את Apache כך שיעבוד עם Varnish Cache

11. כעת הגדר את Apache כך שיעבוד בשילוב עם Varnish Cache. כברירת מחדל, Apache מאזין בפורט 80, עליך לשנות את פורט ה-HTTPD ברירת המחדל ל-8080 – זה יבטיח כי ה-HTTPD ירוץ מאחורי ה-Varnish caching.

תוכל להשתמש בפקודת sed כדי לשנות את הפורט 80 ל-8080 כפי שמוצג.

# sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

הערה: כמו כן, עליך לשנות את הפורט בתצורת המארח הווירטואלי שלך עבור כל אתר שברצונך לשרת דרך Varnish. הנה ההגדרה עבור האתר הבדיקה שלנו (/etc/httpd/conf.d/tecmint.lan.conf).

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/tecmint.lan/"
    ServerName www.tecmint.lan
    # Other directives here
</VirtualHost>

12. לאחר מכן, פתח את קובץ התצורה של varnish systemd ומצא את הפרמטר ExecStart שמציין את הפורט שבו Varnish מאזין, ושנה את הערך שלו מ־6081 ל־80 כפי שמוצג בתמונה.

# systemctl edit --full  varnish

התצורה צריכה להיראות כך כאשר תסיים.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13. לאחר מכן, הגדר את Apache כשרת צד אחורי עבור שרת ה־Varnish proxy, בקובץ התצורה /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

מצא את סעיף ה־backend, והגדר את כתובת ה־IP והפורט. להלן הגדרת ה־backend הברירת מחדל, הגדר את זה להפנות לשרת התוכן האמיתי שלך.

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

אם השרת הצד אחורי שלך פועל על שרת שונה עם כתובת 10.42.1.10, אז הפרמטר המארח צריך להפנות לכתובת ה־IP הזו.

backend server1 {
    .host = "10.42.1.10";
    .port = "8080";
}

14. לאחר ביצוע כל ההגדרות הנדרשות, הפעל מחדש את HTTPD ואת מטמון ה־Varnish כדי להשפיע על השינויים הנ"ל.

# systemctl daemon-reload
# systemctl restart httpd
# systemctl restart varnish

שלב 4: בדיקת מטמון Varnish על Apache

15. לבסוף, בדוק אם Varnish מופעל ועובד עם שירות ה־HTTPD באמצעות פקודת ה־cURL למטה, שניתן להשתמש בה כדי להציג את כותרת ה־HTTP.

# curl -I http://localhost
פלט דוגמה
HTTP/1.1 200 OK
Date: Wed, 06 Jan 2021 08:36:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag: "1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html; charset=UTF-8
X-Varnish: 131085
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Connection: keep-alive

למידע נוסף, בדוק את המאגר של Varnish Cache ב־GitHub: https://github.com/varnishcache/varnish-cache

במדריך זה, הסברנו כיצד להגדיר את הפרוקסי Varnish Cache 6.5 עבור שרת Apache HTTP על CentOS 7. במקרה שיש לך שאלות או רעיונות נוספים לשתף, השתמש בטופס משוב למטה כדי לכתוב אלינו.

Source:
https://www.tecmint.com/install-varnish-cache-on-centos-7-for-apache/