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

วิธีการติดตั้ง Varnish Cache สำหรับ Apache บน CentOS/RHEL 8


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

เมื่อไคลเอ็นต์ร้องขอเนื้อหา วานิชจะยอมรับคำขอ HTTP ส่งคำขอไปยังเซิร์ฟเวอร์ต้นทาง แคชออบเจ็กต์ที่ส่งคืน และตอบกลับคำขอของไคลเอ็นต์ ในครั้งถัดไปที่ไคลเอนต์ร้องขอเนื้อหาเดียวกัน วานิชจะให้บริการจากแคช วิธีนี้ช่วยลดเวลาตอบสนองและการใช้แบนด์วิธเครือข่ายสำหรับคำขอที่เทียบเท่ากันในอนาคต

วานิชยังทำหน้าที่เป็นเราเตอร์คำขอ HTTP ไฟร์วอลล์ของแอปพลิเคชันเว็บ ตัวจัดสรรภาระงาน และอื่นๆ อีกมากมาย ได้รับการกำหนดค่าโดยใช้ ภาษาการกำหนดค่าวานิช (VCL) ที่ยืดหยุ่น ซึ่งสามารถขยายได้โดยใช้ โมดูลวานิช (หรือที่เรียกว่า VMODs ) ) รองรับ Edge Side Included (ESL), การบีบอัด Gzip และคลายการบีบอัด และอื่นๆ อีกมากมาย

ในบทความนี้ คุณจะได้เรียนรู้วิธีการติดตั้งเว็บเซิร์ฟเวอร์ Apache HTTPD และ Varnish Cache 6 บนเซิร์ฟเวอร์ CentOS/RHEL 8 ใหม่ รวมถึงการกำหนดค่า วานิชเพื่อทำงานหน้าเซิร์ฟเวอร์ HTTPD

ข้อกำหนดเบื้องต้น:

  • เซิร์ฟเวอร์ที่มีการติดตั้ง CentOS 8
  • เซิร์ฟเวอร์ที่มีการติดตั้ง RHEL 8 พร้อมเปิดใช้งานการสมัครสมาชิก Red Hat บนระบบของคุณ

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

1. เริ่มต้นด้วยการอัพเดตแพ็คเกจซอฟต์แวร์ที่ติดตั้งทั้งหมดบนระบบดังต่อไปนี้โดยใช้คำสั่ง DNF

dnf update

2. จากนั้น เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งเว็บเซิร์ฟเวอร์ Apache HTTP จากพื้นที่เก็บข้อมูล AppStream

dnf install httpd

3. ทันทีที่การติดตั้งเสร็จสมบูรณ์ ให้เริ่มบริการ httpd เปิดใช้งานให้เริ่มโดยอัตโนมัติระหว่างการบูตระบบ และตรวจสอบสถานะเพื่อยืนยันว่าบริการนั้นเปิดใช้งานอยู่ โดยใช้คำสั่ง systemctl

systemctl start httpd
systemctl enable httpd
systemctl status httpd

4. ตามค่าเริ่มต้น CentOS/RHEL 8 จะมีไฟร์วอลล์ที่ถูกล็อคโดยสมบูรณ์ (เรียกใช้ firewall-cmd –state เพื่อยืนยัน) คุณต้องเปิดการเข้าถึงบริการ HTTP ในไฟร์วอลล์เพื่อให้ผู้ใช้สามารถเข้าถึงเว็บไซต์หรือแอปพลิเคชันที่ทำงานบน HTTP และโหลดการตั้งค่าไฟร์วอลล์ซ้ำเพื่อใช้การเปลี่ยนแปลงใหม่

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

ขั้นตอนที่ 2: การติดตั้ง Varnish Cache 6.4 บน CentOS/RHEL 8

5. ขณะนี้เว็บเซิร์ฟเวอร์ Apache กำลังทำงาน คุณสามารถดำเนินการติดตั้ง Varnish Cache บนระบบเพิ่มเติมได้โดยใช้คำสั่งต่อไปนี้

dnf module install varnish

6. หลังจากการติดตั้งสำเร็จ คุณสามารถตรวจสอบเวอร์ชันของ วานิช ที่ติดตั้งบนระบบของคุณได้

varnishd -V

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

  • /etc/varnish/default.vcl – เป็นไฟล์การกำหนดค่าวานิชหลักที่เขียนโดยใช้ VCL
  • /etc/varnish/secret – เป็นไฟล์ลับของวานิช

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

systemctl start varnish
systemctl enable varnish
systemctl status varnish

ขั้นตอนที่ 3: การกำหนดค่า Apache ให้ทำงานกับ Varnish Cache

9. ถึงเวลากำหนดค่า Varnish Cache ให้ทำงานต่อหน้าบริการ Apache ตามค่าเริ่มต้น เซิร์ฟเวอร์ Apache ได้รับการกำหนดค่าให้ฟังบนพอร์ต 80 ซึ่งกำหนดไว้ในไฟล์การกำหนดค่าหลัก /etc/httpd/conf/httpd.conf

เปิดเพื่อแก้ไขโดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ

vi /etc/httpd/conf/httpd.conf

มองหาพารามิเตอร์ Listen หากต้องการรัน วานิช หน้าเซิร์ฟเวอร์ Apache คุณควรเปลี่ยนพอร์ตเริ่มต้น 80 เป็น 8080 (หรือพอร์ตอื่น ๆ ที่คุณเลือก) เป็น แสดงในภาพหน้าจอต่อไปนี้

พอร์ตนี้จะถูกเพิ่มเป็นพอร์ตของเซิร์ฟเวอร์แบ็กเอนด์ในไฟล์การกำหนดค่าวานิชในภายหลัง

นอกจากนี้ การกำหนดค่าโฮสต์เสมือนสำหรับแต่ละเว็บไซต์/แอปพลิเคชันที่จะให้บริการผ่าน วานิช ควรได้รับการกำหนดค่าให้รับฟังพอร์ตด้านบน นี่คือการกำหนดค่าสำหรับไซต์ทดสอบของเรา (/etc/httpd/conf.d/tecmint.lan.conf)

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

ข้อสำคัญ: หากต้องการป้องกันไม่ให้มีการใช้หน้าทดสอบเซิร์ฟเวอร์ Apache HTTP เริ่มต้น ให้ใส่เครื่องหมายความคิดเห็นบรรทัดทั้งหมดในไฟล์ /etc/httpd/conf.d /welcome.conf หรือลบไฟล์ออก

rm /etc/httpd/conf.d/welcome.conf 

10. จากนั้น ทดสอบไวยากรณ์การกำหนดค่า httpd เพื่อหาข้อผิดพลาดใดๆ หากไม่เป็นไร ให้เริ่มบริการ httpd ใหม่เพื่อใช้การเปลี่ยนแปลงใหม่

httpd -t
systemctl restart httpd

การกำหนดค่าวานิชสำหรับ Systemd

11. หากต้องการปรับใช้ Varnish ต่อหน้า HTTPD คุณเพียงแค่ต้องกำหนดค่าให้ฟังคำขอไคลเอ็นต์ในพอร์ต HTTP เริ่มต้น 80 ตามที่อธิบายไว้ ด้านล่าง.

โปรดทราบว่าใน Varnish Cache 6.0 และสูงกว่า คุณต้องตั้งค่าเซิร์ฟเวอร์ พอร์ต varnish รับฟังในไฟล์บริการ Varnish สำหรับ systemd ขั้นแรกให้เปิดเพื่อแก้ไข

systemctl edit --full  varnish

มองหาบรรทัด ExecStart จากนั้นเปลี่ยนค่าของสวิตช์ -a (ซึ่งระบุสารเคลือบเงาที่ฟังที่อยู่และพอร์ต) จาก :6081 ถึง :80 ตามที่ระบุในภาพหน้าจอต่อไปนี้

ที่สำคัญ หากคุณไม่ระบุที่อยู่ varnishd จะรับฟังอินเทอร์เฟซ IPv4 และ IPv6 ที่มีอยู่ทั้งหมดที่ใช้งานอยู่บนเซิร์ฟเวอร์

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

บันทึกการเปลี่ยนแปลงในไฟล์และออก

การกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์วานิชโดยใช้ VCL

12. ตอนนี้ คุณต้องกำหนดค่าเซิร์ฟเวอร์ต้นทาง ซึ่งรู้จักกันในชื่อ วานิช ว่าเป็น แบ็กเอนด์ เป็นเซิร์ฟเวอร์ที่เข้าใจ HTTP, Varnish พูดถึงเพื่อดึงเนื้อหา - httpd ในกรณีนี้ มันถูกกำหนดค่าไว้ในไฟล์การกำหนดค่าหลัก /etc/varnish/default.vcl

vi /etc/varnish/default.vcl 

มีส่วนการกำหนดค่าเริ่มต้น แบ็กเอนด์ ที่เรียกว่า ค่าเริ่มต้น คุณสามารถเปลี่ยน “ค่าเริ่มต้น ” เป็น เซิร์ฟเวอร์1 (หรือชื่อที่คุณเลือกเพื่อให้ตรงตามมาตรฐานสภาพแวดล้อมของคุณ) ตามค่าเริ่มต้น พารามิเตอร์ โฮสต์ จะชี้ไปที่ localhost โดยสันนิษฐานว่าเซิร์ฟเวอร์แบ็กเอนด์ทำงานบน localhost

จากนั้นตั้งค่าพอร์ตเป็น 8080 (พอร์ตที่คุณกำหนดในไฟล์การกำหนดค่าโฮสต์เสมือน Apache) ดังที่แสดงในภาพหน้าจอ

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

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

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

บันทึกไฟล์และปิด

13. หลังจากทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดที่เกี่ยวข้องกับ วานิช แล้ว ให้โหลดการกำหนดค่าตัวจัดการ systemd อีกครั้งเพื่อแสดงการเปลี่ยนแปลงใหม่ในไฟล์บริการ Varnish และรีสตาร์ทด้วย บริการเคลือบเงาเพื่อลงสีการเปลี่ยนแปลงโดยรวม

systemctl daemon-reload
systemctl restart varnish

14. ณ จุดนี้ Varnish และ Apache ควรรับฟังบนพอร์ต 80 และ 8080 ตามลำดับ คุณสามารถยืนยันสิ่งนี้ได้โดยใช้คำสั่ง socket Statistics

ss -tpln

ขั้นตอนที่ 4: การทดสอบ Varnish Cache และการตั้งค่า Apache

14. หากต้องการทดสอบการตั้งค่า Varnish Cache-HTTPD ให้เปิดเว็บเบราว์เซอร์และนำทางโดยใช้เซิร์ฟเวอร์ IP หรือ FQDN ดังที่แสดงในภาพหน้าจอต่อไปนี้

http://10.42.0.144
OR
http://www.tecmin.lan

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

หรือคุณสามารถเรียกใช้คำสั่ง curl ต่อไปนี้เพื่อตรวจสอบได้

curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan

โปรแกรมยูทิลิตี้ Varnish Cache ที่มีประโยชน์

15. เรามาจบคู่มือนี้ด้วยการดูโปรแกรมที่มีประโยชน์บางโปรแกรมที่มาพร้อมกับ Varnish Cache ประกอบด้วยโปรแกรมอรรถประโยชน์สำหรับการดูแลจัดการแคชวานิช การแสดงบันทึกบันทึกโดยละเอียด และดูสถิติประสิทธิภาพการทำงานของวานิชตามที่อธิบายไว้ด้านล่าง

วานิช

อย่างแรกคือ varnishadm ซึ่งใช้เพื่อจัดการอินสแตนซ์ Varnish ที่กำลังรันอยู่ สร้างการเชื่อมต่ออินเทอร์เฟซบรรทัดคำสั่งกับ varnisd ซึ่งอาจส่งผลต่ออินสแตนซ์ที่กำลังทำงานอยู่ของ Varnish โดยการเริ่มและหยุด varnishd การเปลี่ยนพารามิเตอร์การกำหนดค่า โหลด VCL ใหม่ รายการแบ็กเอนด์ และอื่นๆ

varnishadm
> backend.list

สำหรับข้อมูลเพิ่มเติม โปรดอ่าน man varnishadm

วานิชล็อก

โปรแกรมถัดไปคือ varnishlog ซึ่งใช้เพื่อเข้าถึงข้อมูลเฉพาะคำขอ (เช่น ข้อมูลเกี่ยวกับไคลเอ็นต์และคำขอเฉพาะ) มีการให้ข้อมูลจำนวนมาก จึงมักจำเป็นต้องกรองข้อมูล

varnishlog

หากต้องการข้อมูลเพิ่มเติม โปรดอ่าน man varnishlog

สารเคลือบเงา

นอกจากนี้เรายังมี varnishstat (สถิติการเคลือบเงา) ซึ่งใช้เพื่อเข้าถึงสถิติโดยรวม เช่น จำนวนคำขอทั้งหมด จำนวนออบเจ็กต์ และอื่นๆ

varnishstat

หากต้องการข้อมูลเพิ่มเติม โปรดอ่าน man varnishstat

วานิชท็อป

จากนั้น เราก็มี varnishtop ซึ่งเป็นโปรแกรมอรรถประโยชน์ที่จะอ่านบันทึก Varnish และแสดงรายการที่อัปเดตอย่างต่อเนื่องของรายการบันทึกที่เกิดขึ้นบ่อยที่สุด

varnishtop 

หากต้องการข้อมูลเพิ่มเติม โปรดอ่าน man varnishtop

ช่างเคลือบเงา

ยูทิลิตี้ที่มีประโยชน์อีกอย่างคือ varnishhist (ประวัติวานิช) ยูทิลิตี้อ่านบันทึกของวานิชและนำเสนอฮิสโตแกรมที่อัปเดตอย่างต่อเนื่องซึ่งแสดงการกระจายของคำขอ N ล่าสุดโดยพวกเขา กำลังประมวลผล.

varnishhist

หากต้องการข้อมูลเพิ่มเติม โปรดอ่าน man varnishhist

ได้แล้ว! คุณได้ปรับใช้ Varnish Cache เพื่อเร่งความเร็วเนื้อหาเว็บแอปพลิเคชันของคุณที่แสดงโดยใช้เซิร์ฟเวอร์ Apache HTTP บน CentOS/RHEL 8 สำเร็จแล้ว

หากคุณมีข้อสงสัยใดๆ เกี่ยวกับหัวข้อนี้หรือความคิดที่จะแบ่งปัน โปรดใช้แบบฟอร์มคำติชมด้านล่าง ตรวจสอบเอกสารประกอบ Varnish Cache 6.0 สำหรับข้อมูลเพิ่มเติม

หากคุณต้องการเปิดใช้งาน HTTPS บนไซต์ของคุณ โปรดอ่านบทความถัดไปของเรา ซึ่งจะแสดงวิธีเปิดใช้งาน SSL/TLS สำหรับ Varnish Cache โดยใช้ Hitch บน CentOS/RHEL 8