nginx 자동화 스 크 립 트

3547 단어 nginxlinux
1. 간소 화 된 블 루 그린 배치
1.1 셸 스 크 립 트
#!/bin/bash
export nginx_home="/usr/local/openresty/nginx" #nginx  
export nginx_conf="conf/nginx.conf" #    
export nginx_conf_downline="conf/nginx_downline.conf" #      
export nginx_conf_online="conf/nginx_online.conf" #       

function usage() {
    echo $"usage:$0 {downline|online|redownline}"
    exit 1
}

#nginx  
function restartnginx(){
	echo "  nginx"
	$nginx_home/sbin/nginx -s reload
	echo "  nginx  "
}
 
#  
function downline() {
  echo "  "
  cp -f $nginx_home/$nginx_conf_downline  $nginx_home/$nginx_conf
  restartnginx
}

#   
function online() {
  echo "  ";
  cp -f $nginx_home/$nginx_conf_online  $nginx_home/$nginx_conf
  restartnginx
}

 
function main() {
    if [ $# -ne 1 ];then
	usage $0
    fi
    case $1 in 
	downline)
	downline
	;;
	online)
	online
	;;
	*)
	usage $0
	;;
    esac
}
 
main $*

1.2 과정
예 를 들 어 현재 a1, a2, a3, a4 네 개의 서비스 가 있 습 니 다.
  • 먼저 실행 합 니 다. / deploy. sh downline (a3, a4 만 포함), 오프라인 서비스 a1, a2, 업그레이드 되 지 않 은 a3, a4 만 보류 합 니 다.
    upstream test  {
        server a3:port; 
        server a4:port; 
    }
    
     
  • 젠 킨 스 는 오프라인 서비스 a1, a2 를 업그레이드 한다.
  • 온라인 서 비 스 를 수행 합 니 다. / deploy. sh online (a1, a2 만 포함) 은 a1, a2, 오프라인 a3, a4 를 포함 합 니 다.이때 제 공 된 것 은 이미 업 그 레이 드 된 서비스 이다.
    upstream test  {
        server a1:port; 
        server a2:port; 
    }
    
     
  • 젠 킨 스 는 오프라인 서비스 a3, a4 를 업그레이드 한다.
  • 온라인 서 비 스 를 수행 합 니 다. / deploy. sh online (a1, a2, a3, a4 만 포함) 은 a1, a2, a3, a4 를 포함 합 니 다.이때 모든 서비스 가 모두 업그레이드 되 었 습 니 다.
    upstream test  {
        server a1:port; 
        server a2:port;
        server a3:port; 
        server a4:port; 
    }
    
     

  • 3. 보충
    window 에 적 힌 작은 demo 는 서버 가 시작 되 었 는 지 검증 하 는 검증 을 추 가 했 고, SERVERS 는 시작 할 서비스 에 따라 변 했다.
    #!/bin/bash
    export nginx_home="E:/soft/nginx/nginx-1.15.8/nginx-1.15.8" #nginx  
    export nginx_conf="conf/nginx.conf" #    
    export nginx_conf_downline="conf/nginx_downline.conf" #      
    export nginx_conf_online="conf/nginx_online.conf" #       
    
    #        ip
    export SERVERS=(127.0.0.1:8080 127.0.0.1:8081) #                 
    #         ,1:    ;2:     ;
    export serverflag=1
    
    function usage() {
        echo $"usage:$0 {downline|online|redownline}"
        exit 1
    }
    
    #nginx  
    function restartnginx(){
    	checkserver
    	echo $serverflag
    	if [ $serverflag != 1 ] ; then
    		echo "        "
    		return
    	fi
    
    	echo "  nginx"
    	$nginx_home/nginx.exe -s reload
    	echo "  nginx  "
    }
     
    #  
    function downline() {
      echo "  "
      cp -f $nginx_home/$nginx_conf_downline  $nginx_home/$nginx_conf
      restartnginx
    }
    
    #   
    function online() {
      echo "  ";
      cp -f $nginx_home/$nginx_conf_online  $nginx_home/$nginx_conf
      restartnginx
    }
    
    
    #         
    function checkserver() {
    	for SERVER in ${SERVERS[@]}
    	do
    		#curl  
    		result=$(curl -s -m 10 --connect-timeout 10 -I http://$SERVER)
    		#     
        	code=`echo $result|grep "HTTP"|awk '{print $2}'`
    		echo $result
    		if [ "$code" == "200" ] ; then
    			serverflag=1 #1:  ;0:  ;
    			echo $SERVER"    "$serverflag
    		else 
    			serverflag=0 #1:  ;0:  ;
    			echo $SERVER"    "$serverflag
    			break
    		fi
    	done	
    }
    
     
    function main() {
        if [ $# -ne 1 ];then
    	usage $0
        fi
        case $1 in 
    	downline)
    	downline
    	;;
    	online)
    	online
    	;;
    	*)
    	usage $0
    	;;
        esac
    }
     
    main $*
    

     

    좋은 웹페이지 즐겨찾기