更新时间:2024-10-12 10:54:49

1 ECeph组网说明

ECeph使用3个网段:

  1. 对象存储业务网络网段:用于对象存储业务网络,对接客户端进行数据读写
  2. 对象存储内部网络网段:用于对象存储内部集群通信,监测服务状态,确保数据完整
  3. 管理网络网段:ECeph管理程序工作网络以及管理页面访问网络

上述3个网段,需要使用2个IP,对应的组网方式为:

  • 业务网络+管理网络:对象存储业务网络、管理网络共用2台千兆或万兆交换机,各节点使用2个千兆网口绑定,连接2个堆叠交换机,实现业务网段冗余。
  • 对象存储内部网络:各节点使用2个10G接口绑定,连接2个堆叠交换机,实现内部网段冗余。

eceph对象存储网络.png

因此,每个ECeph节点至少需要2个IP,另外大于2节点的集群,必须配置业务网络高可用IP。即,一个N(N≥2)节点的ECeph集群,需要N+1个业务IP,N个内部IP。

2 环境要求

要求1:ECeph部署需要提前配置好内部IP。

如下手动配置流程供参考:

手动配置内部IP流程.png

要求2:每个节点运行date命令,确保要加入集群的节点时间在秒级是一致的,若不一致则可能会导致部署失败。

节点时间示例.png

要求3:确保/var目录所在分区至少有20G,其中/var/lib/docker目录包含ECeph相关服务所有镜像,至少占用10G

要求4:检查是否存在/etc/resolv.conf文件,若不存在,则手动创建一个。

3 安装ECeph对象存储服务

3.1 上传安装包

本次安装所涉及的更新包只需要上传到其中一台一体机上。

  1. 建立远程连接:使用SSH(比如Xshell、Putty等)工具,通过IP地址连接服务器后台,默认用户名root,默认port是22,密码为安装操作系统时设置的密码。
  2. 创建安装包目录:在/root目录下创建目录 mkdir -p ~/package/
  3. 上传Proton依赖包和ECeph依赖包:使用TFTP工具将预先下载到本地的依赖包上传到 ~/package/

注:x86平台请上传x86的安装包,ARM平台请上传ARM的安装包。

3.2 安装依赖包

注意:仅以X86平台举例

第一步 解压依赖包

cd ~/package && tar zxf proton-*.tar.gz && tar zxf eceph-*.tar.gz

解压eceph依赖包示例.png

第二步 进入依赖包解压路径下,执行命令进行安装前环境检查
cd proton-packages && ./scripts/proton-cli precheck -p 密码 -t ntp服务器

注:若没有ntp服务器,可指定该参数,需要手动确认节点时间和实际时间一致。

具体检查项说明参考proton-cli precheck 环境检查参数说明

第三步 安装依赖

./install_deps.sh --hosts {node1},{node2},{node3} --with-eceph-remote {node1},{node2},{node3} --ssh-password '密码'

注意:

  1. --hosts {node1},{node2},{node3} #参数为集群所有节点列表
  2. --with-eceph-remote {node1},{node2},{node3} #参数为安装ECeph的节点列表
  3. --with-eceph true #参数为执行节点是否需要安装ECeph依赖(值为true时即安装ECeph依赖,默认为false不安装)
  4. --ssh-password '密码' #参数为节点的ssh密码(多个节点直接ssh密码需要保持一致,如果节点之间已经做好免密则不需要此参数)
  5. 用户名默认为root,端口默认为22

3.3 初始化平台

只需在某一台服务器上初始化并将其它所有节点加入到Kubernetes集群。

3.4 启动初始化向导

cd ~/package/proton-packages && firewall-cmd --add-port 8888/tcp && proton-cli server

注:启动初始化向导会开放临时端口8888

3.5 通过初始化向导初始化平台

第1步 在执行proton-cli server的节点上,使用http://IP:8888登录界面,进行初始化(IP为执行上述操作节点的SSHIP)。如下为初始化示例:

初始化向导界面.png

第2步 选择时间同步配置以及填写SSH远程连接配置

选择时间同步配置以及填写SSH远程连接配置.png

第3步 填入节点配置信息(以下以三节点环境示例)

注意:内部ip在ECeph服务安装下是必填项

  • IPV4示例:

    IPV4示例.png

  • IPV6示例:

    IPV6示例.png

第4步 填入kubernetes配置信息

填入kubernetes配置信息.png

第5步 填写仓库配置信息

填写仓库配置信息.png

第6步 进入基础服务配置(以下步骤均以独立部署ECeph为示例)

注意:仅独立部署ECeph只保留MariaDB组件即可,其他组件可全部删除。

如果ECeph和Anyshare融合部署需要保留所有的组件。

保留MariaDB组件

保留MariaDB组件.png

点击【添加可选服务】,选择ECeph

添加可选服务ECeph.png

  • IPV4虚拟地址配置示例:

    IPV4虚拟地址配置示例.png

  • IPV6虚拟地址配置示例:

    IPV6虚拟地址配置示例.png

ECeph配置项参数说明:

  • 部署节点:选择需要部署ECeph服务的节点

  • 内部虚拟地址:独立部署ECeph该参数可置空不配置;Eceph和Anyshare融合部署时,需要配置内部虚拟地址(单节点部署下不需要配置)。

  • 外部虚拟地址:独立部署Eceph部署节点为1节点时,可不填入外部虚拟地址;Eceph部署节点为2节点及以上时,必须填入外部虚拟地址。

    Eceph和Anyshare融合部署时不需要配置外部虚拟地址。

  • Secret名称、数字证书、证书密钥:如果不需要使用用户侧的证书可直接置空不填入;如需要使用客户侧证书,则需要将数字证书和证书密钥经过base64编码之后填入(记得去掉换行符)。

使用客户侧证书示例如下图:

cat 数字证书.crt | base64 | tr -d '\n'

cat 证书密钥.key | base64 | tr -d '\n'

数字证书和证书密钥经过base64编码.png

指定自定义证书和密钥示例.png

第7步 进入【连接配置】,只保留RDS连接信息,其他连接信息均可删除

只保留RDS连接信息.png

点击完成,进入初始化。初始化成功示例:

初始化成功示例.png

4 配置和初始化ECeph对象存储服务

4.1 初始化集群

在Web界面配置ECeph,使用Kubernetes master节点的SSH IP访问页面。比如:http://X.X.X.X:8003(http://192.168.125.32:8003),并按照导图进行下一步操作。

第1步 写入集群名称

集群初始化-集群名.png

第2步 点击【添加节点】,添加所有ECeph初始化的节点

集群初始化-节点信息.png

第3步 如果将在该环境中使用一块单独的SSD安装AnyShare,那么需要将该SSD选作ASD盘。如果AnyShare将安装在系统盘,则此处不必设置ASD盘。其他不被用作数据存储的磁盘需要设置为保留盘(如系统盘日志分区默认为5GB)

集群初始化-缓存策略.png

第4步 激活ECeph

集群初始化-配置完成.png

集群初始化-集群初始化.png

第5步 初始化完成,点击【确定】

集群初始化-初始化成功.png

4.2 添加保护域

第1步 界面自动跳转到登录界面,使用admin/eisoo.com登录控制台,点击进入【系统管理】→【保护域】页面,点击【添加保护域】

添加保护域-入口.png

添加保护域-添加保护域.png

第2步 在添加保护域页面,输入待添加的保护域名称,点击图中的箭头符号,将可用节点及其磁盘添加到保护域新建区下,点击【确认】

注意:添加保护域时,磁盘总数不得低于3块,且至少应选择两个节点加入保护域。

添加保护域-选择节点.png

若添加保护域之后,无提示并且出现下图界面,切换其他Tab页面再切换回【保护域】页面即可发现新添加的保护域显示于保护域页面。

添加保护域-异常页面.png

4.3 设置对象存储

第1步 创建对象存储,点击左边侧边栏【对象存储】,进入配置页面。

设置对象存储-入口.png

第2步 基本配置

输入待添加的站点名称、选择所属保护域,设置默认存储策略,点击【下一步】;

设置对象存储-基础信息.png

设置对象存储-确认.png

设置对象存储-部署成功.png

第3步 添加租户

点击进入【对象存储】→【租户】页面,点击【添加租户】

添加租户-入口.png

添加租户-配置.png

第4步 添加bucket

点击进入【对象存储】→【Bucket】页面,点击【添加Bucket】

添加bucket-入口.png

添加bucket-配置.png

第5步 设置Object生命周期

点击bucket 名称,进入bucket 详细信息页面,添加Object生命周期规则。按要求设置名称,限制前缀默认即可,勾选【清除未完成的分段上传]】。该选项会清除Multipart上传过程中产生的残留废弃数据。默认天数为7,可根据实际情况设置,如设置为30。

设置生命周期-选择bucket.png

设置生命周期-配置.png

第6步 获取S3密钥

点击认证信息下的【显示】按钮, 输入管理员密码,可以获取S3密钥,用于第五章ECeph存储配置。

获取S3密钥.png

4.4 存储池pg均衡

第1步 开启数据均衡

说明:Eceph 7.10.0及之后的版本需要在proton-eceph-node-agent容器中运行(任一容器均可)

进入node-agent容器.png

执行如下命令,开启ceph mgr数据均衡模块,并查看状态

ceph mgr module enable balancer

ceph mgr module ls 可以看到balancer被启动了。

ceph balance status 可以看到当前的均衡模式。

启动mgr均衡模块.png

第2步 设置均衡模式为crush-compat

执行命令

ceph balancer mode crush-compat

设置均衡模式为crush-compat.png

第3步 设置bucket算法为straw2

ceph osd crush set-all-straw-buckets-to-straw2

设置bucket的算法为straw2.png

第4步 查看对象存储所使用的存储池。

ceph osd pool ls detail

上述命令可以看到当前ceph所有存储池,其中池名为创建对象存储时输入的对象存储名,数据池为data.<存储策略>结尾。如3副本池为data.rep3结尾;EC4+2:1为data.ecn42s结尾。

查看存储池-3副本.png

查看存储池-EC.png

第5步 对数据池构建pg均衡计划

ceph balancer optimize plan_A [pool_name]

对数据池进行pg均衡.png

第6步 评估存储池及优化计划

ceph balancer eval plan_A

ceph balancer eval [pool_name]

下图均衡优化计划预期比当前的效果好,则可以执行优化计划,否则没有必要执行。如果优化效果没有达到0.000000,可以反复多次执行。

评估存储池及优化计划.png

第7步 查看计划内容

ceph balancer show plan_A 可查看该计划涉及的改动

查看均衡计划.png

第8步 执行计划

ceph balancer execute plan_A

执行后计划将被丢弃,下图示例由于osd个数较少,均衡很快完成,并达到了预期的score。

执行均衡计划.png

说明:若集群中有新增/删除OSD,建议再进行一次pg均衡。

5 在应用端配置ECeph存储

5.1 AnyShare添加ECeph存储

第1步 添加对象存储

访问https://anyshare_vip/deploy登录部署工作台,点击【数据湖】,弹出列表,点击【对象存储】,在存储设置页面点击【添加存储服务】。

添加存储页面.png

自定义存储名称,存储模式选择【ECeph存储】,产品选择【AnyShare主模块】,启用网关服务,点击【确定】。

说明:只有产品为AnyShare时,才需要启用网关服务;选择为其他产品配置对象存储时,默认不能启用网关服务

添加存储服务.png

第2步 配置对象存储

输入之后配置信息之后,点击【测试】连接成功之后,点击【保存】保存存储配置。(码为创建Bucket时获取到的S3密钥。)

说明:https默认端口:10002,http默认端口10001

如果是内置Eceph,服务器地址填写集群内部高可用IP,如果是外置Eceph,服务器地址填写外置Eceph地址。

存储服务配置.png

第3步 设置默认存储

添加存储成功后,点击操作按钮,选择编辑存储服务,设置默认存储

编辑存储服务.png

设置默认存储.png