实践教程之如何在ARM平台部署PolarDB-X

本文涉及的产品
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
PolarDB Agent Express,2核4GB
简介: PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

本期实验将指导您在ARM平台部署PolarDB-X

本期免费实验地址

本期教学视频地址


一.安装环境

本步骤将指导您如何安装Docker、kubectl、minikube和Helm3。

1.执行如下命令,确认机器架构。

uname -a

返回结果如下,有关键词aarch64就是ARM架构。

a1.png

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的配置文件。

a2.jpeg

1.5 执行如下命令,使用kubectl查看集群信息。

kubectl cluster-info

返回如下结果,您可以查看到集群相关信息。

a3.jpeg

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已经安装完成。

a5.jpeg

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集群已经部署完成。

a6.png

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集群登录密码。

a7.png

2.执行如下命令,将PolarDB-X集群端口转发到3306端口。

说明:使用MySQL Client方式登录通过k8s部署的PolarDB-X集群前,您需要进行获取PolarDB-X集群登录密码和端口转发。

kubectl port-forward svc/polardb-x 3306

3. 在实验页面,单击右上角的+图标,创建新的终端二。

a8.png

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退出数据库。

a9.png

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时,表示数据已经初始化完成。

a10.png

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。

a11.jpeg

2.5 执行如下命令,查看QPS等流量数据。

说明:您需要将命令中的目标POD替换为以‘sysbench-oltp-test-’开头的POD。

kubectl logs -f 目标POD


本文来源:PolarDB-X知乎号

相关文章
|
12月前
|
Kubernetes 应用服务中间件 nginx
鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程
Rainbond V6 国产化部署教程,针对鲲鹏 CPU + 麒麟 V10 的离线环境,手把手教你从环境准备到应用上线,所有依赖包提前打包好,步骤写成**傻瓜式**操作指南。别说技术团队了,照着文档一步步来,让你领导来都能独立完成部署。
鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程
|
10月前
|
前端开发 iOS开发 MacOS
macOS 13+ ARM版电脑零接触部署问题解决方法
macOS 13+ ARM版电脑使用MDM工具零接触部署
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
1085 10
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
PyTorch团队推出创新技术,在其低精度计算库TorchAO中引入低位运算符支持,实现1至8位精度的嵌入层权重量化及8位动态量化激活的线性运算符。该技术通过模块化设计和高效硬件利用,优化了资源受限环境下的深度学习计算,提升了计算效率并降低了资源消耗。新内核与PyTorch生态系统无缝集成,支持即时执行、编译优化及边缘计算,为开发者提供全方位性能优势。测试结果显示,多层次量化策略显著提升了计算效率,保持了模型精度。这一突破为深度学习框架优化开辟了多个研究方向,推动了人工智能在边缘计算等领域的广泛应用。
571 11
PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能
|
存储 网络协议 网络安全
【Azure 环境】部署ARM Linked Template时候 Blob SAS Token不能正常工作
Unable to retrieve url https://<stroage account name>.blob.core.chinacloudapi.cn/arm/azuredeploy.json?sp=r 'st' is not recognized as an internal or external command, operable program or batch file. 'se' is not recognized as an internal or external command, operable program or batch file. 'spr' is no
252 1
|
前端开发 Java 编译器
阿里巴巴生态应用在Arm平台性能优化实践
本次方案的主题是阿里巴巴生态应用在 Arm 平台性能优化实践,分别从背景介绍、编译优化实践、总结和展望三个方面介绍了本主题。 1. 背景介绍 2. 编译优化实践 3. 总结和展望
329 3
|
关系型数据库 MySQL 分布式数据库
[PolarDB实操课] 05.通过源码部署PolarDB-X标准版
本课程介绍如何通过源码部署PolarDB-X标准版,涵盖基于Paxos的MySQL三副本工作原理和技术特点。主要内容包括: 1. **Paxos三副本工作原理**:讲解Leader和Follower节点的角色及数据同步机制。 2. **技术特点**:强调高性能、数据不丢失(RPO=0)和自动HA切换。 3. **源码部署步骤**:详细演示从编译生成RPM包到启动DN节点的过程,包括配置my.cnf文件和初始化数据库。 4. **高可用体验**:通过三台机器模拟三副本集群,展示Leader选举和故障转移机制,确保数据一致性和服务可用性。
543 1
|
关系型数据库 编译器 分布式数据库
PolarDB实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
453 0

相关产品

  • 云原生数据库 PolarDB