使用Nginx實現灰度發布

2021-08-14 13:45:03 字數 1867 閱讀 3241

灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。ab test就是一種灰度發布方式,讓一部分使用者繼續用a,一部分使用者開始用b,如果使用者對b沒有什麼反對意見,那麼逐步擴大範圍,把所有使用者都遷移到b上面來。

灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。

灰度發布常見一般有三種方式:

本文主要將講解根據cookie和來路ip這兩種方式實現簡單的灰度發布,nginx+lua這種方式涉及內容太多就不再本文展開了。

a/b測試流程

nginx根據cookie實現灰度發布

根據cookie查詢cookie鍵為version的值,如果該cookie值為v1則**到hilinux_01,為v2則**到hilinux_02。cookie值都不匹配的情況下預設走hilinux_01所對應的伺服器。

兩台伺服器分別定義為:

}在nginx裡面配置乙個對映,$cookie_version可以解析出cookie裡面的version欄位。$group是乙個變數,{}裡面是對映規則。

如果乙個version為v1的使用者來訪問,$group就等於hilinux_01。在server裡面使用就會**到http://hilinux_01上。version為v2的使用者來訪問,$group就等於hilinux_02。在server裡面使用就會**到http://hilinux_02上。cookie值都不匹配的情況下預設走hilinux_01所對應的伺服器。

upstream hilinux_01 

upstream hilinux_02

upstream default

map $cookie_version $group

server

}

如果是內部ip,則反向**到hilinux_02(預發布環境);如果不是則反向**到hilinux_01(生產環境)。

upstream hilinux_01 

upstream hilinux_02

upstream default

server

location /

}

如果你只有單台伺服器,可以根據不同的ip設定不同的**根目錄來達到相同的目的。

server 

location /

}

到此最基本的實現灰度發布方法就講解完了,如果要做更細粒度灰度發布可參考abtestinggateway專案。

abtestinggateway:

使用Nginx實現灰度發布

灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。ab test就是一種灰度發布方式,讓一部分使用者繼續用a,一部分使用者開始用b,如果使用者對b沒有什麼反對意見,那麼逐步擴大範圍,把所有使用者都遷移到b上面來。灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現 調整問題,以保證其影響度...

使用Nginx實現簡單灰度發布

灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現 調整問題,以保證其影響度。注意,nginx安裝時需要安裝如下模組,讓nginx能獲取到客戶端真實的ip with http realip module灰度發布常見一般有三種方式 1,nginx根據cookie實現灰度發布根據cookie查詢...

Nginx實現系統灰度發布

在系統發布的時候,經常會遇到要停機發布的情況。大家經常會在凌晨去發布系統。這樣導致開發和測試的同時都很辛苦。那麼有沒有一種比較簡單 成本相對可以接受的方式來進行發布呢?在這裡,給大家推薦灰度發布的方式。灰度發布的方式很多,最簡單的操作方式是直接操作nginx的upstream來進行灰度發布。前提 至...