應用發佈簡單的流程:
1.集羣節點應用下線(下面會介紹爲何將這個放在第一位.)
2.獲取最新代碼
3.編譯打包
4.推送到應用機器
5.差別複製
6.重啓
7.測試
8.加入集羣java
我公司都是使用nginx完成負載均衡的...當咱們後端應用python,java,nodejs須要升級上線新的功能的時候,就會涉及到nginx的upstream的變更。之因此將應用下線放在的第一位,是由於nginx在去掉upstream節點的時候正在處理的應用鏈接是不會中斷還能正常的服務,咱們須要預留更長的時間來等待應用結束。。因此將下線放在第一位(固然如是單節點確定不能放第一位)。
之前上線的時候,都是人工修改以後reload而後等待應用處理釋放。。再去更新代碼的。。等一切都是人工的去完成的,幾乎天天都須要重複性的工做。後來開始藉助jenkins完成發佈過程。前期的時候都是直接不下線應用直接部署,後來出現過幾回問題,決定在升級應用以前先將nginx負載節點下。爲此編寫了一個nginx online offline腳本。如今分享給你們。node
#!/bin/sh #================================================================ # Copyright (C) 2018 Sangfor Ltd. All rights reserved. # # 文件名稱:reload_upstream.sh # 創 建 者:YouShumin # 建立日期:2018年09月04日 # 描 述: # #================================================================ CONFIG=/data/etc/nginx/conf/web_upstream.conf CHANGE_HOST="$2" Coler_Text(){ echo -e "\e[0;$2m$1\e[0m" } Echo_Red(){ echo $(Coler_Text "$1" "31") } #### 檢測修改前的狀態 #### ChangeNum(){ online_num=$(grpe -rn ${CHANGE_HOST} ${CONFIG} | grep -v "#" | wc -l) offline_num=$(grep -rn ${CHANGE_HOST} ${CONFIG} | grep "#" |wc -l) } OnLine(){ sed -i "/${CHANGE_HOST}/s/^#//g" ${CONFIG} now_online_num=$(grep -rn ${CHANGE_HOST} ${CONFIG} | grep -v "#" | wc -l) if [ ${OnLine} != ${now_online_num} ];then Echo_Red "Online ${CHANGE_HOST} ok..." else Echo_Red "Online ${CHANGE_HOST} error!!!" fi } OffLine(){ sed -i "/${CHANGE_HOST}/s/^/#/g" ${CONFIG} now_offline_num=$(grep -rn ${CHANGE_HOST} ${CONFIG} | grep "#" |wc -l) if [ ${OffLine} != ${now_offline_num} ];then Echo_Red "OffLine ${CHANGE_HOST} ok..." else Echo_Red "OffLine ${CHANGE_HOST} error!!!!" fi } __init__(){ case $1 in online) ChangeNum OnLine ;; offline) ChangeNum OffLine ;; *) echo "Usage: $0 {[ online|offline ] [server:port]}" exit 1 ;; esac } __init__ $1
使用方法 sh scrips.sh online webapp1:8833 腳本內容很簡單的。其中須要修改的好似 web_upstream的位置。
而後在自動化發佈以前執行此腳本的,而後發佈應用,進行測試,測試經過以後上線。python