Varnish 설치하고 웹 서버 벤치마크 수행하는 방법

현재 페이지로 이동했을 때 일어난 일에 대해 잠시 생각해 보십시오. 뉴스레터를 통해 받은 링크를 클릭하거나 Tecmint.com의 홈페이지에서 링크를 클릭한 다음 이 문서로 이동했을 것입니다.

간단히 말하자면, 당신(실제로는 브라우저)은 이 사이트를 호스팅하는 웹 서버에 HTTP 요청을 보내고, 서버는 HTTP 응답을 다시 보냈습니다.

이것이 얼마나 간단한지에도 불구하고, 이 과정에는 훨씬 더 많은 작업이 필요합니다. 당신이 볼 수 있는 멋지게 포맷된 페이지를 제시하기 위해 서버 측에서 많은 처리가 필요합니다 – 정적 및 동적 자원을 모두 포함하여.

더 깊게 파고들지 않더라도, 웹 서버가 동시에 이러한 요청에 응답해야 할 경우(처음 몇 백 개로 제한하면 됩니다), 그것은 얼마 지나지 않아 자신을 또는 전체 시스템을 갈라놓을 수 있습니다.

그것이 Varnish가 등장하는 곳입니다. 고성능 HTTP 가속기 및 리버스 프록시로, 이를 통해 문제를 해결할 수 있습니다. 이 문서에서는 HTTP 응답을 더 빠르게 캐시하고 웹 서버에 추가 부하를 주지 않도록 Varnish를 설치하고 사용하는 방법을 설명하겠습니다. Apache 또는 Nginx의 앞단으로서.

그러나 Varnish는 일반적으로 캐시를 디스크가 아닌 메모리에 저장하기 때문에 캐싱에 할당된 RAM 공간을 신중하게 제한해야 합니다. 이에 대해 곧 논의하겠습니다.

바니시 작동 방식

How Varnish Works

리눅스 서버에 바니시 캐시 설치하기

이 게시물은 LAMP 또는 LEMP 서버가 설치되어 있다고 가정합니다. 그렇지 않으면 진행하기 전에 이 스택 중 하나를 설치하십시오.

공식 문서에서는 항상 최신 버전을 제공하기 때문에 Varnish를 개발자의 공식 저장소에서 설치하는 것을 권장합니다. 또한 배포판의 공식 저장소에서 패키지를 설치할 수도 있지만, 약간 구식일 수 있습니다.또한, 프로젝트의 저장소는 64비트 시스템에만 지원을 제공하며, 32비트 머신의 경우에는 배포판의 공식 유지 관리 저장소를 사용해야 합니다.

또한, 프로젝트의 저장소는 64비트 시스템에 대한 지원만 제공하며, 32비트 기계의 경우 배포판의 공식적으로 유지 관리되는 저장소에 의존해야 합니다.

이 기사에서는 각 배포판의 공식적으로 지원되는 저장소에서 Varnish를 설치하겠습니다. 이렇게 결정한 주된 이유는 설치 방법에 대한 통일성을 제공하고 모든 아키텍처에 대한 자동 의존성 해결을 보장하기 위함입니다.

데비안 기반 Linux에서 Varnish 설치하기

데비안 기반 배포판에서는 Varnish를 다음과 같이 apt 명령어를 사용하여 설치할 수 있습니다.

# apt update 
# apt install varnish 	
Install Varnish Cache in Debian

RHEL 기반 Linux에서 Varnish 설치하기

RHEL 기반 배포판에서 예를 들어 CentOS, Rocky, AlmaLinux에서는 EPEL 저장소를 활성화한 후 Varnish를 다음과 같이 yum 명령을 사용하여 설치해야 합니다.

# yum install epel-release
# yum update
# yum install varnish 
Install Varnish Cache in RHEL

설치가 성공적으로 완료되면 사용 중인 배포판에 따라 다음 varnish 버전 중 하나를 갖게 됩니다:

# varnishd -V

varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)

마지막으로, 설치 과정에서 자동으로 시작하지 않았다면 Varnish를 수동으로 시작하고 부팅 시 시작하도록 설정해야 합니다.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Check Varnish Cache Status

기본적으로 6081 포트가 varnish 서비스에 사용되며 다음 netstat 명령을 실행하여 확인할 수 있습니다.

# netstat -tunlp | grep 6081
Check Varnish Cache Port

Linux에서 Varnish Cache 구성

앞서 언급했듯이, Varnish는 외부 클라이언트와 웹 서버 사이에 위치하여 캐싱을 수행합니다. 따라서 캐싱이 최종 사용자에게 투명하게 적용되기 위해서는 다음을 수행해야 합니다:

  1. 바르니시가 수신하는 기본 포트 608180으로 변경하세요.
  2. 웹 서버가 수신하는 기본 포트를 8080으로 변경하여 기본 80 대신 사용하세요.
  3. 바르니시에서 들어오는 트래픽을 웹 서버로 리다이렉션하세요. 다행히도 바르니시는 우리가 1)2) 단계를 완료한 후 자동으로 이 작업을 수행합니다.

바르니시 포트 변경

varnishd 프로세스는 systemd에 의해 제어되며, 기본 바르니시 런타임 구성을 보유하고 있는 /usr/lib/systemd/system/varnish.service에 단위 파일이 있습니다.

여기서 우리는 기본 바르니시 포트를 6081에서 포트 80로 변경하고 캐시 크기를 1GB로 설정해야 합니다. 다음 명령어를 실행하면 단위 파일이 에디터에 표시됩니다.

참고: 하드웨어 리소스에 따라 메모리 양을 변경하거나 대신 캐시 파일을 디스크에 저장할 수 있습니다.

$ sudo systemctl edit --full varnish
OR 
# systemctl edit --full varnish
Configure Varnish Cache in Linux

/etc/systemd/system/varnish.service 파일을 변경한 후 다음 명령어를 실행하여 Systemd 데몬을 다시 로드해야 합니다.

# systemctl daemon-reload

아파치 또는 닝크 포트 변경

바람직한 포트를 변경한 후에는 Apache 또는 Nginx 웹 서버 포트를 기본 80에서 가장 일반적인 네트워킹 포트8080으로 변경해야 합니다.

---------- On Debian-based Systems ---------- 
# nano /etc/apache2/ports.conf      [On Apache]
# /etc/nginx/sites-enabled/default  [On Nginx]

---------- On RHEL-based Systems ----------
# vi /etc/httpd/conf/httpd.conf   [On Apache]
# vi /etc/nginx/nginx.conf        [On Nginx]  
Change Apache Port

변경 사항을 완료한 후에는 Varnish와 웹 서버를 다시 시작하는 것을 잊지 마십시오.

# systemctl restart varnish 

---------- On Debian-based Systems ---------- 
# systemctl restart apache2     
# systemctl restart nginx

---------- On RHEL-based Systems ----------
# systemctl restart httpd     
# systemctl restart nginx     

리눅스에서 Varnish Cache 테스트

첫 번째 테스트는 HTTP 요청을 curl 명령을 통해 수행하고 Varnish에 의해 처리되는지 확인하는 것입니다.

# curl -I http://localhost
Check Varnish Cache Status

Varnish는 또한 두 가지 편리한 도구를 포함하고 있습니다.

  • 실시간으로 Varnish 로그를 보는 것으로, 직관적으로 varnishlog라고 불립니다.
  • Varnish 캐시 통계를 표시하는 것으로, varnishstat이라고 불립니다.

두 번째 테스트로 다음 스크린캐스트에서는 CentOS 서버(dev1, 화면 상단)와 Debian 서버(dev2, 화면 하단)에서 HTTP 요청이 전송되고 응답이 수신되는 동안 로그와 통계를 모두 표시합니다.

웹 서버 성능 벤치마크 테스트

우리의 세 번째이자 마지막 테스트는 ab 벤치마킹 도구를 사용하여 웹 서버와 Varnish를 벤치마킹하고 응답 시간과 CPU 부하를 각각 비교하는 것으로 구성될 것입니다.

이 특정 예에서 우리는 CentOS 서버를 사용하지만 어떤 배포판을 사용하든 유사한 결과를 얻을 수 있습니다. 평균 부하를 맨 위에서 보고 ab의 출력에서 초당 요청 수 라인을 보십시오.

ab로 동시에 50(-c 50) 동시 요청을 보내고 테스트를 1000000 번 반복합니다(이는 -n 1000000로 표시됨). Varnish는 초당 요청 수가 더 높고 평균 부하가 훨씬 낮습니다.

중요: Varnish가 포트 80(기본 HTTP 포트)에서 수신 대기하고 있고 Apache가 포트 8080에서 수신 대기하고 있다는 점을 기억하십시오. 각 테스트를 완료하는 데 필요한 시간량도 기록할 수 있습니다.

# ab -c 50 -n 100000 http://localhost/index.html

결론

이 기사에서는 Varnish 캐시를 웹 서버, Apache 또는 Nginx 앞에 설정하는 방법에 대해 논의했습니다. 우리는 default.vcl 구성 파일에 대해 깊이 파고들지 않았음을 참고하십시오. 이 파일을 사용하면 캐싱 정책을 더 맞춤화할 수 있습니다.

이제 공식 문서를 참조하여 추가 구성 예제를 찾거나 아래 폼을 사용하여 의견을 남길 수 있습니다.

Source:
https://www.tecmint.com/install-varnish-cache-server/