Elasticsearch 是一個開源的分布式 RESTful 搜索和分析引擎。它可以在近實時條件下,存儲,查詢和分析海量的數據。它還支持將快照備份至HDFS/S3上面,而阿里云OSS兼容S3的API,本文將介紹如何使用ES的Repository-S3插件將快照備份至OSS。
首先,我們需要安裝repository-s3,可以參考官方文檔:
https://www.elastic.co/guide/en/elasticsearch/plugins/7.2/repository-s3.html
啟動ES,我們可以從log中看到,ES已經load了這個plugin:
[2019-07-15T14:12:09,225][INFO ][o.e.p.PluginsService ] [master] loaded module [aggs-matrix-stats] [2019-07-15T14:12:09,225][INFO ][o.e.p.PluginsService ] [master] loaded module [analysis-common] [2019-07-15T14:12:09,225][INFO ][o.e.p.PluginsService ] [master] loaded module [ingest-common] [2019-07-15T14:12:09,226][INFO ][o.e.p.PluginsService ] [master] loaded module [ingest-geoip] [2019-07-15T14:12:09,226][INFO ][o.e.p.PluginsService ] [master] loaded module [ingest-user-agent] [2019-07-15T14:12:09,226][INFO ][o.e.p.PluginsService ] [master] loaded module [lang-expression] [2019-07-15T14:12:09,226][INFO ][o.e.p.PluginsService ] [master] loaded module [lang-mustache] [2019-07-15T14:12:09,227][INFO ][o.e.p.PluginsService ] [master] loaded module [lang-painless] [2019-07-15T14:12:09,227][INFO ][o.e.p.PluginsService ] [master] loaded module [mapper-extras] [2019-07-15T14:12:09,227][INFO ][o.e.p.PluginsService ] [master] loaded module [parent-join] [2019-07-15T14:12:09,227][INFO ][o.e.p.PluginsService ] [master] loaded module [percolator] [2019-07-15T14:12:09,227][INFO ][o.e.p.PluginsService ] [master] loaded module [rank-eval] [2019-07-15T14:12:09,228][INFO ][o.e.p.PluginsService ] [master] loaded module [reindex] [2019-07-15T14:12:09,228][INFO ][o.e.p.PluginsService ] [master] loaded module [repository-url] [2019-07-15T14:12:09,228][INFO ][o.e.p.PluginsService ] [master] loaded module [transport-netty4] [2019-07-15T14:12:09,228][INFO ][o.e.p.PluginsService ] [master] loaded plugin [repository-s3] [2019-07-15T14:12:12,375][INFO ][o.e.d.DiscoveryModule ] [master] using discovery type [zen] and seed hosts providers [settings] [2019-07-15T14:12:12,801][INFO ][o.e.n.Node ] [master] initialized [2019-07-15T14:12:12,802][INFO ][o.e.n.Node ] [master] starting ...
然后,我們需要將OSS使用的Access Key和Secret Key配置到ES去,分別執行下面的命令:
bin/elasticsearch-keystore add s3.client.default.access_key bin/elasticsearch-keystore add s3.client.default.secret_key
首先,我們創建一個備份:
[root@master ~]# curl -XPUT 'http://localhost:9200/_snapshot/test' -H 'Content-Type: application/json' -d '{ "type": "s3", "settings": { "bucket": "hadoop-oss-test", "endpoint": "oss-cn-zhangjiakou-internal.aliyuncs.com"} }' {"acknowledged":true}
NOTE: 上面的命令默認使用https協議來傳輸數據,如果想使用http協議,需要將"protocol": "http", "disable_chunked_encoding": true加到settings里面(這個特性將會在新版本發布后可用)。
可以使用下面的命令來確實創建是否成功:
[root@master ~]# curl -XGET localhost:9200/_snapshot/test?pretty { "test" : { "type" : "s3", "settings" : { "bucket" : "hadoop-oss-test", "endpoint" : "oss-cn-zhangjiakou-internal.aliyuncs.com" } } }
我們可以寫入一些測試數據到ES,然后看下目前集群的索引信息:
[root@master ~]# curl -X GET "localhost:9200/_cat/indices?v" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open sales 89ouBy6RQsuT34QRbn_jeQ 10 0 271786 0 15mb 15mb green open customer fQCMEvXsQOu0UgMm1SAJlA 5 0 10000 0 717kb 717kb
假設我們只備份sales索引:
[root@master ~]# curl -XPUT 'http://localhost:9200/_snapshot/test/sales' -H 'Content-Type: application/json' -d '{ "indices": "sales" }' {"accepted":true}
然后我們可以從OSS控制臺看到備份的結果:
現在我們再往sales索引里面寫一些數據:
[root@master ~]# curl -X GET "localhost:9200/_cat/indices?v" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open sales 89ouBy6RQsuT34QRbn_jeQ 10 0 281502 0 15.6mb 15.6mb green open customer fQCMEvXsQOu0UgMm1SAJlA 5 0 10000 0 717kb 717kb
我們利用剛才備份到OSS的快照來恢復sales索引,分別執行下面的命令:
[root@master ~]# curl -XPOST localhost:9200/sales/_close {"acknowledged":true,"shards_acknowledged":true,"indices":{"sales":{"closed":true}}} [root@master ~]# curl -XPOST 'http://localhost:9200/_snapshot/test/sales/_restore?pretty' { "accepted" : true } [root@master ~]# curl -X GET "localhost:9200/_cat/indices?v" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open sales 89ouBy6RQsuT34QRbn_jeQ 10 0 271786 0 15mb 15mb green open customer fQCMEvXsQOu0UgMm1SAJlA 5 0 10000 0 717kb 717kb
我們可以看到,sales索引跟之前的一致。
https://www.elastic.co/guide/en/elasticsearch/plugins/7.2/repository-s3.html
https://www.elastic.co/cn/products/elasticsearch
作者:冷月_wjh
者| 王濤(揚禮)、車漾(必嘫)
來源|阿里巴巴云原生公眾號
Fluid 是一個開源的 Kubernetes 原生的分布式數據集編排和加速引擎,主要服務于云原生場景下的數據密集型應用,例如大數據應用、AI 應用等。通過 Kubernetes 服務提供的數據層抽象,可以讓數據像流體一樣在諸如 HDFS、OSS、Ceph 等存儲源和 Kubernetes 上層云原生應用計算之間靈活高效地移動、復制、驅逐、轉換和管理。而具體數據操作對用戶透明,用戶不必再擔心訪問遠端數據的效率、管理數據源的便捷性,以及如何幫助 Kuberntes 做出運維調度決策等問題。用戶只需以最自然的 Kubernetes 原生數據卷方式直接訪問抽象出來的數據,剩余任務和底層細節全部交給 Fluid 處理。
Fluid 項目當前主要關注數據集編排和應用編排這兩個重要場景。數據集編排可以將指定數據集的數據緩存到指定特性的 Kubernetes 節點,而應用編排將指定該應用調度到可以或已經存儲了指定數據集的節點上。這兩者還可以組合形成協同編排場景,即協同考慮數據集和應用需求進行節點資源調度。
然后介紹 Fluid 中 Dataset 的概念,數據集是邏輯上相關的一組數據的集合,會被運算引擎使用,比如大數據的 Spark,AI 場景的 TensorFlow,而關于數據集智能的應用和調度會創造工業界的核心價值。Dataset 的管理實際上也有多個維度,比如安全性,版本管理和數據加速。
我們希望從數據加速出發,對于數據集的管理提供支持。在 Dataset 上面,我們通過定義 Runtime 這樣一個執行引擎來實現數據集安全性,版本管理和數據加速等能力,Runtime 定義了一系列生命周期的接口,可以通過實現這些接口來支持數據集的管理和加速,目前 Fluid 中支持的 Runtime 有 AlluxioRuntime 和 JindoRuntime 兩種。Fluid 的目標是為 AI 與大數據云原生應用提供一層高效便捷的數據抽象,將數據從存儲抽象出來從而達到如下功能:
如果要了解 Fluid 的 JindoRuntime,先要介紹 JindoFS。它是 JindoRuntime 的引擎層。
JindoFS 是阿里云針對 OSS 開發的自研大數據存儲優化引擎,完全兼容 Hadoop 文件系統接口,給客戶帶來更加靈活、高效的計算存儲方案,目前已驗證支持阿里云 EMR 中所有的計算服務和引擎:Spark、Flink、Hive、MapReduce、Presto、Impala 等。JindoFS 有兩種使用模式,塊存儲(Block)模式和緩存(Cache)模式。Block 模式將文件內容以數據塊的形式存放在 OSS 上并在本地可選擇使用數據備份來進行緩存加速,使用本地的 namespace 服務管理元數據,從而通過本地元數據以及塊數據構建出文件數據。Cache 模式將文件存儲在 OSS 上,該模式兼容現有的 OSS 文件系統,用戶可以通過 OSS 訪問原有的目錄結構以及文件,同時該模式提供數據以及元數據的緩存,加速用戶讀寫數據的性能。使用該模式的用戶無需遷移數據到 OSS,可以無縫對接現有 OSS 上的數據,在元數據同步方面用戶可以根據不同的需求選擇不同的元數據同步策略。
在 Fluid 中,JindoRuntime 也是使用 JindoFS 的 Cache 模式進行遠端文件的訪問和緩存,如您需要在其他環境單獨使用 JindoFS 獲得訪問 OSS 的能力,您也可以下載我們的 JindoFS SDK 按照使用文檔進行部署使用。JindoRuntime 來源于阿里云 EMR 團隊自研 JindoFS 分布式系統,是支撐 Dataset 數據管理和緩存的執行引擎實現。Fluid 通過管理和調度 Jindo Runtime 實現數據集的可見性、彈性伸縮、數據遷移、計算加速等。在 Fluid 上使用和部署 JindoRuntime 流程簡單、兼容原生 K8s 環境、可以開箱即用。深度結合對象存儲特性,使用 Navite 框架優化性能,并支持免密、checksum 校驗等云上數據安全功能。
JindoRuntime 提供對 Aliyun OSS 對象存儲服務的訪問和緩存加速能力,并且利用 FUSE 的 POSIX 文件系統接口實現可以像本地磁盤一樣輕松使用 OSS 上的海量文件,具有以下特點:
支持原生 K8s 環境,利用自定義資源定義,對接數據卷概念。使用部署流程簡單,可以開箱即用。
底層基于 c++ 代碼,整體結構輕量化,各種 OSS 訪問接口額外開銷較小。
我們使用 ImageNet 數據集基于 Kubernetes 集群并使用 Arena 在此數據集上訓練 ResNet-50 模型,基于 JindoFS 的 JindoRuntime 在開啟本地緩存的情況下性能大幅度優于開源 OSSFS,訓練耗時縮短了 76%,該測試場景會在后續文章中進行詳細介紹。
使用 JindoRuntime 流程簡單,在準備好基本 K8s 和 OSS 環境的條件下,您只需要耗費 10 分鐘左右時間即可部署好需要的 JindoRuntime 環境,您可以按照下面的流程進行部署。
kubectl create ns fluid-system
helm install --set runtime.jindo.enabled=true fluid fluid-0.5.0.tgz
$ kubectl get pod -n fluid-system
NAME READY STATUS RESTARTS AGE
csi-nodeplugin-fluid-2mfcr 2/2 Running 0 108s
csi-nodeplugin-fluid-l7lv6 2/2 Running 0 108s
dataset-controller-5465c4bbf9-5ds5p 1/1 Running 0 108s
jindoruntime-controller-654fb74447-cldsv 1/1 Running 0 108s
其中 csi-nodeplugin-fluid-xx 的數量應該與 K8s 集群中節點 node 的數量相同。
在創建 dataset 之前,我們可以創建一個 secret 來保存 OSS 的 fs.oss.accessKeyId 和 fs.oss.accessKeySecret 信息,避免明文暴露出來,K8s 會對已創建的 secret 使用加密編碼,將 key 和 secret 信息填入 mySecret.yaml 文件中。
apiVersion: v1
kind: Secret
metadata:
name: mysecret
stringData:
fs.oss.accessKeyId: xxx
fs.oss.accessKeySecret: xxx
生成 secret:
kubectl create -f mySecret.yaml
創建一個 resource.yaml 文件里面包含兩部分:
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
name: hadoop
spec:
mounts:
- mountPoint: oss://<oss_bucket>/<bucket_dir>
options:
fs.oss.endpoint: <oss_endpoint>
name: hadoop
encryptOptions:
- name: fs.oss.accessKeyId
valueFrom:
secretKeyRef:
name: mysecret
key: fs.oss.accessKeyId
- name: fs.oss.accessKeySecret
valueFrom:
secretKeyRef:
name: mysecret
key: fs.oss.accessKeySecret
---
apiVersion: data.fluid.io/v1alpha1
kind: JindoRuntime
metadata:
name: hadoop
spec:
replicas: 2
tieredstore:
levels:
- mediumtype: HDD
path: /mnt/disk1
quota: 100Gi
high: "0.99"
low: "0.8"
kubectl create -f resource.yaml
查看 dataset 的情況:
$ kubectl get dataset hadoop
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE
hadoop 210MiB 0.00B 180.00GiB 0.0% Bound 1h
您可以通過創建應用容器來使用 JindoFS 加速服務,或者進行提交機器學習作業來進行體驗相關功能。
接下來,我們創建一個應用容器 app.yaml 來使用該數據集,我們將多次訪問同一數據,并比較訪問時間來展示 JindoRuntime 的加速效果。
apiVersion: v1
kind: Pod
metadata:
name: demo-app
spec:
containers:
- name: demo
image: nginx
volumeMounts:
- mountPath: /data
name: hadoop
volumes:
- name: hadoop
persistentVolumeClaim:
claimName: hadoop
使用 kubectl 完成創建:
kubectl create -f app.yaml
查看文件大小:
$ kubectl exec -it demo-app -- bash
$ du -sh /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz
210M /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz
進行文件的 cp 觀察時間消耗了 18s:
$ time cp /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz /dev/null
real 0m18.386s
user 0m0.002s
sys 0m0.105s
查看此時 dataset 的緩存情況,發現 210MB 的數據已經都緩存到了本地。
$ kubectl get dataset hadoop
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE
hadoop 210.00MiB 210.00MiB 180.00GiB 100.0% Bound 1h
為了避免其他因素(比如 page cache)對結果造成影響,我們將刪除之前的容器,新建相同的應用,嘗試訪問同樣的文件。由于此時文件已經被 JindoFS 緩存,可以看到第二次訪問所需時間遠小于第一次。
kubectl delete -f app.yaml && kubectl create -f app.yaml
進行文件的拷貝觀察時間,發現消耗 48ms,整個拷貝的時間縮短了 300 倍。
$ time cp /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz /dev/null
real 0m0.048s
user 0m0.001s
sys 0m0.046s
kubectl delete jindoruntime hadoop
kubectl delete dataset hadoop
以上通過一個簡單的例子完成 JindoFS on Fluid 的入門體驗和理解,并最后進行環境的清理,更多 Fluid JindoRuntime 的功能使用后續文章會進行詳細介紹。
https://github.com/fluid-cloudnative/fluid
http://pasa-bigdata.nju.edu.cn/fluid/index.html
王濤,花名揚禮,阿里巴巴計算平臺事業部 EMR 開發工程師,目前從事開源大數據存儲計算方面的開發和優化工作。
車漾,花名必嘫,阿里巴巴云原生應用平臺高級技術專家,從事 Kubernetes 和容器相關產品的開發。尤其關注利用云原生技術構建機器學習平臺系統,是 GPU 共享調度的主要作者和維護者。
阿里云對象存儲服務(Object Storage Service,簡稱OSS)為您提供基于網絡的數據存取服務。使用OSS,您可以通過網絡隨時存儲和調用包括文本、圖片、音頻和視頻等在內的各種非結構化數據文件。
阿里云OSS將數據文件以對象(object)的形式上傳到存儲空間(bucket)中。您可以進行以下操作:
A.創建一個或者多個存儲空間,向每個存儲空間中添加一個或多個文件。
B.通過獲取已上傳文件的地址進行文件的分享和下載。
C.通過修改存儲空間或文件的屬性或元信息來設置相應的訪問權限。
D.在阿里云管理控制臺執行基本和高級OSS任務。
E.使用阿里云開發工具包或直接在應用程序中進行RESTful API調用執行基本和高級OSS任務。
注意:初次使用阿里云OSS,請您先了解阿里云OSS使用限制。本文檔向您介紹如何使用阿里云管理控制臺來完成以下基本任務。
1、開通OSS服務
2、創建存儲空間
3、上傳文件
4、分享文件
5、刪除文件
6、刪除存儲空間
二、開通OSS服務
前提條件
在使用阿里云OSS服務之前,請確保您已經注冊了阿里云賬號并完成實名認證。如果您還沒有創建阿里云賬號,系統會在您開通OSS時提示您注冊賬號。
操作步驟
1、登錄阿里云官網。
2、將鼠標移至產品,單擊對象存儲OSS,打開OSS產品詳情頁面。
3、在OSS產品詳情頁中,單擊立即開通。
4、開通服務后,在OSS產品詳情頁面單擊管理控制臺直接進入OSS管理控制臺界面。您也可以單擊位于官網首頁右上方菜單欄的控制臺,進入阿里云管理控制臺首頁,然后單擊左側的對象存儲OSS菜單進入OSS管理控制臺界面。
三、購買OSS服務
背景信息
開通OSS服務后,默認的計費方式是按量付費。如果想進一步降低OSS費用,建議使用包年包月(購買資源包)的計費方式。
資源包購買流程如下:
操作步驟
1、開通 OSS 服務后,在OSS產品詳情頁單擊折扣套餐,進入資源包售賣頁。
2、選擇需要購買的資源包類型和規格。
3、選擇資源包購買流程。
4、選擇開通時間(支持支付后立即生效或指定時間生效)。
5、選擇資源包地域。
6、不同地域單價可能不一樣,如海外地區與中國大陸地區目前不一樣。
7、系統顯示您所選資源包配置的價格。單擊立即購買。
四、創建存儲空間
開通阿里云OSS服務后,您需要首先創建存儲空間來存儲文件。
操作步驟
1、登錄OSS 管理控制臺。
2、單擊左側存儲空間列表中的新增按鈕+,或者單擊頁面右上方的新建 Bucket按鈕,打開新建 Bucket對話框。
3、在命名框中,輸入存儲空間名稱。
存儲空間名稱必須符合命名規范。
存儲空間名稱在阿里云OSS的所有現有存儲空間名稱中必須具有唯一性。
存儲空間創建后名稱無法修改。
有關存儲空間命名的更多信息,請參見基本概念介紹。
4、在所屬地域框中,下拉選擇該存儲空間的數據中心。存儲空間創建后無法更換所屬地域。如需要通過ECS內網訪問OSS,需要選擇與您ECS相同的地域。
5、在存儲類型框中,下拉選擇所需要的存儲類型。
標準存儲:高可靠、高可用、高性能,數據會經常被訪問到。
低頻訪問:數據長期存儲、較少訪問,存儲單價低于標準類型。
歸檔存儲:適合需要長期保存(建議半年以上)的歸檔數據,在存儲周期內極少被訪問,數據進入到可讀取狀態需要等待1分鐘的解凍時間。適合需要長期保存的檔案數據、醫療影像、科學資料、影視素材。
6、在讀寫權限框中,下拉選擇對應的權限。
私有:只有該存儲空間的擁有者可以對該存儲空間內的文件進行讀寫操作,其他人無法訪問該存儲空間內的文件。
公共讀:只有該存儲空間的擁有者可以對該存儲空間內的文件進行寫操作,任何人(包括匿名訪問者)可以對該存儲空間中的文件進行讀操作。
公共讀寫:任何人(包括匿名訪問者)都可以對該存儲空間中的文件進行讀寫操作。
注意對存儲空間的所有操作產生的費用由該存儲空間的所有者承擔,因此請慎用公共讀和公共讀寫權限。
7、單擊確定。
五、上傳文件
創建了存儲空間之后,您可以上傳任何類型的文件到存儲空間中。
前提條件
已創建了存儲空間。詳情請參見 創建存儲空間。
背景信息
您可以通過以下途徑上傳文件:
通過OSS控制臺上傳小于5GB的文件。詳情請參見以下步驟。
通過SDK或API使用Multipart Upload方法上傳大于5GB的文件。
通過圖形化的管理工具ossbrowser上傳文件。
操作步驟
1、登錄OSS 管理控制臺。
2、在左側存儲空間列表中,單擊您要向其中上傳文件的存儲空間。
3、單擊文件管理頁簽。
4、單擊上傳文件,打開上傳文件對話框。
5、在目錄地址框中,設置文件上傳到OSS中的存儲路徑。
當前目錄:將文件上傳到當前目錄。
指定目錄:將文件上傳到指定目錄。您需要輸入目錄名稱,OSS將自動創建對應的文件夾并將文件上傳到該文件夾中。
6、在文件ACL區域中,選擇文件的讀寫權限。默認為繼承所在存儲空間的讀寫權限。
7、在上傳文件區域中,將要上傳的一個或多個文件拖拽到此區域;或者單擊直接上傳,選擇一個或多個要上傳的文件。
8、在手機驗證對話框中,單擊點擊獲取,輸入收到的校驗碼,然后單擊確定。彈出上傳任務對話框,顯示上傳進度。您也可以單擊左側下方的上傳任務查看上傳進度。
說明:如果上傳的文件與存儲空間中已有的文件重名,則會覆蓋已有文件。
六、下載文件
您可以通過獲取已上傳文件的地址進行文件的分享和下載。
前提條件
文件已上傳到存儲空間中。詳情請參見上傳文件。
操作步驟
1、登錄OSS 管理控制臺。
2、在左側存儲空間列表中,單擊您已創建的存儲空間名稱,打開該存儲空間概覽頁面。
3、單擊文件管理頁簽。
4、單擊目標文件的名稱或者單擊目標文件對應的設置,打開該文件的預覽頁面,可以看到以下選項:
下載:將文件下載到本地。
打開文件 URL:直接在瀏覽器中打開文件。對于不支持直接瀏覽的文件,如 excel 文件,打開 URL 則直接下載。
復制文件 URL:獲取文件 URL 給訪問者進行瀏覽和下載。
復制文件路徑:用于搜索文件或者給圖片類的文件加水印等功能。
說明:您也可以通過以下方式下載文件:
下載一個或多個文件:在文件管理頁面,勾選一個或多個文件,選擇批量操作 > 下載。
下載單個文件:在文件管理頁面,選擇更多 > 下載。
5、如您的存儲空間的讀寫權限為私有,則您獲取文件訪問URL時還需要在簽名欄里設置鏈接有效時間,默認的鏈接有效時間為3600秒,最大值為64800秒。
說明URL簽名的鏈接有效時間是基于NTP計算的。您可以將此鏈接給與任何訪問者,訪問者可以在有效時間內,通過此鏈接訪問該文件。存儲空間為私有權限時獲得的地址是通過在URL中包含簽名生成的。
七、刪除文件
如果您不再需要存儲所上傳的文件,請將其刪除以免進一步產生費用。
背景信息
您可以通過OSS控制臺刪除單個文件或批量刪除文件。通過控制臺批量刪除文件個數上限為1000。如果想更靈活的選擇刪除的文件,或實現更大批量的刪除。
警告文件刪除后無法恢復,請謹慎操作。
操作步驟
1、進入OSS 管理控制臺界面。
2、在左側存儲空間列表中,單擊目標存儲空間名稱,打開該存儲空間概覽頁面。
3、單擊文件管理頁簽。
4、選擇一個或多個文件,選擇批量操作 > 刪除。或者選擇目標文件對應的更多 > 刪除。
5、在刪除文件對話框中,單擊確定。
(復制下面的鏈接到瀏覽器打開或者戳網頁鏈接直達)
阿里云官方最新活動
一:全民云計算ECS云服務器2折起,優惠配置多選1
https://promotion.aliyun.com/ntms/act/qwbk.html?spm=5176.8112568.738194.1.f0b69ed5Jibrqu&userCode=3ek1oxkw
二:企業級高性能ECS5折起,最低只要1451元。
https://promotion.aliyun.com/ntms/act/enterprise-discount.html?spm=5176.8112568.738194.3.f0b69ed5Jibrqu&userCode=3ek1oxkw
三:1T3年OSS存儲包只要99元。
https://promotion.aliyun.com/ntms/act/oss-discount.html?spm=5176.8112568.738194.1.f0b69ed5Jibrqu&userCode=3ek1oxkw
四:1000元新購,續費代金券
https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=3ek1oxkw
五: 100%CPU性能,1核2G1M服務器,每月9.5元,1年只要118元啦!
https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=3ek1oxkw
驚喜:24歲以下自動獲得學生身份。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。