웹사이트 검색

CentOS/RHEL 8에 Apache용 Varnish Cache를 설치하는 방법


Varnish Cache는 무료 오픈소스, 최신 고성능 웹 애플리케이션 가속기입니다. 웹 콘텐츠를 서버 메모리(캐시)에 저장하여 웹 서버 성능을 높이기 위해 콘텐츠를 캐시하는 빠른 역방향 HTTP 프록시입니다. Apache(HTTPD) 웹서버와 같은 원본 서버 앞에서 실행되도록 구성됩니다.

클라이언트가 콘텐츠를 요청하면 VarnishHTTP 요청을 수락하고 해당 요청을 원본 서버로 보낸 다음 반환된 개체를 캐시하고 클라이언트 요청에 응답합니다. 다음에 클라이언트가 동일한 콘텐츠를 요청할 때 Varnish는 캐시에서 해당 콘텐츠를 제공합니다. 이렇게 하면 향후 동등한 요청에 대한 응답 시간과 네트워크 대역폭 소비가 줄어듭니다.

VarnishHTTP 요청 라우터, 웹 애플리케이션 방화벽, 로드 밸런서 등으로도 작동합니다. 이는 Varnish 모듈(VMOD라고도 함Varnish 구성 언어(VCL)를 사용하여 구성됩니다. >), Edge Side Contains(ESL), Gzip 압축 및 압축 풀기 등을 지원합니다.

이 문서에서는 구성을 포함하여 새로운 CentOS/RHEL 8 서버에 Apache HTTPD 웹 서버와 Varnish Cache 6를 설치하는 방법을 알아봅니다. HTTPD 서버 앞에서 실행되도록 바니시합니다.

전제 조건:

  • CentOS 8이 설치된 서버
  • 시스템에 Red Hat 구독이 활성화된 RHEL 8이 설치된 서버.

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를 통해 실행되는 웹사이트나 애플리케이션에 액세스할 수 있도록 하려면 방화벽에서 HTTP 서비스에 대한 액세스를 열어야 하며, 새로운 변경 사항을 적용하려면 방화벽 설정을 다시 로드해야 합니다.

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을 사용하여 작성된 기본 광택 구성 파일입니다.
  • /etc/varnish/secret – 광택 비밀 파일입니다.

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

systemctl start varnish
systemctl enable varnish
systemctl status varnish

3단계: Varnish 캐시와 함께 작동하도록 Apache 구성

9. 이제 Apache 서비스 앞에서 실행되도록 Varnish Cache를 구성할 차례입니다. 기본적으로 Apache 서버는 포트 80에서 수신 대기하도록 구성되며 이는 기본 구성 파일 /etc/httpd/conf/httpd.conf에 정의되어 있습니다.

즐겨 사용하는 텍스트 편집기를 사용하여 편집을 위해 엽니다.

vi /etc/httpd/conf/httpd.conf

듣기 매개변수를 찾으세요. Apache 서버 앞에서 Varnish를 실행하려면 기본 포트 808080(또는 선택한 다른 포트)으로 변경해야 합니다. 다음 스크린샷에 나와 있습니다.

이 포트는 나중에 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를 배포하려면 설명된 대로 기본 HTTP 포트 80에서 클라이언트 요청을 수신하도록 구성하기만 하면 됩니다. 아래에.

Varnish Cache 6.0 이상에서는 systemd에 대한 Varnish 서비스 파일에서 수신 대기하는 포트 Varnish 서버를 설정해야 합니다. 먼저 편집을 위해 엽니다.

systemctl edit --full  varnish

ExecStart 줄을 찾은 다음 :6081-a 스위치(주소와 포트를 수신하도록 바니시를 지정하는) 값을 변경합니다. > 다음 스크린샷에 표시된 대로 :80으로 변경하세요.

중요한 점은 주소를 지정하지 않으면 varnishd가 서버에서 활성화된 사용 가능한 모든 IPv4IPv6 인터페이스를 수신한다는 것입니다.

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

파일의 변경 사항을 저장하고 종료합니다.

VCL을 사용하여 Varnish 백엔드 서버 구성

12. 이제 Varnish 용어로 백엔드로 알려진 원본 서버를 구성해야 합니다. HTTP를 이해하고 Varnish가 콘텐츠를 가져오기 위해 대화하는 서버입니다(이 경우 httpd). 이는 기본 구성 파일 /etc/varnish/default.vcl에 구성됩니다.

vi /etc/varnish/default.vcl 

default라는 기본 backend 구성 섹션이 있습니다. "기본값"을 server1(또는 환경 표준에 맞게 선택한 이름)으로 변경할 수 있습니다. 기본적으로 host 매개변수는 백엔드 서버가 localhost에서 실행된다는 가정하에 localhost를 가리킵니다.

그런 다음 스크린샷에 표시된 대로 포트를 8080(Apache 가상 호스트 구성 파일에 정의한 포트)으로 설정합니다.

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와 관련하여 필요한 모든 변경을 수행한 후 systemd 관리자 구성을 다시 로드하여 Varnish 서비스 파일의 새로운 변경 사항을 반영하고 다시 시작합니다. 전체 변경 사항을 적용하려면 Varnish 서비스를 사용하세요.

systemctl daemon-reload
systemctl restart varnish

14. 이제 Varnish와 Apache는 각각 808080 포트에서 수신 대기해야 합니다. 소켓 통계 명령을 사용하여 이를 확인할 수 있습니다.

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 -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan

유용한 바니시 캐시 유틸리티 프로그램

15. Varnish Cache 배포판과 함께 제공되는 유용한 프로그램 중 일부를 살펴보는 것으로 이 가이드를 마무리하겠습니다. 여기에는 아래 설명된 대로 바니시 캐시 관리, 자세한 로그 기록 표시 및 바니시 성능 통계 보기를 위한 유틸리티가 포함되어 있습니다.

바니샤드

첫 번째는 실행 중인 Varnish 인스턴스를 관리하는 데 사용되는 varnishadm입니다. varnishd에 대한 명령줄 인터페이스 연결을 설정합니다. varnishd 시작 및 중지, 구성 매개변수 변경, VCL 다시 로드, 백엔드 나열 등을 통해 실행 중인 Varnish 인스턴스에 영향을 미칠 수 있습니다.

varnishadm
> backend.list

자세한 내용은 man varnishadm을 읽어보세요.

광택 로그

다음 프로그램은 요청별 데이터(예: 특정 클라이언트 및 요청에 대한 정보)에 액세스하는 데 사용되는 varnishlog입니다. 이는 많은 양의 정보를 제공하므로 일반적으로 이를 필터링해야 합니다.

varnishlog

자세한 내용은 man varnishlog를 읽어보세요.

광택제

또한 총 요청 수, 개체 수 등과 같은 전체 통계에 액세스하는 데 사용되는 varnishstat(varnish 통계)도 있습니다.

varnishstat

자세한 내용은 man varnishstat를 읽어보세요.

바니시탑

그런 다음 Varnish 로그를 읽고 가장 일반적으로 발생하는 로그 항목의 지속적으로 업데이트되는 목록을 표시하는 유틸리티인 varnishtop이 있습니다.

varnishtop 

자세한 내용은 man varnishtop을 읽어보세요.

광택제

또 다른 유용한 유틸리티는 varnishhist(varnish History)입니다. 유틸리티는 Varnish 로그를 읽고 지속적으로 업데이트되는 히스토그램을 제공하여 마지막 N 요청의 분포를 보여줍니다. 처리.

varnishhist

자세한 내용은 man varnishhist를 읽어보세요.

거기 있어요! CentOS/RHEL 8에서 Apache HTTP 서버를 사용하여 제공되는 웹 애플리케이션 콘텐츠를 가속화하기 위해 Varnish Cache를 성공적으로 배포했습니다.

이 주제에 대해 질문이 있거나 공유하고 싶은 생각이 있으면 아래 피드백 양식을 사용하세요. 자세한 내용은 Varnish Cache 6.0 설명서를 확인하세요.

사이트에서 HTTPS를 활성화하려면 CentOS/RHEL 8에서 Hitch를 사용하여 Varnish Cache용 SSL/TLS를 활성화하는 방법을 보여주는 다음 기사를 확인하세요.