Infra Structure/Nginx

[Nginx] 무중단 배포

하 선생 2022. 7. 13. 13:19

# 설정파일 생성

$ cd /etc/nginx/sites-available

 

$ sudo vi service-url.inc

set $service_url http://target-server-all;

 

$ sudo vi myapp

upstream target-server-all {   
   server 127.0.0.1:8080;
   server 127.0.0.1:8081;
}

upstream target-server-close1 {
   #server 127.0.0.1:8080;
   server 127.0.0.1:8081;
}

upstream target-server-close2 {
   server 127.0.0.1:8080;
   #server 127.0.0.1:8081;
}

server {
        listen 443;
        server_name domain.co.kr;
        
        include /etc/nginx/sites-available/service-url.inc; # 설정파일 include
		
        location / {
                proxy_redirect  off;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                #proxy_pass http://target-server;
                proxy_pass $service_url;  # 설정파일 내 설정값
        }
}

 

# 1번서버 close

$ echo "set \$service_url http://target-server-close1;" | sudo tee /etc/nginx/sites-available/service-url.inc

 

# 2번서버 close

$ echo "set \$service_url http://target-server-close2;" | sudo tee /etc/nginx/sites-available/service-url.inc

 

# 전체 서버 오픈

$ echo "set \$service_url http://target-server-all;" | sudo tee /etc/nginx/sites-available/service-url.inc

 

mvn clean install

cp ./target/project-1.0.0.war ./target/ROOT.war 

#-------------------------------------------------------------------------------------------

sleep 1

ssh -o StrictHostKeyChecking=no -p 3022 user@10.10.10.10  << 'ENDSSH'

echo 'password' | sudo -S su

echo "set \$service_url http://target-server-close1;" | sudo tee /etc/nginx/sites-available/service-url.inc

sleep 1

sudo nginx -s reload

ENDSSH

#-------------------------------------------------------------------------------------------

sleep 5

scp -P 3122 ./target/ROOT.war user@10.10.10.10:/usr/local/tomcat9/webapps

sleep 1

ssh -p 3122 user@10.10.10.10 "

/home/user/shell/tomcat_restart.sh

"

#-------------------------------------------------------------------------------------------

sleep 60

ssh -o StrictHostKeyChecking=no -p 3022 user@10.10.10.10  << 'ENDSSH'

echo 'password' | sudo -S su

echo "set \$service_url http://target-server-close2;" | sudo tee /etc/nginx/sites-available/service-url.inc

sleep 1

sudo nginx -s reload

ENDSSH

#-------------------------------------------------------------------------------------------

sleep 5

scp -P 3222 ./target/ROOT.war user@10.10.10.10:/usr/local/tomcat9/webapps

sleep 1

ssh -p 3222 user@10.10.10.10 "

/home/user/shell/tomcat_restart.sh

"

#-------------------------------------------------------------------------------------------

sleep 60

ssh -o StrictHostKeyChecking=no -p 3022 user@10.10.10.10  << 'ENDSSH'

echo 'password' | sudo -S su

echo "set \$service_url http://target-server-all;" | sudo tee /etc/nginx/sites-available/service-url.inc

sleep 1

sudo nginx -s reload

ENDSSH