保證同一緯度查詢寫入儘可能在一個機房mysql
選取router
增長nginx 的dynamic_req_add key cityid $city_id
dynamic_req $upstream_name default_liddc=xx upstreamm_name=xx port=xx;nginx
機房下線:
先DNS去掉,router配置去web
mysql 主從
redis 見https://segmentfault.com/a/11...
爲何redis不能和mysql同樣用主從集羣分機房?mysql自己主從延時就大,不像redis這種自己做爲緩存的東西,機房間鏈路不穩定,若是主從複製配置同步或者命令延時就拒絕寫/集羣誇機房影響穩定。同步所有異步,基本用mq,不然要加丟失數據補齊太複雜。
mq。寫入雙寫或消費雙訂閱。
切換過程當中,由於重試等會有點問題。沒法作到的。。。redis
收斂配置,增長雙機房配置
機器ready
功能驗證。QA測
性能驗證。指定url壓測
數據同步
代碼裏用小流量測試
DNS改50
DNS完全改
殘餘流量:舊route中IP配成新機房的VIP(不配爲IP的緣由是故障摘除方便,要一直持續發半年)sql
雙活下機房遷移(有三活)
若是數據同步支持三活,沒問題。若是隻支持雙活,能夠:
驗證C功能:A與B作雙活,C讀A的redis
數據切C:A與B斷雙活,B與C作雙活,A讀C redis
故障應對:C有問題後,流量切回A,A讀Credis, C與B同步數據segmentfault