본문 바로가기

IT

워드프레스(WordPress) 부하대응, BIND로 DNS 라운드 로빈(Round Robin)설정하면서 배운것들(캐시플러그인, 캐시서버, DNS 라운드 로빈, Azure Auto Scaling)

워드프레스(WordPress)로 구축한 뉴스사이트가 접속자폭주로 인해 서비스가 원할하지 못한 상황입니다.

KUSANAGI(쿠사나기)라는 WordPress를 고속으로 서비스가능하게 설정한 가상머신이미지의 VPS(Virtual Private Server : 가상 사설 서버)를 이용하고 있습니다.

https://kusanagi.tokyo/

 

KUSANAGI – 超高速WordPress仮想マシン [高速化チューニング済みWordPressサーバ]

超高速WordPress仮想マシン [高速化チューニング済みWordPressサーバ]

kusanagi.tokyo

「502 bad gateway」에러가 표시되는데, 워드프레스(WordPress)의 로그에서는 확인이 되지 않습니다.

서비스업체에 문의해도 특별한 문제는 없다는 답변뿐입니다.  

워드프레스(WordPress)에 액세스전에 발생하는것 같은데, 워드프레스(WordPress)관리페이지와 로그밖에 볼 수 없으니..

 

첫번째 대응: 워드프레스(WordPress) 및 DB(MySQL)의 부하 낮추기위해 캐시사용설정

KUSANAGI(쿠사나기)의 캐시기능 + 캐시플러그인

Cache Enabler플러그인을 설정했으나 PC와 스마트폰의 캐시를 구분못해서 PC가 접속했는데 스마트폰페이지가 나오거나 하는 문제 발생

W3 Total Cache플로그인으로 변경(브라우저 그룹을 만들어 별도 캐시작성가능)

 

이런데도 같은 에러(「502 bad gateway」)가 발생합니다.

서비스업체의 조사결과...동시접속 네트워크 트래픽제한이 100M로 그 제한이 원인일 수도 있다고 합니다.

그게 원인 같은데...

 

제한을 풀고 KUSANAGI(쿠사나기)의 캐시기능 + 캐시플러그인의 성능을 확인해보고 싶은데, 불안해하는 클라이언트의 요청으로 외부 캐시서버를 이용하기로 합니다.

 

두번째 대응: 외부의 캐시서버이용

캐시서버쪽에서 각 URL에 접속이 있을때마다 워드프레스(WordPress)의 페이지를 캐싱해서 유저에 전달합니다.

유저 - 캐시 서버 - 워드프레스(WordPress)

관리자페이지등 캐시하지 않을 영역의 설정이나 캐시유지시간등의 설정(요청)도 가능합니다.

이쪽에서 할일은 워드프레스(WordPress)에 설정된 도메인의 호스트를 캐시서버쪽으로 변경해주는 것 뿐입니다.

 

에러는 없었습니다만 네크워크 트래픽이 최대 400M까지 나왔고 기본적으로 200M까지만 대응한다고 합니다.

캐시서버를 두 대 돌리기로 결정합니다.

 

세번째 대응: 외부의 캐시서버를 두대이용, DNS 라운드 로빈(Round Robin) 설정

캐시서버 서비스에 로드발랜싱(Load Balancing)옵션이 없기에 급한데로 DNS 라운드 로빈(Round Robin)을 이용하기로 합니다. 네임서버로 BIND를 이용하고 있습니다. 설정은 호스트 추가만으로 간단히 가능합니다.

@   IN  A  192.168.0.1
@   IN  A  192.168.0.2

혹은 아래와 같이 TTL설정도 같이 해주면 더욱 분산효과를 얻을 수 있습니다.

@  1h IN  A  192.168.0.1
@  1h IN  A  192.168.0.2

참고: TTL단위
단위 m(분),h(시간),d(일),w(주)
단위를 생략하면 초로 인식

nslookup으로 조회해보면 반복할때마다 순서가 바뀌어서 응답이 옵니다.

물론 서버의 장애등은 파악하지 못하고 순서대로 IP의 응답을 해줄 뿐이나 네트워크 트래픽만의 분산에는 유용합니다.

 

현재의 대응은 여기까지의 상황입니다.

 

Azure의 VM에 KUSANAGI(쿠사나기) 이미지도 있어 Auto Scaling(자동 크기 조정)의 이용도 검토중입니다만 간단하지는 않아보입니다. 현재까지의 대응으로 서비스에 문제가 없기를 기도합니다.

반응형