Varnish Cache는 무료 오픈 소스이며 현대적이고 고성능의 웹 애플리케이션 가속기입니다. 이것은 웹 콘텐츠를 캐시하여 웹 서버의 성능을 향상시키는 빠른 역방향 HTTP 프록시로, 웹 콘텐츠를 서버 메모리에 저장하여 웹 캐시로 사용됩니다. 이는 주로 Apache (HTTPD) 웹 서버와 같은 원본 서버 앞에서 실행되도록 구성됩니다.
클라이언트가 콘텐츠를 요청하면, Varnish는 HTTP 요청을 수락하고 해당 요청을 원본 서버로 보내 반환된 객체를 캐시하고 클라이언트 요청에 응답합니다. 클라이언트가 동일한 콘텐츠를 다시 요청하면 Varnish는 캐시에서 제공합니다. 이렇게 하면 응답 시간과 네트워크 대역폭 소비가 향후 동등한 요청에 대해 줄어듭니다.
Varnish는 또한 HTTP 요청 라우터, 웹 애플리케이션 방화벽, 로드 밸런서 등으로 작동합니다. 이는 유연한 Varnish Configuration Language (VCL)을 사용하여 구성되며, Varnish Modules (VMODs)로 확장 가능하며, Edge Side Includes (ESL), Gzip 압축 및 해제, 그리고 훨씬 더를 지원합니다.
이 기사에서는 Apache HTTPD 웹 서버 및 Varnish Cache 6를 신선한 CentOS/RHEL 8 서버에 설치하는 방법과 HTTPD 서버 앞에서 Varnish를 실행하도록 구성하는 방법을 배우게 될 것입니다.
전제 조건:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
스텝 1: CentOS/RHEL 8에 Apache 웹 서버 설치
1. DNF 명령어를 사용하여 시스템에 설치된 모든 소프트웨어 패키지를 업데이트합니다.
# dnf update
2. 다음으로 다음 명령어를 실행하여 AppStream 리포지토리에서 Apache HTTP 웹 서버를 설치합니다.
# dnf install httpd
3. 설치가 완료되면 httpd 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 활성화하고, 상태를 확인하여 정상적으로 실행 중인지 확인합니다. 이를 위해 systemctl 명령어를 사용합니다.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. 기본적으로 CentOS/RHEL 8에는 완전히 잠겨 있는 방화벽이 포함되어 있습니다 (firewall-cmd –state를 실행하여 확인합니다). 방화벽에서 HTTP 서비스에 대한 액세스를 허용하여 사용자가 웹 사이트나 애플리케이션에 접속할 수 있도록 해야 하며, 새로운 변경 사항을 적용하기 위해 firewalld 설정을 다시로드해야 합니다.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
스텝 2: CentOS/RHEL 8에 Varnish Cache 6.4 설치
5. 이제 Apache 웹 서버가 실행 중이므로 다음 명령어를 사용하여 시스템에 Varnish Cache를 설치할 수 있습니다.
# dnf module install varnish

6. 설치가 성공적으로 완료되면 시스템에 설치된 Varnish의 버전을 확인할 수 있습니다.
# varnishd -V

7. 그다음, 주 실행 파일은 /usr/sbin/varnishd로 설치됩니다. 또한, Varnish 구성 파일은 /etc/varnish 디렉토리에 저장되는데, 여기에는 다음이 포함됩니다:
- /etc/varnish/default.vcl – VCL을 사용하여 작성된 주 Varnish 구성 파일입니다.
- /etc/varnish/secret – Varnish 비밀 파일입니다.
8. 이제 varnish 서비스를 시작하고, 서버 재부팅 시 자동으로 시작하도록 설정하고, 상태를 확인하여 실행 중인지 확인하십시오. 다음과 같이 수행합니다.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

단계 3: Apache를 Varnish Cache와 함께 작동하도록 구성
9. 이제 Apache 서비스 앞에서 Varnish Cache를 실행하도록 구성할 시간입니다. 기본적으로 Apache 서버는 포트 80에서 청취하도록 구성되어 있으며, 이는 주 구성 파일 /etc/httpd/conf/httpd.conf에서 정의됩니다.
즐겨 사용하는 텍스트 편집기로 열어서 편집하십시오.
# vi /etc/httpd/conf/httpd.conf
Listen 매개변수를 찾으십시오. Apache 서버 앞에서 Varnish를 실행하려면 기본 포트 80을 다음 스크린샷에 표시된대로 8080(또는 선택한 다른 포트)로 변경해야 합니다.
이 포트는 Varnish 구성 파일에서 백엔드 서버의 포트로 나중에 추가될 것입니다.

모든 웹 사이트/애플리케이션을 Varnish를 통해 제공할 경우 가상 호스트 구성은 위의 포트를 수신 대기하도록 설정되어야 합니다. 아래는 테스트 사이트(/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를 위한 Varnish 구성
11. HTTPD 앞에 Varnish를 배포하려면 아래에 설명된대로 클라이언트 요청을 수신 대기하도록 구성하면 됩니다.80번 기본 HTTP 포트에서 들어오는 요청을 수신하기 위해 구성하세요.
Varnish Cache 6.0 이상의 경우, systemd를 위한 Varnish 서비스 파일에서 varnish 서버가 수신 대기할 포트를 설정해야 합니다. 먼저 편집하십시오.
# systemctl edit --full varnish
중요한 점은 주소를 지정하지 않으면 varnishd가 서버에서 활성화된 모든 사용 가능한 IPv4 및 IPv6 인터페이스에서 수신 대기한다는 것입니다.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

파일의 변경 사항을 저장하고 나가십시오.
VCL을 사용하여 Varnish 백엔드 서버 구성하기
12. 이제 Varnish 용어로 알려진 원본 서버를 구성해야 합니다. 이는 Varnish가 콘텐츠를 가져 오기 위해 통신하는 HTTP를 이해하는 서버입니다. 이 경우 httpd입니다. 이는 주 구성 파일 /etc/varnish/default.vcl에 구성됩니다.
# vi /etc/varnish/default.vcl
기본 backend 구성 섹션이 default라고합니다. “기본”을 “server1″로 변경할 수 있습니다(환경 표준에 맞게 선택한 이름 또는 선택한 이름). 기본적으로 host 매개 변수는 백엔드 서버가 localhost에서 실행되고 있다고 가정합니다.
그런 다음 Apache 가상 호스트 구성 파일에서 정의한 포트인 8080으로 포트를 설정하십시오. 그림에서 보여진 것과 같습니다.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

백엔드 서버가 다른 호스트에서 실행되는 경우 예를 들어 주소가 10.42.1.10인 다른 서버에서 실행 중이라면 host 매개 변수를 이 IP 주소로 지정해야 합니다.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
파일을 저장하고 닫습니다.
13. Varnish에 관련된 모든 필요한 변경 사항을 적용한 후 새 변경 사항을 Varnish 서비스 파일에 반영하기 위해 systemd 관리자 구성을 다시로드하고 전반적인 변경 사항을 적용하기 위해 Varnish 서비스를 다시 시작하십시오.
# systemctl daemon-reload # systemctl restart varnish
14. 이 시점에서, Varnish와 아파치는 각각 포트 80 및 8080에서 듣고 있어야 합니다. 이를 확인할 수 있습니다. 소켓 통계 명령어를 사용하여 확인할 수 있습니다.
# ss -tpln

단계 4: Varnish Cache 및 아파치 설정 테스트
14. Varnish Cache-HTTPD 설정을 테스트하려면 웹 브라우저를 열고, 다음 스크린샷에 표시된 대로 서버 IP 또는 FQDN을 사용하여 탐색하십시오.
http://10.42.0.144 OR http://www.tecmin.lan
그런 다음 다음과 같이 웹 페이지가 Varnish Cache를 통해 제공되는지 확인하십시오. 표시된 웹 페이지에서 오른쪽 마우스 버튼을 클릭하고 Inspect를 선택하여 개발자 도구를 열고, Network 탭을 클릭하고 페이지를 다시로드하십시오. 그런 다음 HTTP 헤더를 보려면 요청을 선택하여 확인하십시오. 다음 스크린샷에 표시된 대로 확인하십시오.

또는 다음의 curl 명령어를 실행하여 확인할 수 있습니다.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

유용한 Varnish Cache 유틸리티 프로그램
15. 이 가이드를 마치며, Varnish Cache 배포에 포함된 몇 가지 유용한 프로그램을 살펴보겠습니다. 이에는 varnish 캐시 관리, 자세한 로그 레코드 표시 및 varnish 성능 통계 보기를 위한 유틸리티가 포함됩니다.
varnishadm
첫 번째는 varnishadm로 실행 중인 Varnish 인스턴스를 관리하는 데 사용됩니다. varnishd에 대한 명령 줄 인터페이스 연결을 설정합니다. varnishd를 시작하고 중지하거나 구성 매개변수를 변경하거나 VCL을 다시로드하거나 백엔드를 나열하는 등 Varnish의 실행 중인 인스턴스에 영향을 줄 수 있습니다.
# varnishadm > backend.list

자세한 정보는 man varnishadm를 참조하십시오.
varnishlog
다음 프로그램은 varnishlog로 요청별 데이터(즉, 특정 클라이언트 및 요청에 대한 정보)에 액세스하는 데 사용됩니다. 많은 양의 정보를 제공하므로 필터링이 필요할 수 있습니다.
# varnishlog

자세한 정보는 man varnishlog를 참조하십시오.
varnishstat
또한 varnishstat(varnish 통계)가 있으며 총 요청 수, 객체 수 등과 같은 전반적인 통계에 액세스하는 데 사용됩니다.
# varnishstat

자세한 정보는 man varnishstat를 참조하십시오.
varnishtop
그런 다음 varnishtop이 있으며 Varnish 로그를 읽고 가장 일반적으로 발생하는 로그 항목의 지속적으로 업데이트된 목록을 제공하는 유틸리티입니다.
# varnishtop

자세한 정보는 man varnishtop를 참조하십시오.
varnishhist
또 다른 유용한 유틸리티는 varnishhist (Varnish 히스토리) 유틸리티이며, Varnish 로그를 읽고 처리 중인 마지막 N개 요청의 분포를 지속적으로 업데이트된 히스토그램으로 표시합니다.
# varnishhist

자세한 내용은 man varnishhist를 참조하십시오.
여기에 있습니다! 웹 응용 프로그램 콘텐츠를 가속화하기 위해 Varnish Cache를 성공적으로 배포했습니다. 이를 위해 Apache HTTP 서버를 사용하고 CentOS/RHEL 8에서 제공됩니다.
이 주제에 대한 질문이나 공유할 생각이 있으면 아래 피드백 양식을 사용하십시오. 자세한 내용은 Varnish Cache 6.0 documentation을 참조하십시오.
사이트에 HTTPS를 활성화하려면 Hitch를 사용하여 Varnish Cache에 SSL/TLS를 활성화하는 방법을 보여줄 다음 문서를 확인하십시오. 이는 CentOS/RHEL 8에서 수행됩니다.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/