暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

浪潮 K1 Power 容器云存储测试报告

浪潮商用机器 2021-07-02
592
【摘要】生产应用往容器云迁移是行业趋势,例如直销银行、影像系统等,容器云存储的技术方案需要重点关注。本文基于浪潮K1 Power Linux的容器云存储平台,测试体验了CSI如何和PV/PVC、CEPH存储结合起来使用,了解到容器运行环境下存储的性能损耗情况,对PAAS环境下的存储使用方案有一定的帮助。

【作者】潘猛,成都农商银行系统工程师,从业18年。在网络、存储、系统、云计算等领域都有10年以上工作经验,熟悉数据库、大数据、python、zabbix、ansible等。目前主要从事项目管理、方案设计、产品选型、POC测试等运维工作。热衷处理各种系统故障。

1.背景和需求

近年来,我行联机交易业务量和数据量随着移动支付的发展而快速增长,手机银行、网银等互联网金融业务的创新,使得业务种类更加灵活、多样,人工智能、物联网等创新技术与金融行业的融合,使得业务场景更加敏捷、丰富,同时也会产生大量场景化、碎片化、移动化的非结构数据。业务品种、业务量、业务数据爆炸式的增长,给IT系统基础架构带来了很大的压力,我行积极在云化、分布式存储、开源数据库及新型数据库等基础架构方面进行相关调研和尝试,为建立灵活开放、高效协同、安全稳定的IT架构体系做技术储备。

Ceph是当前非常流行的开源分布式存储系统,可以在单一平台上提供对象、块和文件系统存储。目前我行已经在开发测试中使用了Ceph作为开发测试平台的存储,主要为虚拟化平台提供Datastore,几乎所有系统的开发测试应用及数据库均有使用,主要为rbd+iscsi的方式。容器云平台目前也已经调研过多家商用平台,最后选定业内排名第一的OpenShift,计划未来一到两年,基于OpenShift容器云平台在开发测试环境完成上线。大部分新建系统,在条件具备的情况下,都会在容器云上尝试部署。部分具备条件的现有系统也会尝试向容器云迁移,例如直销银行、全媒体等。

OpenShift和Ceph的使用场景在容器云环境中具有相当的代表性,也是本次测试选择的组合,我们希望可以验证容器云平台使用Ceph相关接口和场景,并且对容器和物理机对接分布式块存储做性能对比。

2.测试方案设计

测试环境的设计,我们需要构建一个OpenShift容器云平台,一套Ceph分布式存储集群, OpenShift容器云平台使用cephfs和rbd来作为存储,进行功能验证和性能测试。

硬件最终选用浪潮商用机器K1 Power Linux 服务器FP5280G2和FP5466G2共5台,1台FP5280G2部署OpenShift集群,1台FP5280G2 用作客户端压力机,3台FP5466G2用于部署Ceph 分布式存储集群。

测试内容中功能主要是cephfs和rbd的在线扩容、快照和克隆,性能主要为4k 读、4k写、4k读写(写20%)。

3.测试环境

3.1.软硬件环境

K1 Power Linux 机型

名称

cpu

内存

网络

IP

FP5280G2

(创建7个虚机部署OCP 集群)

OCP Console

16C

16G

1Gb

10.152.20.11

OCP Master01

16C

64G

1Gb

10.152.20.13

OCP Master02

16C

64G

1Gb

10.152.20.14

OCP Master03

16C

64G

1Gb

10.152.20.15

OCP Worker01

16C

64G

1Gb

10.152.20.16

OCP Worker02

16C

64G

1Gb

10.152.20.17

OCP Worker03

16C

64G

1Gb

10.152.20.18

FP5466G2

Ceph-node1

128C

256G

10Gb

10.152.20.50

FP5466G2

Ceph-node2

128C

256G

10Gb

10.152.20.51

FP5466G2

Ceph-node3

128C

256G

10Gb

10.152.20.52

FP5280G2

压力测试机

128C

128G

1Gb

10.152.15.42

OCP及Ceph软件版本:

软件

版本号

Ceph

14.2.13

OCP

4.3

OpenShift支持的存储类型接口详见附表1

Ceph集群配置

名称

OSD

MGR

MDS

MON

Ceph-node1

0-9

y

30

y

Ceph-node2

10-19

y

31

y

Ceph-node3

20-29

y

32

y

3.2 环境配置

  • RBD:rbdpool

  • CephFS:hddpool metadatapool

  • Ceph集群public网络:10.152.20.0/24    

  • cluster 网络 192.168.10.0/24

  • OCP通过10.152.20.0/24网段与 Ceph集群通信

3.3 Ceph-CSI搭建

  • 下载相关镜像

image

下载地址

软件版本

openshifttests/csi-provisioner:v1.0.1-ppc64le

https://hub.docker.com/r/openshifttests/csi-provisioner/tags

v1.0.1-0-g9a258a0

svenkatdock/csi-resizer:v4.3

https://hub.docker.com/r/svenkatdock/csi-resizer/tags

21e6fdd04f7358199dbde8e1d0da15809d181e53

openshifttests/csi-attacher:v1.0.1

https://hub.docker.com/r/openshifttests/csi-attacher/tags

v2.0.0-27-gc3bb7f0b

openshifttests/csi-snapshotter:v1.0.1

https://hub.docker.com/r/openshifttests/csi-snapshotter/tags

 v2.0.0-rc1-28-g89889f00-dirty

openshifttests/csi-node-driver-registrar:v1.0.2-ppc64le

 https://hub.docker.com/r/openshifttests/csi-node-driver-registrar/tags

v1.0.2-0-g9f37716

  • 下载软件制作镜像

image

制作方法

ceph/daemon:HEAD-luminous-centos-7-ppc64le

giit clone  https://github.com/ceph/ceph-container.git

cd ceph-container

git checkout -b 5.0 remotes/origin/stable-5.0

git apply ceph5.0.patch

make FLAVORS=nautilus,centos,7 build

ceph-csi

git clone   https://github.com/ceph/ceph-csi.git

cd ceph-csi

git checkout -b 3.1 remotes/origin/release-v3.

git apply cephcsi.patch

修改build.env文件中https_proxy的翻墙代理

make    image-cephcsi BASE_IMAGE=ceph/daemon:5.0-nautilus-centos-7-ppc64le

csi-provisioner

git clone   https://github.com/kubernetes-csi/external-provisioner.git

git checkout -b 1.6 remotes/origin/release-1.6

cd external-provisioner

make

docker build -t  quay.io/k8scsi/csi-provisioner:v1.6.0 .

csi-attacher

git clone  //github.com/kubernetes-csi/external-attacher.git

cd external-attacher

git checkout -b 2.1 remotes/origin/release-2.1

make

docker build -t quay.io/k8scsi/csi-attacher:v2.1.1  .

csi-resizer

git clone -b   https://github.com/kubernetes-csi/external-resizer.git

cd csi-resizer

git checkout -b 0.5 remotes/origin/release-0.5  make

docker build -t quay.io/k8scsi/csi-resizer:v0.5.0 .

external-snapshotter

git clone   https://github.com/kubernetes-csi/external-snapshotter.git (

cd external-snapshotter

git checkout -b 2.1   remotes/origin/release-2.1  make

docker build -t  quay.io/k8scsi/csi-snapshotter:v2.1.0 -f cmd/csi-snapshotter/Dockerfile .

git clone   https://github.com/kubernetes-csi/node-driver-registrar.git

node-driver-registrar

cd node-driver-registrar

git checkout -b 1.3.1  remotes/origin/release-1.3  make

docker build -t  quay.io/k8scsi/csi-node-driver-registrar:v1.3.0 .

操作步骤请参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/ceph-csi%E6%90%AD%E5%BB%BA.txt

4.功能测试

4.1 CephFS快照

操作步骤请参考以下文档:

https://github.com/powerlsr/ocp-ceph/blob/main/%E5%88%9B%E5%BB%BAcephfs%E5%BF%AB%E7%85%A7.txt

  • 查看ceph上的快照

    # oc get pvc cephfs-pvc-test-1
    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
    cephfs-pvc-test-1 Bound pvc-fe16865e-73e5-41a0-b25f-f689689325a9 6Gi RWO csi-cephfs-sc 3d8h
    # oc get pv pvc-fe16865e-73e5-41a0-b25f-f689689325a9 --template {{.spec.csi.volumeAttributes.subvolumeName}}
    csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a

    # ceph fs subvolume snapshot ls cephfs csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a csi
    [
    {
    "name": "csi-snap-81a2894f-4b85-11eb-8689-0a580abc021b"
    }
    ]
    # ceph fs subvolume snapshot info cephfs csi-vol-ff6a2fd2-48f0-11eb-af6f-0a580abc021a csi-snap-81a2894f-4b85-11eb-8689-0a580abc021b csi
    {
    "created_at": "2021-01-01 00:31:07.223110",
    "data_pool": "cephfsdatapool",
    "has_pending_clones": "no",
    "size": 13
    }
    复制

    4.2 RBD快照

    操作步骤请参考以下文档:

    https://github.com/powerlsr/ocp-ceph/blob/main/%E5%88%9B%E5%BB%BArbd%E5%BF%AB%E7%85%A7.txt

    • 查看ceph上的rbd快照snapshot_count: 1

      # oc get pvc | grep test | grep rbd
      rbd-pvc-test-1 Bound pvc-c962d9f8-d369-4220-b32c-a2192067f076 6Gi RWO csi-rbd-sc 32h
      # oc get pv pvc-c962d9f8-d369-4220-b32c-a2192067f076 --template {{.spec.csi.volumeAttributes.imageName}}
      csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212
      # rbd info rbdpool/csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212
      rbd image 'csi-vol-ad53e44d-4a7e-11eb-8b7e-0a580abd0212':
      size 6 GiB in 1536 objects
      order 22 (4 MiB objects)
      snapshot_count: 1
      id: 456c3fd86a570
      block_name_prefix: rbd_data.456c3fd86a570
      format: 2
      features: layering, operations
      op_features: clone-parent, snap-trash
      flags:
      create_timestamp: Wed Dec 30 17:09:44 2020
      access_timestamp: Fri Jan 1 01:51:58 2021
              modify_timestamp: Wed Dec 30 17:09:44 2020
      复制

      4.3 CephFS克隆

      操作步骤参考以下文档:

      https://github.com/powerlsr/ocp-ceph/blob/main/cephfs%E5%85%8B%E9%9A%86.txt

      • 查看clone pvc的数据,并写入数据

        # echo clone >> 1
        /tmp # cat 1
        before
        after
        clone
        复制

        4.4 RBD克隆

        操作步骤参考以下文档:

        https://github.com/powerlsr/ocp-ceph/blob/main/rbd%E5%85%8B%E9%9A%86.txt

        4.5 CephFS在线扩容

        操作步骤参考以下文档:

        https://github.com/powerlsr/ocp-ceph/blob/main/cephfs%E5%9C%A8%E7%BA%BF%E6%89%A9%E5%AE%B9.txt

        • 确认扩容成功

          # oc get pvc cephfs-pvc-test-1
          NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
          cephfs-pvc-test-1   Bound    pvc-fe16865e-73e5-41a0-b25f-f689689325a9   18Gi       RWO            csi-cephfs-sc   6d21h
          复制

          4.6 RBD动态扩容

          操作步骤参考以下文档:

          https://github.com/powerlsr/ocp-ceph/blob/main/rbd%E5%8A%A8%E6%80%81%E6%89%A9%E5%AE%B9.txt

          • 确认扩容成功,由于块设备扩容还需要扩容文件系统,所以时间会比较久一些

            # oc get pvc rbd-pvc-test-1
            NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
            rbd-pvc-test-1 Bound pvc-c962d9f8-d369-4220-b32c-a2192067f076 18Gi RWO csi-rbd-sc 4d22h

            复制

            5.性能测试

            5.1.Ceph性能测试

            • 登录压力测试机

              # ssh 10.152.15.42
              复制
              • 安装ceph-common-12.2.11-0.el7.ppc64le

                # yum install ceph-common
                复制
                • 拷贝ceph集群的ceph.conf 及admin的key

                  # scp 10.152.20.50:/etc/ceph/ceph.conf etc/ceph/
                  # scp 10.152.20.50:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
                  复制
                  • 创建 rbd image

                    # rbd create rbdpool/rbdtest --size 20480
                    复制
                    • 映射image

                      # rbd map rbdpool/rbdtest
                      # rbd showmapped
                      id pool image snap device
                      0  rbdpool        rbdtest -    /dev/rbd0
                      复制
                      • 格式化并挂载

                        # mkfs -t ext4  dev/rbd0
                        # mount /dev/rbd0  /data
                        复制
                        • 测试项目一:

                        4k随机写

                        测试脚本

                         - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randread4k -group_reporting

                        测试结果

                        IOPS: 6409

                        BW: 25.0MiB/s

                        LAT: min=696, max=1415.4k, avg=15583.58, stdev=55881.34

                        • 测试项目二:

                        4k随机读

                        测试脚本

                         - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randwrite4k -group_reporting

                        测试结果

                        IOPS: 32.1k

                        BW: 125MiB/s

                        LAT: min=7, max=13707, avg=3108.38, stdev=1456.98

                        • 测试项目三:

                        4k随机写,20%写

                        测试脚本

                         - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randrw -rwmixwrite=20 -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randrw4k -group_reporting

                        测试结果

                        IOPS write: 4212

                        IOPS read: 16.8k

                        BW write: 16.5MiB/s

                        BW read:65.7MiB/s

                        LAT write: min=717, max=575125, avg=6605.51, stdev=25104.31

                        LAT read:min=7, max=596678, avg=4281.64, stdev=19703.22

                        5.2 容器中的Ceph性能测试

                        • 新建性能测试用pvc rbd-pvc-ptest-1

                          # cat >> rbd-pvc-ptest-1.yaml  << EOF
                          apiVersion: v1
                          kind: PersistentVolumeClaim
                          metadata:
                          name: rbd-pvc-ptest-1
                          spec:
                          accessModes:
                          - ReadWriteOnce
                          resources:
                          requests:
                          storage: 1Gi
                          storageClassName: csi-rbd-sc
                          EOF
                          # oc apply -f rbd-pvc-ptest-1.yaml
                          复制
                          • 新建性能测试用pod

                            # cat >> rbd-ptest-pod-1.yaml << EOF
                            apiVersion: v1
                            kind: Pod
                            metadata:
                            name: rbd-ptest-pod-1
                            namespace: default
                            spec:
                            containers:
                            - command:
                            image: centos
                            tty: true
                            name: mysql
                            volumeMounts:
                            - mountPath: data
                            name: mypvc
                            volumes:
                            - name: mypvc
                            persistentVolumeClaim:
                            claimName: rbd-pvc-ptest-1
                            EOF
                            # oc apply -f rbd-ptest-pod-1.yaml
                            # oc rsh  rbd-ptest-pod-1
                            复制
                            • 测试项目一:

                            4k随机写

                            测试脚本

                              - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randread4k -group_reporting

                            测试结果

                            IOPS: 6047

                            BW: 23.6MiB/s

                            LAT: min=684, max=814875, avg=16518.81, stdev=48518.86

                            • 测试项目二:

                            4k随机读

                            测试脚本

                              - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randwrite4k -group_reporting

                            测试结果

                            IOPS: 30.4k

                            BW: 119MiB/s

                            LAT: min=5, max=323491, avg=3282.20, stdev=3044.63

                            • 测试项目三:

                            4k随机写,20%写

                            测试脚本

                              - fio -filename=/data/fiotest1 -direct=1 -iodepth 2  -rw=randrw -rwmixwrite=20 -ioengine=libaio -bs=4k -size=1G -numjobs=50 -runtime=60 -name=fio_randrw4k -group_reporting

                            测试结果

                            IOPS write: 3174

                            IOPS read: 12.7k

                            BW write: 12.4MiB/s

                            BW read:49.6MiB/s

                            LAT write: min=717, max=601613, avg=8937.87, stdev=31338.40

                            LAT read:min=5, max=625524, avg=5608.13, stdev=24048.41

                            5.3 性能对比

                            测试类型

                            测试项目

                            IOPS

                            BW

                            LAT

                            物理机

                            4K随机写

                            6409

                            25.0MiB/s

                            15583.58

                            4K随机读

                            32.1k

                            125MiB/s

                            3108.38

                            4K随机读写/80%读

                            16.8k

                            65.7MiB/s

                            4281.64

                            4K随机读写/20%写

                            4212

                            16.5MiB/s

                            6605.51

                            容器

                            4K随机写

                            6047

                            23.6MiB/s

                            16518.81

                            4K随机读

                            30.4k

                            119MiB/s

                            3282.2

                            4K随机读写/80%读

                            12.7k

                            49.6MiB/s

                            5608.13

                            4K随机读写/写

                            3174

                            12.4MiB/s

                            8937.87


                            6 测试结论

                            本次测试基于K1 Power 容器云存储平台,测试验证了分布式文件存储和块存储在容器应用场景下的在线扩容、快照、克隆等生产环境常用功能,其中容器云后端存储采用开源统一分布式存储系统Ceph,提供了高性能,高可用性,高扩展性,作为OpenShift容器云平台后端存储可以保证数据的高可用性,验证了ceph作为容器云平台存储的可行性。从性能测试结果来看,容器内rbd块设备性能与物理机rbd块设备性能相比,大概有6%的损耗。在容器环境中4k小文件读 IOPS 达到3W 以上,得益于K1 Power Linux服务器采用POWER9处理器,支持SMT4,整机物理线程多达176,特别是在小文件处理场景下能快速的响应高并发的前端I/O 请求。


                            附表一:

                            Storage

                            Type

                            ppc64le

                            (Power Systems)

                            S390x

                            (z/LinuxONE)

                            amd64

                            (Intel, AMD)

                            Raw Block

                            RWO

                            1Q 20

                            1Q 21

                            2Q19

                            NFS (Spectrum Scale CES, no dynamic provisioning)

                            RWX

                            2Q 20

                            1Q 20

                            2Q19

                            PowerVC CSI (container storage interface)

                            RWO

                            2Q 20

                            N/A

                            N/A

                            IBM Spectrum Virtualize (CSI) Block

                            RWO

                            2Q 20

                            1Q 20

                            4Q 19

                            IBM Spectrum Scale File

                            RWX

                            4Q 20*

                            4Q 20*

                            4Q 19

                            FC

                            RWO

                            1Q 21

                            1Q 21

                            1Q 20

                            iSCSI

                            RWO

                            4Q 20

                            4Q 20

                            1Q 20

                            HostPath

                            RWO

                            4Q 20

                            4Q 20

                            1Q 20

                            CephFS (OCS) File

                            RWX

                            4Q 20**

                            4Q 20**

                            1Q 20

                            CephRBD (OCS) Block

                            RWO

                            4Q 20**

                            4Q 20**

                            1Q 20

                            VMware vSphere

                            RWO

                            N/A

                            N/A

                            2Q 19

                            RWX = read-write many (shared)        *Dependent on containerized Spectrum Scale (GA in 4Q)

                            RWO = read-write only (dedicated)        ** Planned for OCP/OCS 4,6 


                             资料/文章推荐:


                            欢迎关注社区 “K1 Power”技术主题 ,将会不断更新优质资料、文章。地址:https://www.talkwithtrend.com/Topic/135157





                            文章转载自浪潮商用机器,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论