# ceph-binary-deploy-v1 **Repository Path**: fastshadow/ceph-binary-deploy-v1 ## Basic Information - **Project Name**: ceph-binary-deploy-v1 - **Description**: ceph二进制部署脚本,纯bash方案,可生产部署。 - **Primary Language**: Shell - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-11 - **Last Updated**: 2024-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1,填写ceph_cluster.env全局配置环境文件 2,编写conf/hosts文件 3,按需编写conf/ceph.conf文件 4、编写ceph-osd.map文件 5,执行pre-system-init.sh文件 6、执行ceph-deploy-all.sh文件 0,摧毁集群执行destroy_all_ceph_cluster.sh 2024-06-20 14:15:08 星期四# ceph部署文档 ## 部署方案描述 本方案基于ceph官方社区开源ceph-volume部署脚本衍生,是我于22年应腾讯开源专家耿航的号召完全独立编写的,初衷是为opencloudos提供简单有效的生产可用型高性能ceph集群开源部署方案,是目前最稳定的纯shell脚本开源高性能ceph部署方案 遵循木兰开源1.0协议 开源地址:https://gitee.com/fastshadow/ceph-binary-deploy.git **优势:** - 主要组件由我独立编写,知根知底,无学习时长 - 基于官方二进制手动部署方案衍生,兼容性好,遵循木兰社区开源协议 - 支持osd bcache方案 - 支持bluestore文件系统block wal、db分区部署 - 基于shell脚本编写,易于修改,执行依赖少,可移植性好 - 模块化设计,可扩展性强,稍加修改可作为上kubernetes的容器初始化脚本 **劣势** - 使用本方案部署的ceph集群不再支持社区原生脚本操作,包括ceph-deplay、cephadm、ceph-volume、ceph-disk等 - 方案未支持的组件无法通过其它社区部署方案部署,只能使用orch或手动部署 - 由于使用了bcache,osd换盘目前只能按流程手动执行换盘步骤,当前尚不支持自动化操作 ## 部署流程 ### 部署方案设计 #### 存储网络设计 存储网络必须都监听在万兆网络上,否则存储延迟会极高,严重影响性能 - 部署管理网络: 千兆网卡,独立CIDR,ip数量满足所有存储节点,可以存在网关,用于集群部署管理和运维 - 存储业务网络: 万兆网卡,独立CIDR,ip数量满足所有存储节点+所有客户端主机,可以存在网关,用于ceph对外提供存储服务,mon、mgr、mds、osd都监听此网络 - 存储集群网络: 万兆网卡,独立CIDR,ip数量满足所有存储节点,无需网关,用于osd心跳通信、副本分裂、recover、backfill、rebalance等数据交互 | 网络名称 | 网络VLAN | CIDR | | ----------- | -------- | ----------------- | | 部署管理网络 | 301 | 192.168.24.96/28 | | 存储业务网络 | 303 | 192.168.24.48/28 | | 存储集群网络 | 302 | 192.168.24.16/28 | #### 存储架构设计 根据缓存盘SSD类型设计存储架构: - 从性能上考虑一般原则为SATA协议SSD缓存盘最多1拖5数据机械硬盘,NVME协议SSD几乎无上限,只要容量允许,可以拖任意多机械硬盘,但是考了到故障域等问题,建议最多1拖18. - 从容量上考虑一个机械数据硬盘对应SSD缓存盘上3个分区,分别是block db,block wal,bcache part,三个分区大小需要在部署初期定义,部署完成之后无法再调整大小,block db越大越好,常规为35G,block wal一般不超过10G,bcache part一般不超过70G - 本脚本使用block db分区容量为2G,block wal分区容量为4G ### 存储节点 OpenStack没有存储节点的概念,存储节点定义为OpenStack云平台提供块存储的存储服务节点。 ##### 资源配置列表 |数量|CPU|MEM|NIC|系统盘|缓存盘|数据盘|IPMI| |----|---|---|---|---|---|----|----| | 3|64<=|256G=<|10G\*6|480G=<\*2|SSD 400G\*6|12T\*18|必要| ##### 资源配置说明 - CPU:高频CPU,对核数要求不高,线程数按1个osd 8线程计算即可 - MEM:按一个osd占据3G~6G计算,其它服务各按2G计算 - NIC:不低于两个万兆网口 - HDD:至少一个480G系统盘,数据盘按实际需求规划 - SSD:按实际需求规划 - IPMI:兼容openipmi协议 ### 初始化操作系统 #### 编辑conf/hosts文件(如openstack步骤已执行本步骤操作,则跳过步骤) 按照如下格式编辑conf/hosts文件 ``` 127.0.0.1 localhost #编写原则:HOST_NAME.mgmt.DOMAIN #mgmt 192.168.24.110 deploy.mgmt.osk deploy.svc.osk 192.168.24.97 node-1.mgmt.osk conctroller-1.svc.osk 192.168.24.98 node-2.mgmt.osk conctroller-2.svc.osk 192.168.24.99 node-3.mgmt.osk conctroller-3.svc.osk 192.168.24.100 node-4.mgmt.osk compute-1.svc.osk 192.168.24.101 node-5.mgmt.osk compute-2.svc.osk #编写原则:HOST_NAME.CEPH_SERVICE_NAME.ceph.DOMAIN #storage-pub 192.168.24.49 node-1.mon.ceph.osk node-1.mds.ceph.osk node-1.mgr.ceph.osk node-1.osd.ceph.osk 192.168.24.50 node-2.mon.ceph.osk node-2.mds.ceph.osk node-2.mgr.ceph.osk node-2.osd.ceph.osk 192.168.24.51 node-3.mon.ceph.osk node-3.mds.ceph.osk node-3.mgr.ceph.osk node-3.osd.ceph.osk 192.168.24.52 node-4.client.ceph.osk 192.168.24.53 node-5.client.ceph.osk ``` #### 编写环境变量文件 按照如下说明编写部署脚本环境变量文件 ```bash #!/bin/bash Deploy_Path=`cd $(dirname $0); pwd -P` ######################################################## #全局部署参数 ######################################################## #密码定义 #linux操作系统root用户密码 ROOT_PASSWD='IPfs@2021vmh' #mgr admin用户名 MGR_ADMIN_USER='admin' #mgr admin用户密码 MGR_ADMIN_PASS='admin' #节点角色 mon_nodes='node-1 node-2 node-3' mgr_nodes='node-1 node-2 node-3' mds_nodes='node-1 node-2 node-3' osd_nodes='node-1 node-2 node-3' #Deploy_Node就是部署脚本的执行节点,也必须是第一个mon节点 Deploy_Node='node-1.mgmt.osk' #ceph全局部署参数 #管理网域名 Cluster_Domain='mgmt.osk' #ceph集群名,默认为ceph,以后将废弃 Cluster_Name=ceph #填写规划的public network Public_CIDR='192.168.24.48/28' #填写规划的cluster network Cluster_CIDR='192.168.24.16/28' #ssh选项 ssh_port='22' ######################################################## #安装时钟同步服务chrony ######################################################## #是否安装chrony服务 Chrony='no' #指定chrony服务的时钟源 Chrony_Sources='ntp.aliyun.com' ######################################################## #osd相关部署参数 ######################################################## #osd部署类型,当前仅支持bluestore OSD_Type='bluestore' #OSD_Deploy_Mode支持2种部署模式, #1: block.wal和block.db都将与data部署在同一个磁盘设备上,适合全闪或全机械硬盘部署 #2: block.wal和block.db与data分开部署,block.wal和block.db部署在同一个高性能设备的不同分区上(如果启用了bcache,则bcache缓存也将部署在该设备的分区上),data单独部署在低速设备上 #当前仅支持mode 2 OSD_Deploy_Mode='2' #单节点上部署的osd总数 Node_OSDs=4 #是否强制清空硬盘数据 Force_Wipe_OSD_Device='yes' #是否启用bcache Enable_BCache='true' #################### #以GB为单位 #bluestore block_db数据库分区大小,实际根据cache盘大小计算,与机械盘容量成正比,理论上越大越好,最低35G Block_DB_Size=35 #bluestore block_wal日志分区大小,实际根据cache盘大小计算,一般为10G或20G,最大30G,再高就没太大意义了 Block_WAL_Size=16 #bcache分区大小,一般为10G~70G BCache_Size=30 #################### #bcache调优参数,保持默认即可 #数据盘的扇区大小,一般为512,现在也有4k规格硬盘,需要查看硬盘型号 BCache_Block_Size=512 #缓存盘的擦除块大小,一般ssd默认都是4m BCache_Bucket_Size=4m #限制osd预分配内存大小 Osd_Memory_Target=1073741824 ``` #### 配置管理网ssh免密认证 ```bash # cd到ceph-ubuntu-deploy目录,执行如下命令 ./pre-init-system.sh ``` #### 安装ceph及其依赖 ```bash # cd到ceph-ubuntu-deploy目录,执行如下命令 ./install-packages-allnodes.sh ``` #### 收集设备信息 ```bash # cd到ceph-ubuntu-deploy目录,执行如下命令 ./report_node_block_device.sh # 采集的信息放在device_info目录中 ``` #### 编写ceph-osd.map ```bash # cd到ceph-ubuntu-deploy目录根据采集回来的设备信息编写ceph-osd.map # 格式说明: : ...... # 如果一个节点有多个缓存盘,则每个缓存盘都另起一行书写 # 示例如下 node-1.mgmt.osk sda:sdc sdd node-1.mgmt.osk sde:sdf sdg node-2.mgmt.osk sda:sdc sdd node-2.mgmt.osk sde:sdf sdg node-3.mgmt.osk sda:sdc sdd node-3.mgmt.osk sde:sdf sdg ``` #### 执行部署脚本 ```bash #cd到ceph-ubuntu-deploy目录,执行下面命令 ./ceph-deploy-all.sh ``` #### 查看部署进度 ```bash # cd到ceph-ubuntu-deploy目录,执行如下命令 tail -f logs/ceph-********.log ``` #### 部署完成后验证 ```bash #执行ceph -s 命令查看ceph集群状态 ceph -s ```