大纲
ceph 版本信息如下
本次测试使用版本为Octopus 主版本号为15, 并且使用ceph-deploy 2.0.1安装ceph集群
Ceph Octopus 官方文档
相关环境与软件
注意使用 virtualbox 复制的虚拟机 需要修改一下hostname
登录ceph-controller主机,后续安装部署都会从这台机器发出命令,需要让ceph-controller主机 可以对 ceph-osd1 ceph-osd2 ceph-osd3 免密登录
这里为了方便直接使用root用户
生成公私钥
ssh-keygen
复制秘钥
ssh-copy-id root@ceph-osd1
ssh-copy-id root@ceph-osd2
ssh-copy-id root@ceph-osd3
查看防火墙状态
ufw status
如果防火墙状态不是inactive 则需要关闭防火墙
ufw disable
安装 chrony 使ceph集群主机系统时钟与NTP服务器同步
否则ceph -s 可能看到集群健康状态为 health: HEALTH_WARN
clock skew detected on mon.ceph-osd2
集群每个主机安装 chrony
apt install -y chrony
启动 chrony服务
systemctl start chronyd.service
systemctl status chronyd.service
ceph-deploy 是Ceph软件定义存储系统的一部分,用来方便的配置和管理Ceph存储集群
查看ubuntu18.04 apt 对应的ceph-deploy版本
apt-cache madison ceph-deploy
本次安装选择使用 ceph-deploy 2.0.1 ceph-deploy 2.x文档
https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-15.2.16/pool/main/c/ceph-deploy/
配置安装源,这里用了清华镜像的安装源
# 添加镜像源
wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | apt-key add -
echo deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-15.2.16 $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
# apt 更新
apt update
# 再次查询ceph-deploy
apt-cache madison ceph-deploy
安装ceph-deploy 2.0.1
apt install ceph-deploy=2.0.1
ceph-deploy --version
到此 ceph-deploy 安装完成
注意: 以下操作都是在ceph-controller主机上执行
主要操作:
准备一个工作文件夹,用于保存ceph-deploy 部署过程中的各种文件
mkdir -p /ops/ceph-cluster
可以配置环境变量来实现ceph-deploy 使用指定的安装源 (因为本次实验使用的ceph 版本为octopus)
一些常用的镜像安装源
这里用清华镜像的安装源
vi /etc/profile
加入以下环境变量
export CEPH_DEPLOY_GPG_URL=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc
export CEPH_DEPLOY_REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-octopus/
source /etc/profile
命令 ceph-deploy install 【主机】(多个用主机用空格分开)可以安装ceph集群所需的各种安装包
例如
ceph-deploy install ceph-controller 在ceph-controller主机上安装各种所需包
ceph-deploy install ceph-osd1 ceph-osd2 ceph-osd3
安装完成后可以使用ceph -v看到版本
在ceph-controller控制机 /ops/ceph-cluster文件夹下执行ceph-deploy new
ceph-deploy new 能够部署一个默认名称为ceph的新集群,并且生成集群配置文件和密钥文件
初始化集群
ceph-deploy new ceph-controller
在当前目录下会生成ceph.conf文件和ceph.mon.keyring文件
安装mon 与 mgr 监控管理
# 初始化moniter节点,并生成keyring
ceph-deploy --overwrite-conf mon create-initial
注意 mon对应的服务名称为ceph-mon@【主机名称】
例如
ceph-mon@ceph-osd1
ceph-mon@ceph-osd2
ceph-mon@ceph-controller
可以使用
#可以使用ceph-deploy admin 【主机】将admin.keyring复制到做为管理节点的主机上
#命令可以跟多台主机
ceph-deploy admin ceph-controller
执行此命令可以看到在 /etc/ceph文件夹下增加了 ceph.client.admin.keyring文件
#可以使用ceph-deploy mgr create 【主机】创建管理节点,命令可以跟多台主机
ceph-deploy mgr create ceph-controller
使用ceph -s 查看当前ceph集群状态
安装Ceph Dashboard 参考官方文档 https://docs.ceph.com/en/octopus/mgr/dashboard/
apt install ceph-mgr-dashboard
安装完ceph-mgr-dashboard后可能需要重启一下服务
systemctl restart ceph-mgr.target
关闭https,配置IP和端口
ceph config set mgr mgr/dashboard/ssl false
ceph config set mgr mgr/dashboard/server_addr 192.168.0.17
ceph config set mgr mgr/dashboard/server_port 18804
启动 ceph dashboard
ceph mgr module enable dashboard
浏览器访问 http://192.168.0.17:18804/ dashboard成功启动
配置账号
创建账号的命令如下
ceph dashboard ac-user-create 【用户名】 -i 【包含密码的文件】【角色】
例如创建jim 赋予 管理员角色
ceph dashboard ac-user-create jim -i jim.key administrator
使用创建好的账户登录Ddashboard
ceph -s 可以看到当前的ceph集群健康状态
OSD count 0 < osd_pool_default_size 3
ceph集群至少要3个OSD
在Virtualbox上给虚拟机ceph-osd1 ceph-osd2 ceph-osd3加硬盘
选择虚拟机 -》 设置 -》存储 -》添加虚拟硬盘
登录ceph-osd1主机,新增的磁盘已经可以识别
lsblk
新增的磁盘已经可以识别
注意:以下操作需要在ceph-controller主机 /ops/ceph-cluster文件夹下操作
给ceph-osd1 ceph-osd2 ceph-osd3主机安装ceph相关软件
ceph-deploy install ceph-osd1 ceph-osd2 ceph-osd3
如果出现以下错误,需要在ceph-osd1 ceph-osd2 ceph-osd3上安装python (apt install python)
bash: python2: command not found
[ceph_deploy][ERROR ] RuntimeError: connecting to host: ceph-osd1 resulted in errors: IOError cannot send (already closed?)
1 使用ceph-deploy disk list 【主机】可以查看主机可使用的磁盘
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
可使用的磁盘 /dev/sdb
2 使用 ceph-deploy disk zap 【主机 磁盘名称】 格式化磁盘
ceph-deploy disk zap ceph-osd1 /dev/sdb
ceph-deploy disk zap ceph-osd2 /dev/sdb
ceph-deploy disk zap ceph-osd3 /dev/sdb
3 使用 ceph-deploy osd create 创建osd
ceph-deploy osd create ceph-osd1 --data /dev/sdb
ceph-deploy osd create ceph-osd2 --data /dev/sdb
ceph-deploy osd create ceph-osd3 --data /dev/sdb
安装完成后执行ceph -s再次查看ceph集群状态
ceph-deploy osd create 还可以使用更高级的创建方式
如果有更多的磁盘可以使用 –block-db --block-wal 参数
bluestore(裸设备,文件系统方式为filestore)方式,ceph 会在 osd 里面使用 rocksdb 存放对象的元数据,这时候就会有三类数据Object Data Blobs(对象数据)、SST文件(rocksdb数据文件)、wal文件(rocksdb日志文件,类似redis的aof文件),这时候把 sst 或者 wal 文件放在更快的 ssd 或者 NVMe盘上,会提升 osd 储存性能
--data 选项指定的是Object Data存放的硬盘 (不指定--block-db和--block-wal 所有数据都放在--data指定的硬盘上)
--block-db 选项指定的是SST文件存放位置
--block-wal 选项指定的是wal文件存放位置
其中 block-db 大小应该不小于 4% data,也就是说如果 --data 盘 1T,--block-db 应该不小于40G
Ceph集群至少需要一个monitor才能运行,为了高可以用需要部署奇数个monitor,实现仲裁
修改 /ops/ceph-cluster文件夹下的ceph.conf文件添加
public_network = 192.168.0.0/24
ceph-deploy mon create 命令
ceph-deploy --overwrite-conf mon create ceph-osd1
ceph-deploy --overwrite-conf mon create ceph-osd2
注意--overwrite-conf参数 用于覆盖已经存在的ceph.conf
安装完成后执行ceph -s再次查看ceph集群状态 monitor已经成功安装3个
创建一个pool
ceph osd pool create mytest 128 128
保存数据
echo "hello jimliu " > ./1.txt
rados -p mytest put object1 ./1.txt
rados -p mytest ls
ceph -s 查看 health: HEALTH_WARN
1 clock skew detected on mon.ceph-osd2
可能原因是时间不同步
需要各个节点安装NTP软件
2 mon is allowing insecure global_id reclaim
ceph config set mon auth_allow_insecure_global_id_reclaim false