웹사이트 검색

CentOS 7에서 Apache 성능을 향상시키기 위해 Varnish Cache 5.2 설치


Varnish 캐시(일반적으로 Varnish로 알려짐)는 웹 서버 속도를 높이기 위한 인기 있는 오픈 소스 역방향 프록시 HTTP 가속기입니다. 과도하게 활용되는 API 엔드포인트와 대용량 콘텐츠를 제공하고 트래픽이 많은 동적 사이트를 위해 설계되었습니다.

기본적으로 CPU 로드를 줄이는 데 도움이 됩니다. 웹 서버의 로드 밸런싱을 지원하고 RAM에 캐시를 저장한 결과 웹 브라우저가 사이트를 빠르게 로드할 수 있도록 합니다. 몇 가지만 언급하자면 Facebook, Twitter, Wikipedia를 포함한 많은 대기업에서 이를 사용합니다.

요구사항

  1. Apache가 설치된 CentOS 7
  2. 고정 IP 주소를 사용하는 CentOS 7

이 글에서는 CentOS 7( RHEL 7에서도 작동합니다).

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

1. 먼저 다음과 같이 YUM 패키지 관리자를 사용하여 기본 CentOS 소프트웨어 저장소에서 Apache HTTP 서버를 설치합니다.

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단계: CentOS 7에 Varnish Cache 설치

4. 이제 최신 버전의 Varnish Cache 6(즉, 작성 당시 6.5)에 대해 사전 컴파일된 RPM 패키지가 있습니다. 공식 Varnish Cache 저장소를 추가해야 합니다.

그 전에 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를 해당 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 캐시 패키지를 설치합니다. y 또는 yes를 입력하여 GPG 키를 수락하는 것을 잊지 마세요. 패키지를 설치하는 동안):

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

8. Varnish Cache를 설치한 후 기본 실행 파일은 /usr/sbin/varnishd로 설치되고 varnish 구성 파일은 에 위치합니다. >/etc/varnish/:

  • /etc/varnish/default.vcl – 이는 기본 광택 구성 파일이며 VCL(Vanish 구성 언어)을 사용하여 작성됩니다.

9. 이제 varnish 서비스를 시작하고, 시스템 부팅 중에 자동으로 시작되도록 활성화하고, 다음과 같이 상태를 확인하여 실행 중인지 확인합니다.

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단계: Varnish 캐시와 함께 작동하도록 Apache 구성

11. 이제 Varnish Cache와 함께 작동하도록 Apache를 구성합니다. 기본적으로 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

13. 다음으로 /etc/varnish/default.vcl 구성 파일에서 Apache를 Varnish 프록시의 백엔드 서버로 설정합니다.

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. 마지막으로, HTTP 헤더를 보는 데 사용할 수 있는 아래 cURL 명령을 사용하여 Varnish가 활성화되어 있고 HTTPD 서비스와 작동하는지 테스트합니다.

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 프록시를 설정하는 방법을 설명했습니다. 공유할 쿼리나 추가 아이디어가 있는 경우 아래 피드백 양식을 사용하여 답장해 주세요. .