IBM Cloud在2021年3月,推出了IBM Cloud Satellite服務,意在幫助那些希望使用公有雲服務,又想利用現有的自有資料中心資源,或者在非IBM Cloud平台上(即第三方雲平台)使用IBM Cloud服務的使用者,又或者是希望在邊緣節點擁有公有雲服務能力的使用者。
IBM Cloud Satellite幫助您将您自有的資料中心,邊緣節點接入到IBM Cloud,通過IBM Cloud Satellite接管你現有的計算資源,将IBM Cloud平台上的服務部署到您的自有環境和邊緣節點上,使您在自有資料中心和邊緣節點上也擁有IBM Cloud服務的能力,在本地運作您自己的應用,一方面達到更快速高效的通路能力,另一方面将應用資料,客戶資料留在自有資料中心和邊緣節點,滿足客戶對資料安全的要求。當然,IBM Cloud Satellite也可以部署到第三方雲資源上,在第三方雲資源上部署IBM Cloud平台上的服務,以解決IBM Cloud在某些地域沒有資料中心的缺陷。
在此,我将使用騰訊雲,将IBM Cloud Satellite部署到Tencent Cloud在中國上海,北京或其他國内的資料中心,以解決IBM Cloud在中國暫時沒有資料中心的缺陷,幫助那些希望使用IBM Cloud上的服務,并希望應用運作在中國國内的使用者。
在開始動手之前,這裡需要您先準備好IBM Cloud賬号以及Tencent Cloud的賬号。(有關如何建立IBM Cloud和Tencent Cloud的賬号的過程,不在這裡進行講述)
準備好兩個雲平台賬号後,我們先來看一下IBM Cloud Satellite對于我們資源的一個要求情況:(https://cloud.ibm.com/docs/satellite)
1、規劃您的基礎架構環境:
您的Satellite Location從運作在IBM Cloud之外的基礎設施開始,例如第三方雲提供商或您自有的資料中心。您的基礎設施為您用于建構Satellite Locatoin的主機和區域提供了基礎。

為實作整個環境的更高可用性,我們期望準備3個滿足要求的機器(此處我們稱之為HOST,無論是實體機或虛拟機都可以)來進行Satellite Location中Satellite Control Plane的部署,機器最好分散在同一個區域的不同地點,同時滿足高可用環境和Control Plane節點之間低網絡延時的要求。除了需要準備3個機器用于部署Satellite Control Plane之外,另外我們還需要準備機器部署後續需要運作在Satellite Location環境中服務所需要的資源,這裡推薦的最小配置也是3個HOST,按搭建一個基礎的OpenShift環境的要求。除了在高可用方面,IBM Cloud Satellite有期望的要求外,在IBM Cloud Satellite Management與Satellite Location之間的延時,以及Satellite Location中的HOST之間,也有期望的要求,要連接配接到IBM Cloud Satellite中心的Satellite Location Control Plane的HOST必須具有小于或等于200毫秒(<=200ms)往返時間(RTT)的低延遲連接配接。随着延遲的增加,您可能會看到對性能的影響,包括Satellite鍊路吞吐量、Satellite啟用的服務供應時間、主機故障恢複時間,以及在極端情況下,在Satellite Location Control Plane(如OpenShift叢集主機)中運作的資源的可用性。 在Satellite Location的HOST之間,用于Satellite Location Control Plane的工作節點的主機和用于該Location的其他資源的主機之間,他們之間的延時應具有小于或等于100毫秒(<=100ms)往返時間(RTT)的低延遲連接配接。
是以,總結一下,下面準備搭建的IBM Cloud Satellite最小環境,需要準備6個HOST,HOST之間盡可能滿足100ms以内的延時要求,Satellite Location到IBM Cloud Satellite服務中心盡可能滿足200ms以内的延時要求。
2、Satellite對HOST配置的要求:
機器需要滿足4核16G,外加100G硬碟的配置要求,如果有更富裕的硬碟當然最好,以友善後面Satellite運作期間日志的存儲不會有影響。 另外需要配置至少100M網卡和網絡帶寬,用于安裝部署Satellite Control Plane和IBM Cloud其他服務時候下載下傳軟體包的需要(我之前隻用5M的帶寬進行安裝,最後因逾時而導緻失敗)。除機器配置以外,現在Satellite Location中的HOST隻支援x86平台的RedHat Enterprise Linux 7版本。像Windows,IBM Power的AIX/Linux,IBM mainframe系統的IBM Z現在還暫不支援。
對于RHEL7系統,需要啟用下面的軟體倉庫,以在IBM Cloud Satellite Location部署過程中下載下傳并安裝所需要的軟體包,可以通過一下指令啟用。
#subscription-manager repos --enable rhel-server-rhscl-7-rpms
#subscription-manager repos --enable rhel-7-server-optional-rpms
#subscription-manager repos --enable rhel-7-server-rh-common-rpms
#subscription-manager repos --enable rhel-7-server-supplementary-rpms
#subscription-manager repos --enable rhel-7-server-extras-rpms
主機在的網絡方面的配置需要滿足以下要求,所有主機的MTU值必須一緻(建議使用預設值1500),localhost必須解析為127.0.0.1,網卡位址避開下面的網段:172.16.0.0/16, 172.18.0.0/16, 172.19.0.0/16, 172.20.0.0/16, 和 192.168.255.0/24。所有機器必須使用相同的預設Gateway,預設路由必須是啟用在第一個網卡上(如eth0,ens0等等),能夠正常解析網際網路域名。Location内部機器之間的通訊需放開所有端口,為使用者通路放開Satellite Location Control Plane的443和30000-32767端口(TCP),為IBM Cloud Satellite服務端放開Satellite Location Control Plane的443和30000-32767的TCP端口,以及30000-32767的UDP端口。具體細節,可參考(https://cloud.ibm.com/docs/satellite?topic=satellite-host-reqs)
環境準備
一、制作RHEL系統鏡像
由于Tencent Cloud目前還沒有提供RedHat Enterprise Linux的作業系統支援,而且目前IBM Satellite還隻支援RedHat Enterprise Linux系統,是以我們需要在Tencent Cloud中準備我們自己的RHEL鏡像(系統)來支援後面Satellite Location的安裝和設定工作。鑒于Tencent Cloud還無法提供在虛拟機上自己安裝作業系統的功能,我們下面使用導入外部鏡像的方式實作。
我們在IBM Cloud中建立一個Classic的小配置虛拟機(如1C2G),選擇RHEL 7作業系統,(區域可以随便選擇,但推薦美國或澳洲地區,因為後面我們需要建立區域性的對象存儲,最好是和對象存儲在同一個區域,這樣後面鏡像傳輸的時候更為友善快捷)這裡我們選擇月租型機器(後面用于上傳下載下傳對象存儲中的鏡像檔案,傳輸到騰訊雲會有外網流量,而月租型的機器有每月250GB的贈送流量),當然你也可以選擇時租型機器,我們生成鏡像隻需要很短的時間就可以完成,完成之後就可以退租機器,以節省費用。
(此處我們需要選取BootDisk最好是100GB, 因為Satellite Control Plane需要我們的磁盤空間要大于100GB,以保證後續有足夠的空間記錄日志)
點選“建立“後約2到3分鐘機器就可以Ready可用。然後我們登入進作業系統對RHEL的subscription配置進行調整。可能讀者會問,此處為什麼需要進行RHEL Subscription的調整,難道IBM的RHEL訂閱有問題?其實是這樣的,IBM的RHEL訂閱,注冊的是IBM内部的RHEL訂閱伺服器,每個IBM區域都設定有IBM内部的RHEL訂閱伺服器,需要安裝RHEL相關軟體包的話,都會通過内部網絡進行安裝。我們如果不做任何修改和調整,将RHEL系統鏡像直接導出,然後再導入到Tencent Cloud的話,原先RHEL系統裡面相應的訂閱資訊也就無法使用了,并且需要unregister之前的subscription後才能注冊新的subscription,但是由于無法連接配接IBM之前的内部網絡,是以unregister這個步驟會一直無法完成,那麼我們也就無法注冊我們新的訂閱,這也是為什麼我們需要先登入進入系統,對原先的subscription配置做一些調整的原因。
- 擷取機器登入密碼:
- 進入RHEL系統,對選項的訂閱進行unregister, 并修改相關訂閱配置,如訂閱伺服器域名,端口等等:
#subscription unregister
#subscription-manager config --server.hostname=subscription.rhsm.redhat.com --server.port=443 --server.prefix=/subscription
#subscription-manager config --rhsm.baseurl=https://cdn.redhat.com --rhsm.full_refresh_on_yum=0 --rhsm.repo_ca_cert=/etc/rhsm/ca/redhat-uep.pem
3. 退出系統,并抓取鏡像,在虛拟機的詳細頁面下,右側的下拉菜單,選擇“Create image template“
此過程大約需要兩分鐘左右,完成後,在左上角的菜單à經典基礎架構à管理à鏡像中檢視:
到此,RHEL鏡像,在IBM Cloud上建立完成,後面我們需要将鏡像上傳到IBM Cloud的對象存儲,然後再同步到騰訊雲的對象存儲上,最後導入到騰訊雲的鏡像庫,供我們在騰訊雲上部署RHEL作業系統使用。 後面講解如何将剛剛在IBM Cloud上生成的RHEL鏡像,同步到騰訊雲,并添加入鏡像庫。
二、建立對象存儲
在IBM Cloud上建立對象存儲執行個體,建立區域類型的存儲桶,并生成服務密鑰(啟用HMAC), 記下相關資訊,供後面配置對象存儲同步工具使用(存儲桶名稱,服務密鑰ID和Key,存儲桶端點資訊)
建立服務密鑰,并記下key和id,供後面配置對象存儲工具使用。(如果你後面直接通過URL方式下載下傳和上傳檔案到對象存儲,可以不用設定服務密鑰,但是這裡還是推薦服務密鑰的方式比較友善)
在騰訊雲上建立對象存儲實力和存儲桶,建立API密鑰,記下相關資訊(存儲桶名稱,API secretid與secretkey,對象存儲端點資訊),供後面配置對象存儲工具使用。(我們這裡的對象存儲桶建立的區域是上海,因為我們後面需要在上海開機器資源, 系統的鏡像導入需要和對象存儲在同一個區域才可以)
三、同步對象存儲中的鏡像檔案
找一台機器安裝對象存儲同步工具,我們在這裡使用rclone進行對象存儲同步,我在這裡使用的是我之前用于生成RHEL系統鏡像的IBM Cloud上的虛拟機,因為我們後續需要對鏡像檔案進行格式的轉換,需要有大于100GB的可用空間,為避免後面磁盤空間不足,我們額外再給虛拟機添加一個200GB的磁盤,然後再進行格式化并挂載到RHEL系統(如果各位希望使用其他作業系統,如windows,centos等等,可以對虛拟機進行OS Reload操作)
完成後登入系統,使用fdisk指令可以檢視到新加的磁盤。
#fdisk -l
#fdisk /dev/xvdc
#mkfs.ext4 /dev/xvdc1
#mkdir /data
#mount /dev/xvdc1 /data
添加一行内容到/etc/fstab檔案,讓下次系統啟動時自動挂載,如下所示:
/dev/xvdc1 /data ext4 defaults,noatime 0 0
安裝rclone工具,編輯rclone.conf檔案如下:(rclone.conf檔案位于 ~/.config/rclone/目錄下)
# yum install -y unzip
# curl https://rclone.org/install.sh | sudo bash
#cat /root/.config/rclone/rclone.conf
[my-ibm-cos] # 自己定義的在rclone工具裡面的IBMCOS存儲執行個體名稱
type = s3
provider = IBMCOS
env_auth = false # 不從環境變量中擷取密鑰
access_key_id = 5xxxxxxxxxxxxx9 #IBM COS的access key Id
secret_access_key = a9d3bxxxxxxxxxxxxxxxxxxxef #IBM COS的secret access key
region = other-v2-signature
endpoint = s3.private.us-south.cloud-object-storage.appdomain.cloud # IBMCOS内網端點,因為我們的伺服器在IBM雲上,使用内部端點可以免去流量費用
location_constraint = us-south-standard
acl = public-read
[my-tencent-cos] # 自己定義的在rclone工具裡面的騰訊雲存儲執行個體名稱
type = s3
provider = Other
env_auth = false # 不從環境變量中擷取密鑰
access_key_id = AKIDVxxxxxxxxxxxxxxxxxxxxOtE # 騰訊雲的secretId
secret_access_key = FExxxxxxxxxxxxxxxxxxxxxxxxxM # 騰訊雲的secretKey
endpoint = cos.ap-shanghai.myqcloud.com # 騰訊雲對象存儲COS的域名
acl = public-read
你也可以使用rclone配置向導進行設定(執行rclone config)
有關如何配置rclone工具,設定IBM和Tencent對象存儲的詳細步驟,也可以參考這兩個連結:
https://blog.csdn.net/koolincn/article/details/116521882
https://blog.csdn.net/koolincn/article/details/116522215
安裝鏡像檔案轉換工具
#yum -y install qemu-img
将IBM Cloud上之前生成的系統鏡像檔案上傳到IBM Cloud的對象存儲上。
這裡導出到對象存儲需要用到的API key,可以從這裡獲得,如下圖所示:
如果之前沒有建立,可以直接建立一個,記下相應的ID與KEY。
執行rclone指令,查詢并下載下傳系統鏡像檔案到作業系統本地。
# rclone lsd my-ibm-cos:
-1 2021-06-05 03:06:54 -1 mycos-bucket-001
# rclone ls my-ibm-cos:mycos-bucket-001
3833229824 rhel100g-0.vhd
915406848 ubuntu-16.04.6-server-amd64.iso
#
#rclone copy -P my-ibm-cos:mycos-bucket-001/rhel100g-0.vhd /data/
對鏡像檔案進行轉換,并調整鏡像檔案大小。
#qemu-img convert –f vpc –O raw rhel100g-0.vhd rhel100g.raw
#qemu-img rsize rhel100g.raw -- 45G
(鏡像檔案經vhd格式轉換成raw格式後,檔案大小将是實體磁盤的大小【當時訂購的是選的100G的啟動盤,是以raw檔案的大小也是100G】,我們需要将raw檔案的大小重新調整一下,以免超過騰訊雲鏡像導入檔案不能大于50G的要求,但是size也不能調整得太小,以免破壞原有的檔案系統)
鏡像檔案調整完成之後,将鏡像檔案上傳到騰訊雲的對象存儲中。
#rclone copy -P /data/rhel100g.raw my-tencent-cos:zt-cos-tencent-sh-xxxxxx/
在騰訊雲的控制台導入RHEL鏡像。
複制鏡像檔案的存儲URL
四、導入系統鏡像。
這裡可以先試着使用正常方式導入,如有問題,可以選擇強制方式。
五、部署虛拟機資源
在騰訊雲上部署虛拟機資源,選擇自定義鏡像,将磁盤大小調整為100G+,記得将網絡帶寬調整到100M+
登入系統,進行RHEL訂閱的注冊和啟用相關的軟體倉庫。
#subscription-manager register --username xxxx --password xxxx --auto-attach
#subscription-manager refresh
#subscription-manager repos --enable rhel-server-rhscl-7-rpms
#subscription-manager repos --enable rhel-7-server-optional-rpms
#subscription-manager repos --enable rhel-7-server-rh-common-rpms
#subscription-manager repos --enable rhel-7-server-supplementary-rpms
#subscription-manager repos --enable rhel-7-server-extras-rpms
六、注冊并獲得RHEL訂閱
如果你還沒有RHEL的訂閱,可以通過下面的方法,獲得最多支援16個機器的免費訂閱号,此program是RedHat專門針對開發者提供的免費的訂閱,支援小型的開發測試環境使用。
注冊成為RHEL使用者并加入開發者計劃 (http://developers.redhat.com/)
檢視并管理訂閱(https://access.redhat.com/management)
至此,部署Satellite Location的所有準備工作全部完成,包括騰訊雲平台RHEL系統鏡像的準備,RHEL虛拟機的建立,RHEL訂閱賬号的注冊與申請,RHEL系統倉庫的啟用等等。
請繼續閱讀文章的第二部分,建立并部署IBM Satellite
(https://blog.csdn.net/koolincn/article/details/117988958)