首页
产品
CLup:PostgreSQL高可用集群平台 CMiner: PostgreSQL中的CDC CData高性能数据库云一体机 CBackup数据库备份恢复云平台 CPDA高性能双子星数据库机 CSYun超融合虚拟机产品 ZQPool数据库连接池 ConshGuard数据保护产品
解决方案
数据库专业技术服务全栈式PostgreSQL解决方案Oracle分布式存储化数据库云PolarDB一体化解决方案
文章
客户及伙伴
中启开源
关于我们
公司简介 联系我们
中启开源
修改标题
往前插入
往后插入
删除

配置ESDisk

1. 原理说明

CData For PolarDB中有一个CFabric模块,其是一套分布式存储软件,可以为PolarDB提供一个共享盘,此共享盘我们称之为ESDisk。

CFabric把本地的磁盘组合成一个高可用的ESdisk共享盘,ESDisk的意思是elastic shared disk。

2. 环境准备

2.1 机器资源

有三台机器:cdata-book-01-03:

主机名 IP
cdata-book-01 10.197.165.21
cdata-book-02 10.197.165.22
cdata-book-03 10.197.165.23

其中每台机器提供2块盘,以cd-polardb-book01-03为例:

2.2 安装依赖

  1. # 在三台机器上分别执行
  2. yum install mdadm xerces-c.x86_64 device-mapper-multipath device-mapper-multipath-libs device-mapper device-mapper-libs device-mapper-event device-mapper-event-libs iscsi-initiator-utils

2.3 关闭SELINUX

/etc/selinux/config中的SELINUX改为disabled,然后重启主机。

验证是否关闭

  1. # 打印出来为Disabled时,即为关闭,打印为Permissive表示只记录不阻拦。
  2. getenforce

3. ESDisk配置

3.1 配置cdpolar.yml

在cdata server端所在主机上修改配置

  1. cd /opt/clup/conf
  2. cp example_cdpolar.yml cdpolar.yml
  3. vim cdpolar.yml

示例配置如下:

  1. hosts:
  2. # 和主机名一致
  3. cdata-book-01:
  4. # 主网卡ip地址,server端需要可以ping通
  5. mip: 10.197.165.21
  6. # 两个辅助网卡的地址,配置共享存储的主机之间互相可以ping通
  7. sips: [172.16.1.21,172.16.2.21]
  8. # 辅助网卡的网段,与上面的sips一一对应,网段不能相同
  9. acl: [172.16.1.0/24,172.16.2.0/24]
  10. iscsi:
  11. # 主机硬盘位置,由于sdx在重启后可能会变化,所以这里指定硬盘pci插槽地址,重启后不会变化
  12. sata01: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:0:0
  13. sata02: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:1:0
  14. cdata-book-02:
  15. mip: 10.197.165.22
  16. sips: [172.16.1.22,172.16.2.22]
  17. acl: [172.16.1.0/24,172.16.2.0/24]
  18. iscsi:
  19. sata01: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:0:0
  20. sata02: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:1:0
  21. cdata-book-03:
  22. mip: 10.197.165.23
  23. sips: [172.16.1.23,172.16.2.23]
  24. acl: [172.16.1.0/24,172.16.2.0/24]
  25. iscsi:
  26. sata01: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:0:0
  27. sata02: /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:1:0
  28. # 共享存储分片
  29. mds:
  30. # 分片1
  31. 1:
  32. # 这里指定具体的硬盘,使用HOST.DISK来表示,HOST和DISK与上面hosts里的配置对应
  33. # 示例:host为cdata-book-01的sata01硬盘可以表示为 cdata-book-01.sata01
  34. cfdisks: [cdata-book-01.sata01, cdata-book-02.sata01, cdata-book-03.sata01]
  35. # 软RAID类型,这里为RAID 1
  36. raid: 1
  37. metadata: 1.2
  38. bitmap_chunk: 1M #可根据硬盘大小来设定,硬盘越大设越大,总和7T的硬盘推荐设置16M
  39. 2:
  40. raid: 1
  41. metadata: 1.2
  42. bitmap_chunk: 1M
  43. cfdisks: [cdata-book-02.sata02, cdata-book-01.sata02, cdata-book-03.sata02]
  44. esdisks:
  45. # 指定esdisk名称(pfs_disk_name)和使用的分片
  46. nvmecsu01: [1, 2]

3.2 初始化操作系统环境

在安装了clup管理模块的机器上配置环境变量(root):

  1. PATH=/opt/clup/bin:$PATH

并在该机器上执行下面的命令:(-n表示主机名,可cdpolar md list查看主机名)

  1. # 初始化系统环境
  2. # 若报错,可加-v 执行命令展示更多信息
  3. cdpolar init_env os -n cdata-book-01
  4. cdpolar init_env os -n cdata-book-02
  5. cdpolar init_env os -n cdata-book-01

eg:

如果我们主机上有infiniband网络,上面的命令还会启动infiniband的opensm服务,即生成服务文件/etc/systemd/system/cfabric_sm@.service:

  1. # /etc/systemd/system/cfabric_sm@.service
  2. [Unit]
  3. Description=cfabric_sm
  4. After=network.target
  5. [Service]
  6. Type=simple
  7. User=root
  8. ExecStart=/usr/sbin/opensm --config /opt/clup-agent/conf/sm%i.conf
  9. [Install]
  10. WantedBy=multi-user.target

做完上面的操作,把这三台数据库主机重启一下,等重启之后,在做后续的操作。

检查是否初始化成功的方式(每台主机每个都需要成功):

(1)初始化机器后会在/etc/systemd/system目录下生成一个cfabric_sm@.service服务,运行的是cfabric_sm@1.servicecfabric_sm@2.service两个服务。

检查有无生成cfabric_sm@.service服务文件。

  1. ls -l /etc/systemd/system

(2)初始化机器后查看ps -ef | grep opensm应有cfabric_sm@1或者cfabric_sm@2两个进程在运行。

  1. ps -ef | grep opensm

(3)使用ibstat命令查看应两个接口状态应都为active。

  1. ibstat

(4)查看存储服务状态,两个cfabric_sm服务应都是active状态:

  1. systemctl status cfabric_sm@1
  2. systemctl status cfabric_sm@2

若状态为failed可启动该服务:

  1. systemctl start cfabric_sm@2

可能会报如下警告:

Warning: The unit file, source configuration file or drop-ins of cfabric_sm@2.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.

输入以下命令然后再次启动该服务

  1. systemctl daemon-reload

3.3 格式化盘

这里的格式化是指ESDisk本身的格式化操作。

给ESDisk使用的物理硬盘上面可能建过文件系统或做为其它用户,为了保证格式化成功,需要把这些此磁盘的盘头清零,注意此动作会把这些盘上的数据都破坏掉:

  1. dd if=/dev/zero of=/dev/sdX bs=10MB count=1
  2. dd if=/dev/zero of=/dev/sdY bs=10MB count=1

注意要把上面的sdX和sdY换成实际给ESDisk使用的数据盘的盘符,千万不能搞错了,特别是前面重启一下机器后盘符可能会发现变化(可以通过盘的大小或其它的特征来确定是哪块盘)!!!

执行一下ESDisk的格式化:(-e表示esdisk名称,可cdpolar esdisk list查看esdisk名称)

  1. cdpolar esdisk format -e nvmecsu01

运行后需要输入I know the danger来进行格式化盘。如果格式化失败,请先查找原因后,再进行后续的操作。(可加-v 执行该命令显示更多信息)

格式化成功示例:(注意分片号为实际分片号)

3.4 开启共享

首次开启共享时请先关闭共享在开启共享,防止共享实际未完全关闭。

关闭共享

  1. cdpolar esdisk unshare -e nvmecsu01

开启共享

  1. cdpolar esdisk share -e nvmecsu01

查看是否共享成功:

  1. cdpolar esdisk status

正确示例:

3.5 挂载esdisk

查看某个esdisk下的硬盘列表

  1. cdpolar esdisk list

挂载到其中一个机器(若只有一个esdisk,则可省略-e nvmecsu01)

  1. cdpolar esdisk attach -n cdata-book-01 -e nvmecsu01

卸载esdisk(与挂载类似,若只有一个esdisk,则可省略-e nvmecsu01)

  1. cdpolar esdisk detach -n cdata-book-01 -e nvmecsu01

查看其中一个机器的esdisk挂载状态,online表示已挂载、offline表示未挂载

  1. cdpolar esdisk status -n cdata-book-01

可加-p显示更详细的信息,包括各机器的存储路径的使用情况

  1. cdpolar esdisk status -n cdata-book-01 -p

其中path_type的主备关系,即使用哪台主机的存储路径是由主路径主机决定的。可通过如下命令查看主路径主机。

其中primary_path_host列即为主路径主机。

  1. cdpolar esdisk status

若主路径主机发生故障,可把主路径切换到其他主机上

-m 1 表示指定分片,1为分片号(md_id)

  1. cdpolar md switch -m 1 -n cssrv05

目录
img