CentOS 7에 Varnish Cache로 Apache 속도 높이는 방법

바니시 캐시 (일반적으로 바니시로 알려짐)은 웹 서버의 속도를 높이기 위해 설계된 오픈 소스이자 인기 있는 리버스 프록시 HTTP 가속기입니다. 이는 과도하게 사용되는 API 엔드포인트 및 대규모 콘텐츠를 제공하고 고트래픽을 경험하는 동적 사이트에 대해 공학적으로 설계되었습니다.

기본적으로 CPU 부하를 줄이는 데 도움이 되며, 웹 서버에서 로드 밸런싱을 지원하고 캐시를 RAM에 저장하여 웹 브라우저가 빠르게 사이트를 로드할 수 있도록 합니다. Facebook, Twitter,, 위키피디아를 비롯한 여러 대기업이 사용하고 있습니다.

요구 사항

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

이 기사에서는 바니시 캐시 6.5Apache 웹 서버의 프론트 엔드로 사용하는 방법을 설명하겠습니다. 이는 CentOS 7에서 (또한 RHEL 7에서 작동함) 작동합니다.

단계 1: CentOS 7에 Apache 웹 서버 설치

1. 먼저 기본 CentOS 소프트웨어 저장소에서 Apache HTTP 서버를 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: CentOS 7에 Varnish Cache 설치하기

4. 현재 Varnish Cache 6 최신 버전을 위한 미리 컴파일된 RPM 패키지가 있습니다(즉, 작성 시점의 6.5 버전). 따라서 공식 Varnish Cache 저장소를 추가해야 합니다.

그 전에, yum의 원래 기능을 여러 방식으로 확장하는 유용한 유틸리티 모음인 의존성 패키지를 설치하려면 EPEL 저장소를 활성화해야 합니다.

# yum install -y epel-release

5. 다음으로 GPG 서명을 처리하는 패키지인 pygpgme와, yum의 기능을 다양하게 확장하는 유용한 유틸리티 모음인 yum-utils를 설치하십시오.

# yum install pygpgme yum-utils

6. 이제 아래 저장소 구성을 포함하는 /etc/yum.repos.d/varnishcache_varnish65.repo 파일을 만드십시오.

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

중요: 아래 구성에서 el7을 해당하는 리눅스 배포판 및 버전으로 바꿔야 합니다.

[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 구성 언어 (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 캐싱 뒤에서 실행됩니다.

sed 명령어를 사용하여 포트 808080으로 변경할 수 있습니다.

# 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 구성 파일을 열고 Varnish가 수신 대기하는 포트를 지정하는 ExecStart 매개변수를 찾아서 화면 샷에 표시된 대로 값을 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. 그다음, Varnish 프록시를 위한 백엔드 서버로 Apache를 설정하십시오. /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 캐시를 다시 시작하십시오.

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

단계 4: Apache에서 Varnish 캐시 테스트

15. 마지막으로, 아래의 cURL 명령어를 사용하여 HTTPD 서비스가 활성화되어 작동하는지 테스트하십시오. 이 명령어는 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

이 튜토리얼에서는 CentOS 7에서 Apache HTTP 서버에 대한 Varnish Cache 6.5 프록시 설정 방법을 설명했습니다. 궁금한 점이나 추가 아이디어가 있으면 아래의 피드백 양식을 사용하여 저희에게 문의해 주십시오.

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