本期實驗將指導您在ARM平臺部署PolarDB-X
一.安裝環境
本步驟將指導您如何安裝Docker、kubectl、minikube和Helm3。
1.執行如下命令,確認機器架構。
uname -a
返回結果如下,有關鍵詞aarch64就是ARM架構。
2.安裝Docker。
2.1 執行如下命令,安裝Docker。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
2.2 執行如下命令,啓動Docker。
systemctl start docker
3.安裝kubectl。
3.1 執行如下命令,下載kubectl文件。
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/arm64/kubectl
3.2 執行如下命令,賦予可執行權限。
chmod +x ./kubectl
3.3 執行如下命令,移動到系統目錄。
mv ./kubectl /usr/local/bin/kubectl
4.安裝minikube。
執行如下命令,下載並安裝minikube。
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 sudo install minikube-linux-arm64 /usr/local/bin/minikube
5.安裝Helm3。
5.1 執行如下命令,下載Helm3。
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/helm-v3.5.1-linux-arm64.tar.gz
5.2 執行如下命令,解壓Helm3。
tar -zxvf helm-v3.5.1-linux-arm64.tar.gz
5.3 執行如下命令,移動到系統目錄。
mv linux-arm64/helm /usr/local/bin/helm
6.安裝MySQL。
執行如下命令,安裝MySQL。
yum install -y mysql
二.使用PolarDB-X Operator安裝PolarDB-X
本步驟將指導您如何創建一個簡單的Kubernetes集羣並部署PolarDB-X Operator ,使用Operator部署一個完整的PolarDB-X集羣,詳細文檔請參考通過Kubernetes安裝PolarDB-X。
1.使用minikube創建Kubernetes集羣。
minikube是由社區維護的用於快速創建Kubernetes測試集羣的工具,適合測試和學習Kubernetes。使用minikube創建的Kubernetes集羣可以運行在容器或是虛擬機中,本實驗場景以Alibaba Cloud Linux 3.2104 LTS 64位 ARM版上創建Kubernetes爲例。
說明:如果您使用其他操作系統部署minikube,例如macOS或Windows,部分步驟可能略有不同。
1.1 執行如下命令,新建賬號galaxykube,並將galaxykube加入docker組中。
minikube要求使用非root賬號進行部署,所以您需要新建一個賬號。
useradd -ms /bin/bash galaxykube usermod -aG docker galaxykube
1.2 執行如下命令,切換到賬號galaxykube。
su galaxykube
1.3 執行如下命令,進入到home/galaxykube目錄。
cd
1.4 執行如下命令,啓動一個minikube。
說明:這裏我們使用了阿里雲的minikube鏡像源以及USTC提供的docker鏡像源來加速鏡像的拉取。
minikube start --cpus 4 --memory 12288 --nodes=2 --image-mirror-country cn --registry-mirror=https://docker.mirrors.sjtug.sjtu.edu.cn --kubernetes-version 1.23.3
返回結果如下,表示minikube已經正常運行,minikube將自動設置kubectl的配置文件。
1.5 執行如下命令,使用kubectl查看集羣信息。
kubectl cluster-info
返回如下結果,您可以查看到集羣相關信息。
2.部署 PolarDB-X Operator。
2.1 執行如下命令,創建一個名爲polardbx-operator-system的命名空間。
kubectl create namespace polardbx-operator-system
2.2 執行如下命令,安裝PolarDB-X Operator。
helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com helm install --namespace polardbx-operator-system polardbx-operator polardbx/polardbx-operator
2.3 執行如下命令,查看PolarDB-X Operator組件的運行情況。
kubectl get pods --namespace polardbx-operator-system
返回結果如下,請您耐心等待2分鐘,等待所有組件都進入Running狀態,表示PolarDB-X Operator已經安裝完成。
3.部署 PolarDB-X 集羣。
3.1 執行如下命令,創建polardb-x.yaml。
vim polardb-x.yaml
3.2 按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardb-x
spec:
topology:
nodes:
cdc:
replicas: 1
template:
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
cn:
replicas: 1
template:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi
dn:
replicas: 1
template:
engine: galaxy
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 500Mi
gms:
template:
engine: galaxy
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
3.3 執行如下命令,創建PolarDB-X集羣。
kubectl apply -f polardb-x.yaml
3.4 執行如下命令,查看PolarDB-X集羣創建狀態。
kubectl get polardbxCluster polardb-x -o wide -w
返回結果如下,請您耐心等待十分鐘左右,當PHASE顯示爲Running時,表示PolarDB-X集羣已經部署完成。
3.5 按Ctrl+C鍵,退出查看PolarDB-X集羣創建狀態。
三.連接 PolarDB-X 集羣
本步驟將指導您如何連接通過K8s部署的PolarDB-X集羣。
1.執行如下命令,查看PolarDB-X集羣登錄密碼。
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回結果如下,您可以查看到PolarDB-X集羣登錄密碼。
2.執行如下命令,將PolarDB-X集羣端口轉發到3306端口。
說明:使用MySQL Client方式登錄通過k8s部署的PolarDB-X集羣前,您需要進行獲取PolarDB-X集羣登錄密碼和端口轉發。
kubectl port-forward svc/polardb-x 3306
3. 在實驗頁面,單擊右上角的+圖標,創建新的終端二。
4. 在終端二中,執行如下命令,連接PolarDB-X集羣。
- 您需要將<PolarDB-X集羣登錄密碼>替換爲實際獲取到的PolarDB-X集羣登錄密碼。
- 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0報錯,請您稍等一分鐘,重新轉發端口並連接PolarDB-X集羣即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集羣登錄密碼>
四.啓動業務
本步驟將指導您如何使用Sysbench OLTP場景模擬業務流量。
1.準備壓測數據。
1.1 執行如下SQL語句,創建壓測數據庫sysbench_test。
create database sysbench_test;
1.2 輸入exit退出數據庫。
1.3 執行如下命令,切換到賬號galaxykube。
su galaxykube
1.4 執行如下命令,進入到/home/galaxykube目錄。
cd
1.5 執行如下命令,創建準備壓測數據的sysbench-prepare.yaml文件。
vim sysbench-prepare.yaml
1.6 按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
apiVersion: batch/v1
kind: Job
metadata:
name: sysbench-prepare-data-test
namespace: default
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: sysbench-prepare
image: minirplus/sysbench
env:
- name: POLARDB_X_USER
value: polardbx_root
- name: POLARDB_X_PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
command: [ 'sysbench' ]
args:
- --db-driver=mysql
- --mysql-host=$(POLARDB_X_SERVICE_HOST)
- --mysql-port=$(POLARDB_X_SERVICE_PORT)
- --mysql-user=$(POLARDB_X_USER)
- --mysql_password=$(POLARDB_X_PASSWD)
- --mysql-db=sysbench_test
- --mysql-table-engine=innodb
- --rand-init=on
- --max-requests=1
- --oltp-tables-count=1
- --report-interval=5
- --oltp-table-size=160000
- --oltp_skip_trx=on
- --oltp_auto_inc=off
- --oltp_secondary
- --oltp_range_size=5
- --mysql_table_options=dbpartition by hash(`id`)
- --num-threads=1
- --time=3600
- /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua
- run
1.7 執行如下命令,運行準備壓測數據的sysbench-prepare.yaml文件,初始化測試數據。
kubectl apply -f sysbench-prepare.yaml
1.8 執行如下命令,獲取任務進行狀態。
kubectl get jobs
返回結果如下,請您耐心等待大約1分鐘,當任務狀態COMPLETIONS爲1/1時,表示數據已經初始化完成。
2.啓動壓測流量。
2.1 執行如下命令,創建啓動壓測的sysbench-oltp.yaml文件。
vim sysbench-oltp.yaml
2.2 按i鍵進入編輯模式,將如下代碼複製到文件中,然後按ECS退出編輯模式,輸入:wq後按下Enter鍵保存並退出。
apiVersion: batch/v1
kind: Job
metadata:
name: sysbench-oltp-test
namespace: default
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: sysbench-oltp
image: minirplus/sysbench
env:
- name: POLARDB_X_USER
value: polardbx_root
- name: POLARDB_X_PASSWD
valueFrom:
secretKeyRef:
name: polardb-x
key: polardbx_root
command: [ 'sysbench' ]
args:
- --db-driver=mysql
- --mysql-host=$(POLARDB_X_SERVICE_HOST)
- --mysql-port=$(POLARDB_X_SERVICE_PORT)
- --mysql-user=$(POLARDB_X_USER)
- --mysql_password=$(POLARDB_X_PASSWD)
- --mysql-db=sysbench_test
- --mysql-table-engine=innodb
- --rand-init=on
- --max-requests=0
- --oltp-tables-count=1
- --report-interval=5
- --oltp-table-size=160000
- --oltp_skip_trx=on
- --oltp_auto_inc=off
- --oltp_secondary
- --oltp_range_size=5
- --mysql-ignore-errors=all
- --num-threads=32
- --time=3600
- /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
- run
2.3 執行如下命令,運行啓動壓測的sysbench-oltp.yaml文件,開始壓測。
kubectl apply -f sysbench-oltp.yaml
2.4 執行如下命令,查找壓測腳本運行的POD。
kubectl get pods
返回結果如下, 以‘sysbench-oltp-test-’開頭的POD即爲目標POD。
2.5 執行如下命令,查看QPS等流量數據。
說明:您需要將命令中的目標POD替換爲以‘sysbench-oltp-test-’開頭的POD。
kubectl logs -f 目標POD
本文爲阿里雲原創內容,未經允許不得轉載。