記阿里雲經典網絡遷移至專有網絡的過程

前言

爲了減輕對數據庫的運維壓力,將自建的mysql數據庫轉爲RDS數據庫。mysql

遷移環境

  1. 阿里雲RDS——專有網絡
  2. 阿里雲ECS——經典網絡(應用服務器)
  3. 阿里雲ECS——經典網絡(DB服務器)
  4. 諮詢過阿里雲,咱們ECS經典網絡不支持直接從經典網絡遷移到專有網絡,需購買新的服務器。

相關IP以及應用網絡配置

IP	服務器類別	類別	外網IP
10.10.3.10	應用服務器	應用服務器-A	183.44.79.28
10.10.3.11	自建mysql	自建數據庫-B	*
172.10.10.11	阿里雲RDS	RDS-C	*
172.10.10.12	(新購)阿里雲ECS-應用服務器	新購VPS服務器-D	183.44.79.27

咱們須要將應用從A遷移到D;將數據庫從B遷移到Dsql

遷移步驟

1.先在服務器D中搭建好相關的應用運行環境———APR-Tomcat、JDK、Nginx數據庫

2.使用阿里雲提供的ClassicLink將經典網絡與專有網絡互通。也就是上面的四臺服務器都能相互ping通,目的是讓D服務器能連接上B的數據庫。緩存

3.將應用從A服務器中複製到D服務器中去,啓動D中的應用,觀察應用是否能正常啓動。服務器

4.在D服務器中的應用能正常啓動後,需修改A的Nginx配置,配置一份代理,類型是backup,目的是在A應用stop後,此backup會將請求轉發到D服務器的應用中去。網絡

5.中止A服務的應用,觀察A中的Nginx是否能將請求都轉發到D的應用中去。若是正常,則說明咱們應用已成功遷移到D服務器中。運維

6.最後修改域名指向的外網IP,將183.44.79.28修改成183.44.79.27。因CDN有緩存,故修改後,從域名進來的請求並不會馬上請求到183.44.79.27的IP上,還需保留A服務器的Nginx應用正常服務一到兩天。目的是爲了保持全部請求都會轉發到D服務器中。工具

到此,咱們已經遷移好了應用了。可是數據庫這塊還須要遷移。post

7.爲了能正常快速遷移,咱們並無使用阿里雲提供的自建Mysql遷移到RDS上的工具。阿里雲

此處須要提一下咱們的業務:天貓的充值業務;整個過程比較簡單,將天貓請求的數據,保存至數據庫後,再發送充值到充值系統,而後等待充值系統的結果通知,根據結果業務閉環

8.最初的想法是在D中啓動多一份應用,可是此引用連接的是RDS數據庫;在天貓請求過來的充值數據用新的線程post一份至此應用中。可是仔細想了一下,這樣會硬氣引發自建數據庫與RDS自增主鍵不一致的問題。若是天貓同時推送3筆充值數據過來,那麼就有可能訂單A的主鍵ID在自建mysql是10001,而在RDS的自增主鍵卻有多是10002

9.最後的方法是在訂單請求充值後,查詢一次訂單,而後將訂單的信息post到新的應用(鏈接到RDS),在此post的接口處理的邏輯僅僅是將數據插入到數據庫中(此處用了Nutz Dao簡單而方便)。

10.而後在接收通知結果的接口中,直接將接收到的數據,啓用新的線程post一份至鏈接到RDS應用中。

這樣咱們就能將今後刻起的數據,在自建數據庫同步至RDS數據庫

11.觀察一段時間的訂單,對比訂單的數據,若是沒有差別,則說明上述的步驟是支持咱們的邏輯,並且對天貓來講是透明,不須要停機就能完成遷移了。

相關文章
相關標籤/搜索