PVDI의 유지보수 모드(Maintenance Mode) 설정

U-VDI에서 유지보수를 위해 서비스를 일시적으로 차단할 경우, 유지보수 모드(Maintenance Mode)를 활성화할 수 있습니다.

구성도

U-VDI Patch/DB 복구등의 작업으로 Web Application Server/DB Server를 내려야만할 경우, 유지보수모드(Maintenance Mode)를 활성화함으로 유연하게 관리할 수 있습니다.

정상적인 상황

정상적인 상황이라면 PVDI 서버는 [그림1]과 같은 흐름으로 진행됩니다. 클라이언트의 요청에 Web Server(Nginx), Web Application Server(uWsgi), DB Server(Mysql) 순서대로 처리되며, 최종적으로 Web Server(Nginx)는 2xx,3xx의 상태코드와 함께 요청에 맞는 페이지를 전송합니다. (HTTP Status Code : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)

유지보수 모드 (Maintenance Mode)

유지보수 모드 (Maintenance Mode)에서는 [그림2]와 같이 Web Server(Nginx)만이 사용자 요청(Request)을 처리하게되고 503 (Service Temporary Unavailble)의 HTTP상태코드와 함께 유지보수 페이지(Maintenance Page)를 전송하게 됩니다. 따라서 Web Server(Nginx)의 밑단에 있는 Web Application Server(uWsgi), DB Server(Mysql)의 구동유무와는 별개로 작동하게 됩니다.

사용자가 유지보수 모드(Maintenance Mode)시 접속하게 되면 아래와 같은 페이지(default)가 나타나게 됩니다.

유지보수 모드 (Maintenance Mode) 끄고 켜기

간단합니다. Master VM에 SSH접속 후 아래와 같이 파일 이름만 변경하면 됩니다.

# cd ~orchard/pvdi/src/conf/static
# mv maintenance_off.html maintenance_on.html

Web Server(Nginx)의 재구동도 필요치 않습니다. maintenance_off.html의 파일이름을 maintenance_on.html으로 변경하면 됩니다. 유지보수 모드(Maintenance Mode)는 끄려면 원래대로 maintenance_on.html를 maintenance_off.html로 변경하면 됩니다.

내부적으로 Web Server(Nginx)에 아래와 같이 설정되어 있습니다. (Nginx vhost 설정)

server {
    location / {
        if (-f /home/orchard/pvdi/src/conf/static/maintenance_on.html) {
            return 503;
        }
        ...생략...
    }
    error_page 503 /static/maintenance_on.html;
}

pvdi/src/conf/static/maintenance_on.html이라는 파일이 있다면 503, 즉 Maintenance Page를 띄우게 됩니다. 그러니까 꼭 maintenance_off.html로 변경할 필요는 없습니다. 결과적으론 maintenance_on.html이 있다면 유지보수 모드(Maintenance Mode)로 진입하게 되는것입니다.

유지보수 페이지 (Maintenance Page) 변경

maintenance_on.html은 정적인 html 싱글 페이지입니다. html을 이해한다면 해당 파일을 열어 원하는대로 수정할수 있습니다. 유지보수 페이지(Maintenance Page)에 작업 내용이나 작업 종료 시간등이 표시된다면, 사용자를 위해 더욱 좋겠지요.

# vi ~orchard/pvdi/src/conf/static/maintenance_{on|off}.html

파일을 수정했다면, 굳이 유지보수 모드(Maintenance Mode)를 켜지않아도 아래와 같은 url로 접속하여 페이지를 확인할 수 있습니다.

http://[MasterVM-IPAddr]/static/maintenance_off.html