天天看點

應用上雲改造1. 概述:2. pandora +EDAS 無縫上雲3. 改造上雲或自部署中間件:4. 可使用雲産品

1. 概述:

      彈内應用使用的大量彈内基礎設施在雲上不存在或者有對應的産品,但是無法無縫上雲需要改造,具體對應如下:

序号 彈内元件 雲上 說明及注意事項
1  BUC-SSO aliyun RAM(OpenID)  雲上可以使用 aliyun 的 ram 以及 openID 配置統一使用者和單點登入應用,需要二次開發
2 Oplog  記錄檔審計或者自定義開發簡易 Oplog 操作審計日志投遞到 OSS 或者日志服務,使用雲上操作審計日志查詢。 或者自己開發一個簡易操作審計日志,直接存資料庫。
3 MetaQ ONS(雲上 metaQ)  使用 taobao-hsf.sar 包,配置 ak/sk 無縫上雲,需要注意新支援的 namespaces
4 TDDL DRDS  無縫上雲,連結方式需要修改;
5 mysql RDS  無縫上雲
6 IDB 資料管理平台  DMS  無縫上雲,DMS 對部分低版本 DRDS 不支援。
7 TMD Web 應用防火牆  7層協定直接配置可支援,4層協定需要改造使用 TMD 的改用 waf 的話,雲上 waf 支援的二次開發接口較少
8 容器服務 雲上容器服務(Kubernetes)  雲上容器服務控制台尚未穩定成熟,需要自己熟練使用 kubernetes 運維。
9 Aone 雲效 部分 aone 功能不支援,與容器服務 K8s 能較完美整合,建議使用。  
10 sentinel限流降級元件 AHAS 應用高可用服務,Diamond   需要部署到 edas for ecs 才行,雲上 edas,雲效,容器服務尚未整合好,可以考慮自己使用 sentinel 在 diamond 中配置,自己部署控制台,需要改造統一使用者
11 Tair  無 需要自己部署或者改造為 redis,雲資料庫 Memcache,或者自己部署 tair 到雲 ECS 中
12 VipServer 需要自己部署 vipserver 或者部分區域有 vipserver部署
13 HSF/ConfigServer EDAS  無縫上雲,配置 ak/sk
14 Eagleeye  需要部署到 edas for ecs 才行,雲上 edas,雲效,容器服務尚未整合好
15 Diamond ACM
16 Switch  直接 acm 中配置或者遷移 switch 控制台,需要改造統一使用者
17 sunfire ARMS  需要使用 EDAS部署 或者自己部署 sunfire
18 Medusa 美杜莎國際化 直接使用 medusa包,使用 top 協定通路。
19 雲監控  ECS 與相關雲設施監控
20 日志服務 采集日志

彈内的基礎鏡像預設包含彈内特有的一些日志采集等基礎元件,因應雲上環境要求,需要重新定義基礎鏡像。

2. pandora +EDAS 無縫上雲

應用采用pandora 的taobao-hsf.sar與雲上 EDAS 産品,可以直接實作大部分中間件無縫上雲。

2.1 相關 配置:

  1. 使用 EDAS 的 namespace 來隔離 Diamond, ConfigServer,HSF 等服務,分别部署測試、預發、線上等環境;
  2. 擷取 pandora 的 taobao-hsf.sar 包;
  3. 配置 pandora 通路 edas namespace需要的 ak/sk/tid 等;
    1. 設定 ak/sk/tid檔案到指定目錄: /home/{user_home}/.spas_key/default
    2. default 檔案儲存 ak/sk 資訊,格式類似
      accessKey=343333333333333
      secretKey=55555555555
      tenantId=32323-343434-343434-343434-343434-34343434​           
  4. 配置 RAM可以通路 MetaQ(ONS)的 ak/sk使用者:
    1. 設定 ons 相關 ak/sk 到指定目錄:/home/{user_home}/.ons
    2. onskey.properties 檔案儲存 ak/sk 資訊,格式類似:
      AccessKey = xxxxx
      SecretKey = yyyyyyyyyy
      OnsChannel = ALIYUN
      AuthEnabled = true
      NameserverDomain = onsaddr-iiiii.aliyun.com:8080
      NameserverSubgroup = nsaddr4client-iiiii​           
  5.  Java應用啟動變量設定:
    • -Dpandora.location=/home/{user_home}/taobao-hsf.sar  
      -Daddress.server.domain=xxxx-yy-ccccc-2-ttt-1-internal.edas.aliyun.com 
      -Daddress.server.port=8080 -Dconfigserver.client.port=8000 
      -Dspas.identity=/home/{user_home}/.spas_key/default 
      -Drocketmq.client.keyFile=/home/{user_home}/.ons/onskey.properties 
      -Ddisable.pandora.ons=true 
      -Dtenant.id=xxxxxx-3333-456x-8888-999999999            

2.2 EDAS 與 pandora sar 包依賴 plugin:

元件 對應 plugin 備注
 Diamond diamond-client 插件 配置 pandora 與 edas namespace 的 ak/sk 無縫上雲,不需額外配置
Config Server configcenter-client config-client
HSF hsf
ons-client 配置 pandora 與 ram 的 ak/sk 無縫上雲,不需額外配置
vipserver-client vipserver 未上雲,可以使用需要自己應用設定 ak/sk 或者 vipserver 加白取消 ak/sk鑒權
EagleEye eagleeye-core 用戶端寫日志功能,需要配置SLS日志采集
可以使用 druid,Common pool 實作資料庫連結
sentinel 無縫上雲,如果沒有 EDAS 應用,需要執行手工修改 ACM(Diamond)來實作。
switch  需要執行修改ACM(Diamond)來實作配置。

2.3 EDAS 缺陷:

  1. Pandora 包隻支援一組 edas namespace 的 ak/sk;
    1. pandora 包隻支援通路一組 namespace 的 ak/sk,會使一個應用隻能通路一個 namespace 中的 hsf 服務,ACM 配置等,對部分需要跨 namespace 通路的需求沒法滿足;
  2. Pandora 包 ak/sk 必須落盤儲存在檔案裡,不支援直接遠端擷取保持在記憶體中;
    1. ak/sk 落盤,由安全隐患;
  3. 雲效、EDAS,K8S 不能完美整合,不支援完整的分批釋出與整合;
    1. 因為不能整合,導緻雲效尤其是線上分批釋出,流程隻能完成打包和合并主幹,分批釋出采用手動在容器服務控制台釋出的方式;
  4. Project.name 參數沖突:
    1. edas 預設 project.name 參數為 edas 的應用 id,而大量彈内應用使用同名參數作為啟動參數,并在 hsf 服務等服務中使用,導緻沖突。
  5.  MetaQ中 topic名唯一沖突問題
    1. 雲上 MetaQ 尚未支援 namespace 隔離,其 topic 全局跨租戶唯一,意味着你的 topic 名假如被其它租戶或其它環境使用,将沒法建立,因為需要将 topic 名按照租戶-topic-環境方式分别隔離建立。
  6. EagleEye 日志 在日志服務分割問題:
    1. 日志服務提供的内容分割為多個字段功能隻支援一層分割,eagleEye 日志根據應用服務類型分多種格式,因而隻能分割前幾列有限的字段,剩餘分割或者控制台顯示需要自己實作。
  7. pandora sar 包導緻的常見包沖突:
    1. 參考排包功能 http://gitlab.alibaba-inc.com/middleware-container/pandora-boot/wikis/faq
  8. sentinel :
    1. 可以使用 sentinel,如果沒有結合 edas,需要直接在 ACM(Diamond)中配置
  9. vipserver-client:
    1.  目前的 vipserver并不是雲産品,鑒權基于 Dauth 建立,需要改造為雲上 ram 後才能完美使用。

3. 改造上雲或自部署中間件:

2.1 tair:

雲上 ECS 部署 tair 伺服器。

建議應用改造直接使用雲資料庫 memcache,redis 版。

2.2 vipserver:

使用彈内版本部署 vipserver,建議改造 vipserver 中 dauth 為 aliyun RAM。

2.3 sunfire:

使用彈内sunfire 版本部署在雲 ECS 中或者使用 ARMS。

2.4 SSO:

    使用 aliyun 支援的 openid 和 oauth2, 包裝 sso-client 包,實作 aliyun 控制台應用的單點登入,并導入阿裡雲子賬号資料,統一使用者資料。

2.5 oplog:

    實作 oplog 日志讀寫 client,服務端采用操作更新接口,實作雲上 oplog。

2.6 TMD 淘寶飛彈防禦系統:

雲上有類似産品 web 應用防火牆WAF,應用可以使用WAF 接口做改造開發。

4. 可使用雲産品

  1.  DMS 代替 IDB 實作資料庫管理;
  2. 容器服務:kubernetes;
  3. 雲效;
  4. 雲監控;