Ceph分布式存储(luminous)部署文档
环境
ubuntu18.04
ceph version 12.2.7 luminous (stable)
三节点
配置如下
node1:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)
node2:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)
node3:1U,1G mem,20G disk,两块空硬盘(sdb,sdc)
role | hostname | ip |
---|---|---|
dep(部署节点) | node1 | 192.168.113.5 |
mon(监控节点) | node1,node2,node3 | 192.168.113.5,192.168.113.3,192.168.113.4 |
ods(存储节点) | node1,node2,node3 | 192.168.113.5,192.168.113.3,192.168.113.4 |
基本环境搭建(所有节点)
关闭系统 NetworkManager 服务
systemctl stop NetworkManager 临时关闭
systemctl disable NetworkManager 永久关闭网络管理命令
关闭selinux、防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
时间同步
注意
ntp同步时间失败,可能是上层路由封锁udp123端口,
我们只能通过tcp来同步时间,具体操作如下
查看时间服务器的时间:
rdate time-b.nist.gov
设置时间和时间服务器同步:rdate -s time-b.nist.gov
下面有其他的ntp服务器地址
time.nist.gov
time-b.nist.gov
216.118.116.105
rdate.darkorb.net
202.106.196.19
time-b.timefreq.bldrdoc.gov
ntp1.aliyun.com
设置hostname
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
修改/etc/hosts文件
192.168.113.3 node1
192.168.113.4 node2
192.168.113.5 node3
设置ssh免密登录
ssh-keygen 一路回车
ssh-copy-id node{1,2,3}
验证一下ssh node2
更新重启
apt update -y && reboot
ceph部署
验证网络
验证所有节点能够ping通外网
安装ceph-deploy
apt update -y
apt install ceph-deploy -y
创建集群
如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:
ceph-deploy purgedata node1 node2 node3
ceph-deploy forgetkeys
用下列命令可以连 Ceph 安装包一起清除:
ceph-deploy purge node1 node2 node3
如果执行了 purge
,你必须重新安装 Ceph 。
在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy
执行如下步骤。
创建集群。
ceph-deploy new node1 node2 node3
在当前目录下用
ls
和cat
检查ceph-deploy
的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。详情见 ceph-deploy new -h 。把 Ceph 配置文件里的默认副本数从
3
改成1
,这样只有两个 OSD 也可以达到active + clean
状态。把下面这行加入[global]
段:osd pool default size = 1
如果你有多个网卡,可以把
public network
写入 Ceph 配置文件的[global]
段下。详情见网络配置参考。public network = {ip-address}/{netmask}
安装 Ceph 。
ceph-deploy install node1 node2 node3
ceph-deploy
将在各节点安装 Ceph 。 注:如果你执行过ceph-deploy purge
,你必须重新执行这一步来安装 Ceph 。配置初始 monitor(s)、并收集所有密钥:
ceph-deploy mon create-initial
完成上述操作后,当前目录里应该会出现这些密钥环:
{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
添加osd
增加/删除 OSD
新增和拆除 Ceph 的 OSD 进程相比其它两种要多几步。 OSD 守护进程把数据写入磁盘和日志,所以你得相应地提供一 OSD 数据盘和日志分区路径(这是最常见的配置,但你可以按需调整)。
从 Ceph v0.60 起, Ceph 支持
dm-crypt
加密的硬盘,在准备 OSD 时你可以用--dm-crypt
参数告诉ceph-deploy
你想用加密功能。也可以用--dmcrypt-key-dir
参数指定dm-crypt
加密密钥的位置。在投建一个大型集群前,你应该测试各种驱动器配置来衡量其吞吐量。详情见数据存储。
列举磁盘
执行下列命令列举一节点上的磁盘:
ceph-deploy disk list {node-name [node-name]...}
擦净磁盘
用下列命令擦净(删除分区表)磁盘,以用于 Ceph :
ceph-deploy disk zap {osd-server-name}:{disk-name} ceph-deploy disk zap osdserver1:sdb
这会删除所有数据。
准备 OSD
创建集群、安装 Ceph 软件包、收集密钥完成后你就可以准备 OSD 并把它们部署到 OSD 节点了。如果你想确认某磁盘或擦净它,参见列举磁盘和擦净磁盘。
ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}] ceph-deploy osd prepare osdserver1:sdb:/dev/ssd ceph-deploy osd prepare osdserver1:sdc:/dev/ssd
prepare
命令只准备 OSD 。在大多数操作系统中,硬盘分区创建后,不用activate
命令也会自动执行activate
阶段(通过 Ceph 的udev
规则)。详情见激活 OSD。前例假定一个硬盘只会用于一个 OSD 守护进程,以及一个到 SSD 日志分区的路径。我们建议把日志存储于另外的驱动器以最优化性能;你也可以指定一单独的驱动器用于日志(也许比较昂贵)、或者把日志放到 OSD 数据盘(不建议,因为它有损性能)。前例中我们把日志存储于分好区的固态硬盘。
Note
在一个节点运行多个 OSD 守护进程、且多个 OSD 守护进程共享一个日志分区时,你应该考虑整个节点的最小 CRUSH 故障域,因为如果这个 SSD 坏了,所有用其做日志的 OSD 守护进程也会失效。
激活 OSD
准备好 OSD 后,可以用下列命令激活它。
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}] ceph-deploy osd activate osdserver1:/dev/sdb1:/dev/ssd1 ceph-deploy osd activate osdserver1:/dev/sdc1:/dev/ssd2
activate
命令会让 OSD 进入up
且in
状态,此命令所用路径和prepare
相同。创建 OSD
你可以用
create
命令一次完成准备 OSD 、部署到 OSD 节点、并激活它。create
命令是依次执行prepare
和activate
命令的捷径。ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}] ceph-deploy osd create osdserver1:sdb:/dev/ssd1
用
ceph-deploy
把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和ceph.client.admin.keyring
了。ceph-deploy admin {admin-node} {ceph-node}
例如:
ceph-deploy admin admin-node node1 node2 node3
ceph-deploy
和本地管理主机(admin-node
)通信时,必须通过主机名可达。必要时可修改/etc/hosts
,加入管理主机的名字。确保你对
ceph.client.admin.keyring
有正确的操作权限。sudo chmod +r /etc/ceph/ceph.client.admin.keyring
检查集群的健康状况。
ceph health
- 添加mgr
ceph-deploy mgr create node1
ceph-deploy mgr create node2
ceph-deploy mgr create node3
启用dashboard (在mon节点)
ceph mgr module enable dashboard
http://ip:7000 访问dashboard
设置dashboard的ip和端口
ceph config-key put mgr/dashboard/server_addr 192.168.246.132
ceph config-key put mgr/dashboard/server_port 7000
systemctl restart ceph-mgr@node1
创建POOL
ceph osd pool create volumes
ceph osd pool create images
ceph osd pool create vms
初始化pool
rbd pool init volumes
rbd pool init images
rbd pool init vms
检查ceph的相关命令
ceph health
ceph -s
ceph osd tree
ceph df
ceph mon stat
ceph osd stat
ceph pg stat
ceph osd lspools
ceph auth list