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 相關 配置:
- 使用 EDAS 的 namespace 來隔離 Diamond, ConfigServer,HSF 等服務,分别部署測試、預發、線上等環境;
- 擷取 pandora 的 taobao-hsf.sar 包;
- 配置 pandora 通路 edas namespace需要的 ak/sk/tid 等;
- 設定 ak/sk/tid檔案到指定目錄: /home/{user_home}/.spas_key/default
- default 檔案儲存 ak/sk 資訊,格式類似
accessKey=343333333333333 secretKey=55555555555 tenantId=32323-343434-343434-343434-343434-34343434
- 配置 RAM可以通路 MetaQ(ONS)的 ak/sk使用者:
- 設定 ons 相關 ak/sk 到指定目錄:/home/{user_home}/.ons
- onskey.properties 檔案儲存 ak/sk 資訊,格式類似:
AccessKey = xxxxx SecretKey = yyyyyyyyyy OnsChannel = ALIYUN AuthEnabled = true NameserverDomain = onsaddr-iiiii.aliyun.com:8080 NameserverSubgroup = nsaddr4client-iiiii
- 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 缺陷:
- Pandora 包隻支援一組 edas namespace 的 ak/sk;
- pandora 包隻支援通路一組 namespace 的 ak/sk,會使一個應用隻能通路一個 namespace 中的 hsf 服務,ACM 配置等,對部分需要跨 namespace 通路的需求沒法滿足;
- Pandora 包 ak/sk 必須落盤儲存在檔案裡,不支援直接遠端擷取保持在記憶體中;
- ak/sk 落盤,由安全隐患;
- 雲效、EDAS,K8S 不能完美整合,不支援完整的分批釋出與整合;
- 因為不能整合,導緻雲效尤其是線上分批釋出,流程隻能完成打包和合并主幹,分批釋出采用手動在容器服務控制台釋出的方式;
- Project.name 參數沖突:
- edas 預設 project.name 參數為 edas 的應用 id,而大量彈内應用使用同名參數作為啟動參數,并在 hsf 服務等服務中使用,導緻沖突。
- MetaQ中 topic名唯一沖突問題
- 雲上 MetaQ 尚未支援 namespace 隔離,其 topic 全局跨租戶唯一,意味着你的 topic 名假如被其它租戶或其它環境使用,将沒法建立,因為需要将 topic 名按照租戶-topic-環境方式分别隔離建立。
- EagleEye 日志 在日志服務分割問題:
- 日志服務提供的内容分割為多個字段功能隻支援一層分割,eagleEye 日志根據應用服務類型分多種格式,因而隻能分割前幾列有限的字段,剩餘分割或者控制台顯示需要自己實作。
- pandora sar 包導緻的常見包沖突:
- sentinel :
- 可以使用 sentinel,如果沒有結合 edas,需要直接在 ACM(Diamond)中配置
- vipserver-client:
- 目前的 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. 可使用雲産品
- DMS 代替 IDB 實作資料庫管理;
- 容器服務:kubernetes;
- 雲效;
- 雲監控;