컨테이너화 된 배포의 대중화로 웹 서비스의 안정적인 작동이 특히 중요해졌습니다. 건강 검사 메커니즘을 구성함으로써 서비스 상태를 실시간으로 모니터링하고, 적시에 이상을 처리하며, 전체 시스템의 고 가용성을 향상시킬 수 있습니다. 인기있는 리버스 프록시 서버로서 Nginx는 Docker 환경의 건강 검사를 구성하여 백엔드 서비스의 건강 상태를 효과적으로 모니터링합니다.
먼저, 사용자 정의 구성 및 건강 검사 스크립트가 포함 된 Nginx 이미지를 작성하려면 Dockerfile을 작성해야합니다. 내용은 다음과 같습니다.
nginx에서 # 사용자 정의 구성 파일을 컨테이너에 복사합니다. copy nginx.conf /etc/nginx/nginx.conf # 건강 검사 스크립트를 컨테이너 사본 check.sh /etc/nginx/check.sh에 복사합니다. # 실행 권한 추가 실행 chmod +x /etc/nginx/check.sh # 명령을 설정하십시오 cmd /etc/nginx/check.sh && nginx -g "daemon off;"
nginx.conf 파일을 만들고 리버스 프록시 및 건강 점검 경로를 구성하십시오. 예는 다음과 같습니다.
사용자 nginx; Worker_Processes 1; 이벤트 { Worker_Connections 1024; } http { 상류 백엔드 { 서버 app1 : 8080; 서버 app2 : 8080; } 서버 { 80; Server_Name LocalHost; 위치 / { proxy_pass http : // 백엔드; } 위치 /건강 { 리턴 200; } } }
그 중 상류 백엔드는 두 개의 백엔드 서비스 컨테이너를 정의하고 건강 검사 경로 /건강은 상태 코드 200을 반환하여 서비스가 정상임을 나타냅니다.
Check.sh 스크립트 루프를 통해 Nginx 서비스가 성공적으로 시작되었는지 확인하십시오. 코드는 다음과 같습니다.
#!/bin/bash # 확인할 서버 주소는 호스트 = localhost입니다 # 점검 할 서버 포트 = 80 # 서비스가 성공적으로 시작될 때까지 서비스가 정상인지 확인하거나 {1..10}에서 i의 최대 재 검색 수를 초과합니다. 하다 # 서비스의 건강 검사 경로를 요청하고 반환 된 HTTP 상태 코드 상태 = $ (Curl -li "$ host : $ port/health"-o/dev/null -w '%{http_code}'-s) # HTTP 상태 코드가 200 인 경우 서비스가 정상임을 증명하고 [$ status -eq 200]; 그 다음에 Echo "Health Check가 통과하고 Nginx가 가동 중입니다." 출구 0 fi 에코 "Nginx가 시작되기를 기다리고 있습니다 ..." 수면 1 완료 # 재 시도 횟수가 재 시도 횟수를 초과하면 오류 메시지를 인쇄하고 스크립트를 종료하면 "건강 검사 실패, NGINX가 시작되지 않았다". 출구 1
이미지를 만들고 컨테이너를 실행하려면 다음 명령을 실행하십시오.
Docker Build -t My -Nginx. Docker Run -D -P 8080 : 80-이름 My-Nginx-Container My-Nginx
이것은 my-nginx 라는 이미지를 만들고 호스트 포트 8080을 컨테이너 포트 80에 매핑하는 컨테이너 인스턴스를 시작합니다.
NGINX 구성 파일 및 건강 검사 스크립트를 통해 Docker 컨테이너의 NGINX 프록시 서버의 백엔드 웹 서비스의 건강 모니터링이 실현됩니다. 이 구성은 서비스의 안정성을 향상시킬뿐만 아니라 후속 확장 및 유지 보수를 용이하게합니다. 실제 비즈니스 요구에 따라 건강 검사 논리 및로드 밸런싱 전략을 더욱 향상시키는 것이 좋습니다.