1 ECeph组网说明
ECeph使用3个网段:
- 对象存储业务网络网段:用于对象存储业务网络,对接客户端进行数据读写
- 对象存储内部网络网段:用于对象存储内部集群通信,监测服务状态,确保数据完整
- 管理网络网段:ECeph管理程序工作网络以及管理页面访问网络
上述3个网段,需要使用2个IP,对应的组网方式为:
- 业务网络+管理网络:对象存储业务网络、管理网络共用2台千兆或万兆交换机,各节点使用2个千兆网口绑定,连接2个堆叠交换机,实现业务网段冗余。
- 对象存储内部网络:各节点使用2个10G接口绑定,连接2个堆叠交换机,实现内部网段冗余。
因此,每个ECeph节点至少需要2个IP,另外大于2节点的集群,必须配置业务网络高可用IP。即,一个N(N≥2)节点的ECeph集群,需要N+1个业务IP,N个内部IP。
2 环境要求
要求1:ECeph部署需要提前配置好内部IP。
如下手动配置流程供参考:
要求2:每个节点运行date命令,确保要加入集群的节点时间在秒级是一致的,若不一致则可能会导致部署失败。
要求3:确保/var目录所在分区至少有20G,其中/var/lib/docker目录包含ECeph相关服务所有镜像,至少占用10G
要求4:检查是否存在/etc/resolv.conf文件,若不存在,则手动创建一个。
3 安装ECeph对象存储服务
3.1 上传安装包
本次安装所涉及的更新包只需要上传到其中一台一体机上。
- 建立远程连接:使用SSH(比如Xshell、Putty等)工具,通过IP地址连接服务器后台,默认用户名root,默认port是22,密码为安装操作系统时设置的密码。
- 创建安装包目录:在/root目录下创建目录
mkdir -p ~/package/
- 上传Proton依赖包和ECeph依赖包:使用TFTP工具将预先下载到本地的依赖包上传到
~/package/
ls
注:x86平台请上传x86的安装包,ARM平台请上传ARM的安装包。
3.2 安装依赖包
注意:仅以X86平台举例
第一步 解压依赖包
cd ~/package && tar zxf proton-*.tar.gz && tar zxf eceph-*.tar.gz
第二步 进入依赖包解压路径下,执行命令进行安装前环境检查
cd proton-packages && ./scripts/proton-cli precheck -p 密码 -t ntp服务器
说明:若没有ntp服务器,可指定该参数,需要手动确认节点时间和实际时间一致。
具体检查项说明参考proton-cli precheck 环境检查参数说明
第三步 安装依赖
- 单节点安装
./install_deps.sh --with-eceph true --ssh-password 'SSH密码'
- 多节点安装
./install_deps.sh --hosts {node1},{node2},{node3} --with-eceph-remote {node1},{node2},{node3} --ssh-password 'SSH密码'
说明:
- --hosts {node1},{node2},{node3} #参数为集群所有节点列表
- --with-eceph-remote {node1},{node2},{node3} #参数为安装ECeph的节点列表
- --with-eceph true #参数为执行节点是否需要安装ECeph依赖(值为true时即安装ECeph依赖,默认为false不安装)
- --ssh-password '密码' #参数为节点的ssh密码(多个节点直接ssh密码需要保持一致,如果节点之间已经做好免密则不需要此参数)
- 用户名默认为root,端口默认为22
3.3 启动初始化向导
cd ~/package/proton-packages && firewall-cmd --add-port 8888/tcp && proton-cli server
注意:启动初始化向导会开放临时端口8888
3.4 通过初始化向导初始化K8S平台
第1步 在执行proton-cli server的节点上,使用http://IP:8888登录界面,进行初始化(IP为执行上述操作节点的SSHIP)。如下为初始化示例:
第2步 选择时间同步配置以及填写SSH远程连接配置
仅支持配置单一时间源,默认为使用系统默认,若使用集群中某个节点作为NTF服务器,直接选中此项即可,若选择自定义外部时间服务器,选择最后一项,输入可用的服务器地址,此项为必填项
第3步 填入节点配置信息(以下以三节点环境示例)
注意:内部ip在ECeph服务安装下是必填项
-
IPV4示例:
-
IPV6示例:
第4步 填入kubernetes配置信息
第5步 填写仓库配置信息
注意:若需使用内置仓库,参照基于内置仓库进行K8S集群初始化;若需使用外置仓库,参照基于外置仓库进行K8S集群初始化。
- 基于内置仓库进行K8S集群初始化
- 基于外置仓库进行K8S集群初始化
确认已提供:
-
第三方容器镜像仓库Harbor 2.x,管理员权限的账号。
-
第三方容器镜像仓库已创建这些项目:["as", "proton-public", "ict" ,"proton", "public","all-charts"]。
说明:此处的chart仓库的地址格式为:https://仓库地址/chartrepo/all-charts
仓库地址:自搭建的harbor仓库地址或者已有的仓库地址(如图仓库地址为xuzm.aishu.ml)
第6步 进入基础服务配置
注意:独立部署ECeph可根据需要保留MariaDB组件,其他组件全部删除。
如若需要部署NASGateway,可根据需要额外保留MongoDB组件(如果没有提供外置MongoDB数据库);
如果ECeph和Anyshare融合部署可根据需要保留所有的组件。
部署节点可使用默认值,或者自行选择需要的节点进行部署。
- 数据库组件配置
- 数据库使用自部署的MariaDB组件
说明:一体机环境环境下,MariaDB :Innodb_buffer_size、Request.Memory、Limits.Memory可使用该默认配置,无需修改。虚拟机情况下,可根据自身配置进行修改请求大小。
- 数据库使用第三方数据库
在下一步中配置第三方数据库连接信息即可,MariaDB组件可删除。
- ECeph组件配置
点击【添加可选服务】,选择ECeph
-
IPV4虚拟地址配置示例:
-
IPV6虚拟地址配置示例:
ECeph配置项参数说明:
部署节点:选择需要部署ECeph服务的节点
内部虚拟地址:独立部署ECeph该参数可置空不配置;Eceph和Anyshare融合部署时,需要配置内部虚拟地址(单节点部署下不需要配置)。
外部虚拟地址:独立部署Eceph部署节点为1节点时,可不填入外部虚拟地址;Eceph部署节点为2节点及以上时,必须填入外部虚拟地址。
Eceph和Anyshare融合部署时不需要配置外部虚拟地址。内部虚拟地址和外部虚拟地址要求没有被使用,且内部虚拟地址与内部IP保持在同一网段的地址,外部虚拟地址与节点IP保持在同一网段。
Secret名称、数字证书、证书密钥:如果不需要使用用户侧的证书可直接置空不填入;如需要使用客户侧证书,则需要将数字证书和证书密钥经过base64编码之后填入(记得去掉换行符)。
使用客户侧证书示例如下图:
cat 数字证书.crt | base64 | tr -d '\n'
cat 证书密钥.key | base64 | tr -d '\n'
第7步 进入【连接配置】
说明:ECeph独立部署需要保留RDS连接信息,并填入数据库信息。其他连接信息均可删除。
与其他产品融合部署时,根据需要配置其他连接信息。
- 数据库使用自部署的MariaDB组件配置
- 数据库使用第三方数据库配置(以TiDB为例)
第7步 点击完成,进入初始化。
初始化成功示例:
4 配置和初始化ECeph对象存储服务
4.1 初始化集群
在Web界面配置ECeph,使用Kubernetes master节点的SSH IP访问页面。比如:http://X.X.X.X:8003(http://192.168.125.32:8003),并按照导图进行下一步操作。
第1步 写入集群名称
第2步 点击【添加节点】,添加所有ECeph初始化的节点
第3步 如果将在该环境中使用一块单独的SSD安装AnyShare,那么需要将该SSD选作ASD盘。如果AnyShare将安装在系统盘,则此处不必设置ASD盘。其他不被用作数据存储的磁盘需要设置为保留盘(如系统盘日志分区默认为5GB)。
第4步 激活ECeph
第5步 初始化完成,点击【确定】
4.2 添加保护域
第1步 界面自动跳转到登录界面,使用admin/eisoo.com登录控制台,点击进入【系统管理】→【保护域】页面,点击【添加保护域】。
第2步 在添加保护域页面,输入待添加的保护域名称,点击图中的箭头符号,将可用节点及其磁盘添加到保护域新建区下,点击【确认】。
注意:添加保护域时,磁盘总数不得低于3块,且至少应选择两个节点加入保护域。
若添加保护域之后,无提示并且出现下图界面,切换其他Tab页面再切换回【保护域】页面即可发现新添加的保护域显示于保护域页面。
4.3 设置对象存储
第1步 创建对象存储,点击左边侧边栏【对象存储】,进入配置页面。
第2步 基本配置
输入待添加的站点名称、选择所属保护域,设置默认存储策略,点击【下一步】;
第3步 添加租户
点击进入【对象存储】→【租户】页面,点击【添加租户】
第4步 添加bucket
点击进入【对象存储】→【Bucket】页面,点击【添加Bucket】
第5步 设置Object生命周期
点击bucket 名称,进入bucket 详细信息页面,添加Object生命周期规则。按要求设置名称,限制前缀默认即可,勾选【清除未完成的分段上传]】。该选项会清除Multipart上传过程中产生的残留废弃数据。默认天数为7,可根据实际情况设置,如设置为30。
第6步 获取S3密钥
点击认证信息下的【显示】按钮, 输入管理员密码,可以获取S3密钥,用于第五章ECeph存储配置。
4.4 存储池pg均衡(ECeph 7.15.0及之前版本执行)
说明:ECeph 7.16.0版本开始,存储池pg均衡流程在对象存储创建过程中自动完成,不再需要手动执行。
第1步 开启数据均衡
说明:Eceph 7.10.0及之后的版本需要在proton-eceph-node-agent容器中运行(任一容器均可)
执行如下命令,开启ceph mgr数据均衡模块,并查看状态
ceph mgr module enable balancer
ceph mgr module ls |grep -4 enabled_modules 可以看到balancer被启动了。
ceph balancer status 可以看到当前的均衡模式。
第2步 设置均衡模式为crush-compat
执行命令
ceph balancer mode crush-compat
第3步 设置bucket算法为straw2
ceph osd crush set-all-straw-buckets-to-straw2
第4步 查看对象存储所使用的存储池。
ceph osd pool ls detail
上述命令可以看到当前ceph所有存储池,其中池名为创建对象存储时输入的对象存储名,数据池为data.<存储策略>结尾。如3副本池为data.rep3结尾;EC4+2:1为data.ecn42s结尾。
第5步 对数据池构建pg均衡计划
ceph balancer optimize plan_A [pool_name]
第6步 评估存储池及优化计划
ceph balancer eval plan_A
ceph balancer eval [pool_name]
下图均衡优化计划预期比当前的效果好,则可以执行优化计划,否则没有必要执行。如果优化效果没有达到0.000000,可以反复多次执行。
第7步 查看计划内容
ceph balancer show plan_A 可查看该计划涉及的改动
第8步 执行计划
ceph balancer execute plan_A
执行后计划将被丢弃,下图示例由于osd个数较少,均衡很快完成,score比之前更低(越低越好)。可重复第5步-第8步使之更均衡。
达到最佳均衡状态时,会提示无法进一步优化(Unable to find further optimization)。
说明:若集群中有新增/删除OSD,建议再进行一次pg均衡。
5 在应用端配置ECeph存储
5.1 AnyShare添加ECeph存储
第1步 添加对象存储
访问https://anyshare_vip/deploy登录部署工作台,点击【数据湖】,弹出列表,点击【对象存储】,在存储设置页面点击【添加存储服务】。
自定义存储名称,存储模式选择【ECeph存储】,产品选择【AnyShare主模块】,启用网关服务,点击【确定】。
说明:只有产品为AnyShare时,才需要启用网关服务;选择为其他产品配置对象存储时,默认不能启用网关服务
第2步 配置对象存储
输入之后配置信息之后,点击【测试】连接成功之后,点击【保存】保存存储配置。(码为创建Bucket时获取到的S3密钥。)
说明:https默认端口:10002,http默认端口10001
如果是内置Eceph,服务器地址填写集群内部高可用IP,如果是外置Eceph,服务器地址填写外置Eceph地址。
第3步 设置默认存储
添加存储成功后,点击操作按钮,选择编辑存储服务,设置默认存储
6 已经部署AnyShare的情况下新增ECeph对象存储部署
说明:如果没有按上述流程完成ECeph部署,可以在已经部署了爱数产品(如AnyShare)的环境上新增ECeph对象存储部署。
若已经部署了ECeph,可跳过此节。
6.1 安装Proton依赖和Eceph依赖
参考3.1节和3.2节完成操作。
6.2 部署Eceph
第1步 获取配置文件
在解压的路径下(最新版本解压目录为proton-packages),执行命令获取配置文件:
proton-cli get conf > conf.yaml
注意:在加入eceph配置项前,需要执行命令proton-cli get conf |yq .nodes,查看是否存在internal_ip字段,如果不存在则需要编辑配置文件为[nodes]下各节点加上该字段且填入对应的内部IP
第2步 编辑配置文件,添加ECeph配置
编辑配置文件:vi conf.yaml,在配置文件中加入eceph配置项:
#配置VIP示例
eceph:
hosts:
- node-30-3 #为节点hostname
- node-30-4 #为节点hostname
- node-30-5 #为节点hostname
keepalived:
external: 10.4.30.7/23 #与节点ip同网段,且未被占用,两节点及两节点以上必须要配置(eceph部署单节点可不配置,直接删除该字段)
internal: 10.10.10.7/23 #与节点internal_ip同网段,且未被占用(没有安装AnyShare,可不设置,直接删除该字段)
tls:
#不配置VIP示例
eceph:
hosts:
- node-30-3 #为节点hostname
keepalived: {}
tls:
第3步 应用配置
保存配置之后,执行命令:
proton-cli apply -f conf.yaml -l debug