Information Security Study
nginx 설정파일 내의 아이피가 중복되는 문제와 무중단 배포가 안 되는 문제 해결하기 본문
nginx 설정파일 내의 아이피가 중복되는 문제와 무중단 배포가 안 되는 문제 해결하기
https://gayeon-l.tistory.com/463
블루/그린 방식으로 무중단 배포하기
블루/그린 방식으로 무중단 배포하기 기본 로직은 이전 프로젝트에서 사용했던 블루/그린 방식의 무중단 스크립트를 참고했다. https://gayeon-l.tistory.com/431새vpc), 롤백, 무중단 배포(롤링, 블루/
gayeon-l.tistory.com
현재 진행상황은 위 게시글 내용과 같다.
Switch Traffic 단계에서 action이 add일 때 그린 서버의 ip가 추가되고
곧바로 블루 서버의 ip가 제거되지만 upstream 내에서 ip가 중복되는 문제와
배포 및 CD테스트 완료 후에 로드밸런서에 업데이트하기 때문에 서비스에 중단이 발생하는 문제가 있었다.
기존 Deploy to Green 스테이지
stage('Deploy to Green') {
steps {
script {
// 그린 환경에 JAR 파일을 복사하고 배포
sshagent([env.SSH_KEY_ID]) {
copyJarToRemote(env.GREEN_ENV_IP, env.JAR_FILE)
deployOnServer(env.GREEN_ENV_IP, env.NGINX_IP)
}
// 그린 환경 배포 확인
def greenStatus = checkApplicationStatus(env.GREEN_ENV_IP)
if (greenStatus == "200") {
echo "Green environment deployment succeeded."
} else {
error "Green environment deployment failed. Rolling back."
}
}
}
}
기존 Deploy to Green 단계에서는 배포 전 nginx 설정 파일에서 green 서버의 ip를 제거하지 않았었다.
그렇기 때문에 배포 중에 서비스가 중된되고 배포 후에는 설정파일에서 green 서버의 ip가 중복된 것이다.
수정한 Deploy to Green 스테이지
stage('Deploy to Green') {
steps {
script {
// 그린 환경에 JAR 파일을 복사하고 배포
sshagent([env.SSH_KEY_ID]) {
// 배포 전 nginx 설정 파일에서 제거
updateLoadBalancer(env.GREEN_ENV_IP, env.NGINX_IP, 'remove')
copyJarToRemote(env.GREEN_ENV_IP, env.JAR_FILE)
deployOnServer(env.GREEN_ENV_IP, env.NGINX_IP)
}
// 그린 환경 배포 확인
def greenStatus = checkApplicationStatus(env.GREEN_ENV_IP)
if (greenStatus == "200") {
echo "Green environment deployment succeeded."
} else {
error "Green environment deployment failed. Rolling back."
}
}
}
}
서비스 중단, ip 중복 문제를 해결하기 위해 jar 파일 복사 전에 nginx 설정 파일에서 green 서버의 ip를 제거하도록 추가했다.
deployOnServer 단계에 들어가기 전에는 설정 파일에 그린, 블루 서버의 ip가 모두 등록되어 있다가
deployOnServer 단계에 도달하면 그린 서버의 ip가 제거된다.
후에 배포가 정상적으로 완료되면 그린 서버의 ip가 추가되고 블루 서버의 ip가 제거된다.
'네트워크 캠퍼스 > 3차 프로젝트' 카테고리의 다른 글
오토스케일링과 로드밸런서로 요금최적화하기 (1) | 2024.08.15 |
---|---|
프로메테우스 페더레이트 설정하기 + 알람 등록하기 (0) | 2024.08.13 |
블루/그린 방식으로 무중단 배포하기 (0) | 2024.08.13 |
Infile Load 방식으로 병합된 로그 MySQL에 저장하기 (0) | 2024.08.12 |
반복문으로 파일 내에 있는 모든 로그를 DB에 저장하기(시도중) (0) | 2024.08.12 |