實踐教程之如何在ARM平臺部署PolarDB-X

本期實驗將指導您在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

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章