ค้นหาเว็บไซต์

ติดตั้ง Varnish Cache 5.2 เพื่อเพิ่มประสิทธิภาพ Apache บน CentOS 7


Varnish Cache (หรือที่รู้จักกันทั่วไปในชื่อ Varnish) เป็นตัวเร่ง HTTP แบบย้อนกลับพร็อกซียอดนิยมแบบโอเพ่นซอร์สซึ่งมีจุดประสงค์เพื่อเพิ่มความเร็วของเว็บเซิร์ฟเวอร์ ได้รับการออกแบบมาเพื่อจุดสิ้นสุด API ที่ใช้งานมากเกินไปและสำหรับไซต์ไดนามิกที่ให้บริการเนื้อหาจำนวนมากและมีการเข้าชมสูง

โดยพื้นฐานแล้วจะช่วยลดภาระของ CPU; รองรับการปรับสมดุลโหลดบนเว็บเซิร์ฟเวอร์และช่วยให้เว็บเบราว์เซอร์โหลดไซต์ได้อย่างรวดเร็วอันเป็นผลมาจากการจัดเก็บแคชใน RAM บริษัทใหญ่ๆ หลายแห่งใช้โปรแกรมนี้ รวมถึง Facebook, Twitter และ Wikipedia และอื่นๆ อีกมากมาย

ความต้องการ

  1. CentOS 7 ที่ติดตั้ง Apache
  2. CentOS 7 พร้อมที่อยู่ IP แบบคงที่

ในบทความนี้ ผมจะอธิบายวิธีการติดตั้งและใช้ Varnish Cache 6.5 เป็นส่วนหน้าของเว็บเซิร์ฟเวอร์ Apache ใน CentOS 7 ( ใช้ได้กับ RHEL 7 ด้วย)

ขั้นตอนที่ 1: ติดตั้ง Apache เว็บเซิร์ฟเวอร์บน CentOS 7

1. ขั้นแรกให้ติดตั้งเซิร์ฟเวอร์ Apache HTTP จากคลังซอฟต์แวร์ CentOS เริ่มต้นโดยใช้ตัวจัดการแพ็คเกจ YUM ดังต่อไปนี้

yum install httpd

2. เมื่อติดตั้ง Apache แล้ว ให้เริ่มทำงานในขณะนั้นและเปิดใช้งานให้เริ่มทำงานโดยอัตโนมัติเมื่อบูตระบบ

systemctl start httpd
systemctl enable httpd
systemctl status httpd

3. อัปเดตกฎไฟร์วอลล์ระบบถัดไปเพื่ออนุญาตแพ็กเก็ตขาเข้าบนพอร์ต 80 โดยใช้คำสั่งด้านล่าง

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

ขั้นตอนที่ 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 ในเครื่องของคุณ และติดตั้งแพ็คเกจแคชวานิช (อย่าลืมยอมรับคีย์ GPG โดยการพิมพ์ y หรือ yes ขณะติดตั้งแพ็คเกจ):

yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
yum install varnish 

8. หลังจากติดตั้ง Varnish Cache ไฟล์ปฏิบัติการหลักจะถูกติดตั้งเป็น /usr/sbin/varnishd และไฟล์การกำหนดค่า varnish จะอยู่ใน >/etc/วานิช/:

  • /etc/varnish/default.vcl – นี่คือไฟล์การกำหนดค่าวานิชหลัก ซึ่งเขียนโดยใช้ vanish configuration language (VCL)

9. ตอนนี้ให้เริ่มบริการเคลือบเงา เปิดใช้งานให้เริ่มโดยอัตโนมัติระหว่างการบูตระบบ และตรวจสอบสถานะเพื่อให้แน่ใจว่าบริการพร้อมใช้งานดังต่อไปนี้

systemctl start varnish
systemctl enable varnish
systemctl status varnish

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 ทำงานอยู่เบื้องหลังแคชวานิช

คุณสามารถใช้คำสั่ง sed เพื่อเปลี่ยนพอร์ต 80 เป็น 8080 ดังที่แสดง

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

หมายเหตุ: นอกจากนี้ คุณต้องเปลี่ยนพอร์ตในการกำหนดค่าโฮสต์เสมือนของคุณสำหรับแต่ละเว็บไซต์ที่คุณต้องการให้บริการผ่านวานิช นี่คือการกำหนดค่าสำหรับไซต์ทดสอบของเรา (/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

13. จากนั้น ตั้งค่า Apache เป็นเซิร์ฟเวอร์แบ็กเอนด์สำหรับพร็อกซี Varnish ในไฟล์การกำหนดค่า /etc/varnish/default.vcl

vi /etc/varnish/default.vcl 

ค้นหาส่วน แบ็กเอนด์ และกำหนด IP ของโฮสต์และพอร์ต ด้านล่างนี้คือการกำหนดค่าแบ็กเอนด์เริ่มต้น ตั้งค่าให้ชี้ไปที่เซิร์ฟเวอร์เนื้อหาจริงของคุณ

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 cache เพื่อให้มีผลกับการเปลี่ยนแปลงข้างต้น

systemctl daemon-reload
systemctl restart httpd
systemctl restart varnish

ขั้นตอนที่ 4: ทดสอบ Varnish Cache บน 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 Repository: https://github.com/varnishcache/varnish-cache

ในบทช่วยสอนนี้ เราได้อธิบายวิธีการตั้งค่าพร็อกซี Varnish Cache 6.5 สำหรับเซิร์ฟเวอร์ Apache HTTP บน CentOS 7 ในกรณีที่คุณมีข้อสงสัยหรือแนวคิดเพิ่มเติมที่จะแบ่งปัน ให้ใช้แบบฟอร์มคำติชมด้านล่างเพื่อเขียนกลับมาหาเรา .