服務(wù)環(huán)境遷移實(shí)戰(zhàn)

思路:環(huán)境遷移的核心是服務(wù)運(yùn)行實(shí)例+流量切換

對(duì)于k8s來(lái)說(shuō),就是先執(zhí)行Deployment部署實(shí)例蝗羊,然后配置Ingress暴露服務(wù),驗(yàn)證沒(méi)問(wèn)題后再把原有域名解析切換到新的服務(wù)

過(guò)程:

  1. 在集群內(nèi)部署注冊(cè)中心,各項(xiàng)目組部署應(yīng)用哮翘,并注冊(cè)服務(wù)到集群內(nèi)的新注冊(cè)中心

  2. 部署完成后,驗(yàn)證服務(wù)是否正常(存在依賴(lài)關(guān)系的應(yīng)用需全部部署)

  3. 驗(yàn)證完成后毛秘,修改域名指向饭寺,進(jìn)行外部流量切換

  4. 流量切分完畢后阻课,原 dev/UAT 環(huán)境停機(jī),并回收資源

分布式環(huán)境服務(wù)之間都有著各種的調(diào)用關(guān)系艰匙,所以環(huán)境遷移要保證新環(huán)境有依賴(lài)的服務(wù)實(shí)例可調(diào)用限煞,所以可以分成兩步:

1:先部署所有服務(wù)實(shí)例到新環(huán)境

先部署實(shí)例會(huì)遇到的困難:

1.1 :普通的服務(wù)間調(diào)用都是由外部發(fā)起,即服務(wù)通過(guò)內(nèi)外網(wǎng)域名等方式暴露地址出去之后才會(huì)有流量员凝,由于這里我們先只部署署驻,還沒(méi)暴露服務(wù),所以不用擔(dān)心這次部署會(huì)因?yàn)橥獠苛髁吭斐蓡?wèn)題

1.2: 部署的服務(wù)可能有消費(fèi) mq 消息健霹,定時(shí)任務(wù)等自發(fā)起的流量旺上,這時(shí)我們要保證新部署到新環(huán)境的實(shí)例能屏蔽這部分流量,防止跟外面已經(jīng)在跑的環(huán)境沖突消費(fèi)骤公,

1.2.1:這里以 xxl-job 為例抚官。假如服務(wù)用了 xxl-job,部署到新環(huán)境有必要不運(yùn)行定時(shí)任務(wù)阶捆,可以通過(guò)修改配置實(shí)現(xiàn)

-Dxxl.job.admin.addresses=

這樣就可以保證凌节,部署到新環(huán)境的服務(wù)不會(huì)運(yùn)行 xxl-job 的定時(shí)任務(wù),其他定時(shí)任務(wù)也可以通過(guò)類(lèi)似的方式修改達(dá)到目的

1.2.2:這里以 RabbitMQ 為例洒试。假如服務(wù)用了 xxl-job倍奢,部署到新環(huán)境有必要不消費(fèi)隊(duì)列里的消息,可以通過(guò)修改配置實(shí)現(xiàn)

-Dspring.rabbitmq.virtual-host=404

即配置一個(gè)不存在的 vhost垒棋,這樣服務(wù)啟動(dòng)后就不會(huì)消費(fèi)消息卒煞,而且不影響服務(wù)啟動(dòng)成功

或者其他方式,例如注釋 RabbitListener 代碼叼架,缺點(diǎn)是需要改代碼

注意:以上配置一般通過(guò) - D 覆蓋畔裕,這樣可以不用改 Apollo 上的配置,因?yàn)?Apollo 的配置外面正常跑的實(shí)例還在用乖订,不要互相影響扮饶。

1.3 注冊(cè)中心

如果服務(wù)用到注冊(cè)中心,如 Eureka乍构,需要先修改Eureka的注冊(cè)中心地址

1.4 恢復(fù)配置

等所有服務(wù)都在新環(huán)境部署新實(shí)例后甜无,則可以恢復(fù)原來(lái)的配置讓實(shí)例正常的消息 mq 和定時(shí)任務(wù)

2: 新增路由

第一步都完成之后,所有的服務(wù)實(shí)例都部署到新的環(huán)境里了哥遮,服務(wù)注冊(cè)中心上也有相應(yīng)的實(shí)例岂丘,這時(shí)候我們可以開(kāi)始驗(yàn)證了

對(duì)于舊服務(wù),一般都有自己正在使用的域名眠饮,這時(shí)我們可以對(duì)原有域名在新環(huán)境新增一個(gè)應(yīng)用路由奥帘,用于暴露部署的服務(wù)實(shí)例

部署完后可以通過(guò)本地綁 hosts 的方式進(jìn)行訪(fǎng)問(wèn),域名綁定頁(yè)面上的這個(gè)入口 ip 地址即可

對(duì)于 https 的場(chǎng)景仪召,使用命令驗(yàn)證 https 是否生效:

curl --resolve domain:443:ip /check_status

驗(yàn)證沒(méi)問(wèn)題后讓運(yùn)維切域名流量到指定的 ip

優(yōu)勢(shì):

以上遷移分為 2 個(gè)步驟寨蹋,業(yè)務(wù)方可以只關(guān)注第二步即驗(yàn)證確保遷移沒(méi)問(wèn)題牲距,第一步可以交由專(zhuān)人來(lái)部署钥庇,職業(yè)分明,降低業(yè)務(wù)方接入的成本

回顧:

以上過(guò)程评姨,新舊 2 套環(huán)境都是完全隔離萤晴,互不影響吐句,只有等新環(huán)境的驗(yàn)證沒(méi)問(wèn)題了才切換流量到新環(huán)境,最大程度地避免了遷移環(huán)境期間的故障店读。不僅可用于遷移效能平臺(tái)嗦枢,遷移其他環(huán)境大體思路也可參考屯断,包括生產(chǎn)切換環(huán)境也可以考慮使用

總結(jié):

此方案并不要求新舊兩套環(huán)境之間的服務(wù)網(wǎng)絡(luò)打通,但是對(duì)于數(shù)據(jù)庫(kù) mysql殖演,redis氧秘,消息隊(duì)列 mq 這些中間件,是需要在新環(huán)境打通原有的網(wǎng)絡(luò)趴久,因?yàn)檫@些都涉及持久層丸相,遷移起來(lái)可能比較困難彼棍。如果要遷移數(shù)據(jù)庫(kù)可以等流量切到新環(huán)境后,在新環(huán)境部署新的數(shù)據(jù)庫(kù)座硕,然后舊數(shù)據(jù)庫(kù)單向同步數(shù)據(jù)到新數(shù)據(jù)庫(kù),然后再流量低峰期修改連接的數(shù)據(jù)庫(kù)到新環(huán)境的數(shù)據(jù)庫(kù)

而對(duì)于注冊(cè)中心 Eureka 和 xxl-job缆蝉,這些組件要求先部署到新環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘦真,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诸尽,更是在濱河造成了極大的恐慌,老刑警劉巖穿肄,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異矢否,居然都是意外死亡脑溢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)验庙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)社牲,“玉大人,你說(shuō)我怎么就攤上這事搏恤。” “怎么了挑社?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵痛阻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我阱当,道長(zhǎng),這世上最難降的妖魔是什么录淡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任油坝,我火速辦了婚禮,結(jié)果婚禮上澈圈,老公的妹妹穿的比我還像新娘。我一直安慰自己窍帝,他們只是感情好诽偷,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布疯坤。 她就那樣靜靜地躺著深浮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刑峡。 梳的紋絲不亂的頭發(fā)上玄柠,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天诫舅,我揣著相機(jī)與錄音,去河邊找鬼刊懈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匾浪,可吹牛的內(nèi)容都是我干的卷哩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冷溶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼尊浓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起栋齿,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎基协,沒(méi)想到半個(gè)月后谷丸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泉唁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扮休。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拴鸵。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劲藐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兄渺,我是刑警寧澤汰现,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站口叙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏妄田。R本人自食惡果不足惜驮捍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萨醒。 院中可真熱鬧,春花似錦富纸、人聲如沸旨椒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至好港,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钧汹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工碗降, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塘秦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓精偿,卻偏偏與公主長(zhǎng)得像赋兵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霹期,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容