安装部署ceph

一、基础环境描述
本次ceph部署实验使用三台虚拟机
操作系统 CentOS 7.7
虚拟机硬件:4C 2G
每台虚拟机的磁盘:160G 用于rootvg , 50G 用于OSD


二、Ceph软件安装的准备
1. 安装epel源(Ceph依赖的一些包在centos标准源里没有,所以需要epel源)
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2. 下载ceph.repo源配置文件(这会创建ceph.repo文件)
wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo

实际上ceph.repo就是如下的内容,如果下载实在很慢,就手动创建ceph.repo文件,把内容粘贴进去
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1


三、主机操作系统的准备
1. 主机名和IP地址规划
##public network
172.24.1.191 p-ceph1
172.24.1.192 p-ceph2
172.24.1.193 p-ceph3

##Storage network
10.27.199.191 ceph1
10.27.199.192 ceph2
10.27.199.193 ceph3

注:公共网络用于管理,存储网络是专有的,仅供集群内部使用

2. 修改主机名(指定存储网络的主机名)
hostnamectl set-hostname ceph1
hostnamectl set-hostname ceph2
hostnamectl set-hostname ceph3

3. 时间服务配置
所有ceph节点必须具有相同的时间,因此需要为它们配置时间服务。
假设已经有一个配置好的内网时间服务器172.20.100.151
修改ceph节点的/etc/chrony.conf,注释掉原有的server行,然后添加新server行
server 172.20.100.151 iburst

启动chronyd服务,并设置为随主机启动
systemctl start chronyd
systemctl enable chronyd

4. 创建ceph管理账户
useradd -d /home/stgadm -m stgadm
passwd stgadm

5. 配置ceph管理账户免密码sudo执行root命令
创建/etc/sudoers.d/stgadm文件,添加以下内容
stgadm ALL = (root) NOPASSWD:ALL

修改/etc/sudoers.d/stgadm文件权限
chmod 0400 /etc/sudoers.d/stgadm

6. 配置ceph管理账户的ssh互信
切换到stgadm账户,执行命令生成密钥(注意,在产生密钥的过程中不需要输入任何字符,直接回车)
ssh-keygen

把生成的密钥拷贝到其他节点
ssh-copy-id stgadm@ceph1
ssh-copy-id stgadm@ceph2
ssh-copy-id stgadm@ceph3

注,确保每个节点都有其他节点的密钥:
节点ceph1上执行
ssh-copy-id stgadm@ceph2
ssh-copy-id stgadm@ceph3
节点ceph2上执行
ssh-copy-id stgadm@ceph1
ssh-copy-id stgadm@ceph3
节点ceph3上执行
ssh-copy-id stgadm@ceph1
ssh-copy-id stgadm@ceph2

验证免密码执行命令(通过ssh远程执行命令不要求输密码)
ssh ceph1 date
ssh ceph2 date
ssh ceph3 date


7. 防火墙放行端口(在所有节点上以root用户执行)
放行ceph监视端口tcp 6789
firewall-cmd --zone=public --add-port=6789/tcp --permanent

放行ceph OSD通信端口tcp 6800至tcp 7300
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

使防火墙配置生效
sudo firewall-cmd --reload


8. 暂时禁用selinux(配置完ceph之后再开启)
sudo setenforce 0

四、ceph集群配置
1. ceph管理节点的配置
仅在ceph1节点上,创建集群管理目录(由stgadm用户执行)
sudo mkdir /my-cluster
cd /my-cluster

2. 在所有三个节点上,安装ceph-deploy包
sudo yum install -y https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm

3. 创建ceph集群监视节点(至少指定一个节点,会要求输入非当前节点的密码)
sudo ceph-deploy new ceph1 ceph2 ceph3

4. 在所有三个节点部署ceph集群(这个过程要求输入其他节点的root密码,并从网络下载安装包,可能相当缓慢)
sudo ceph-deploy install ceph1 ceph2 ceph3

5. 配置初始监视,收集所有密钥:
sudo ceph-deploy mon create-initial

6. 为节点分配秘钥和配置文件
sudo ceph-deploy admin ceph1 ceph2 ceph3

7. 配置管理节点(至少创建一个管理节点)
sudo ceph-deploy mgr create ceph1 ceph2 ceph3

8. 查看节点上的可用磁盘
sudo ceph-deploy disk list ceph1 ceph2 ceph3


9. 创建osd(每台虚拟机上的一个50G磁盘)
sudo ceph-deploy osd create --data /dev/sdb ceph1
sudo ceph-deploy osd create --data /dev/sdb ceph2
sudo ceph-deploy osd create --data /dev/sdb ceph3

附:擦除磁盘的命令
sudo ceph-deploy disk zap ceph1 /dev/sdb
sudo ceph-deploy disk zap ceph2 /dev/sdb
sudo ceph-deploy disk zap ceph3 /dev/sdb


附:如果部署ceph出现无法解决的问题想从头再来,可以使用下面的命令
删除ceph软件包
ceph-deploy purge {ceph-node} [{ceph-node}]...

清理ceph数据
ceph-deploy purgedata {ceph-node} [{ceph-node}]...
ceph-deploy forgetkeys


10. 集群状态检查
sudo ceph -s

[stgadm@ceph1 ~]$ sudo ceph -s
  cluster:
    id:     580998f2-e760-4a39-9a04-8d1f7baf439e
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1
    mgr: ceph1(active)
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   3.01GiB used, 147GiB / 150GiB avail
    pgs:     


12. 集群健康检查
sudo ceph health

[stgadm@ceph1 ~]$ sudo ceph health
HEALTH_OK

可以查看集群健康细节,如果返回值不是HEALTH_OK时,使用detail对诊断问题有用
sudo ceph health detail

13. 查看已有的osd磁盘
sudo ceph osd tree

[stgadm@ceph1 ~]$ sudo ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF 
-1       0.14639 root default                           
-3       0.04880     host ceph1                         
 0   hdd 0.04880         osd.0      up  1.00000 1.00000 
-5       0.04880     host ceph2                         
 1   hdd 0.04880         osd.1      up  1.00000 1.00000 
-7       0.04880     host ceph3                         
 2   hdd 0.04880         osd.2      up  1.00000 1.00000 


14. 创建ceph池
sudo ceph osd pool create voting-pool 50 50       ##最后两个数字分别是pg_num和pgp_num
sudo ceph osd pool create asm-pool 50 50       ##最后两个数字分别是pg_num和pgp_num

PG是placement groups(放置组)的缩写。CRUSH先将数据分解成一组对象,然后根据对象名称、复制级别和系统中的PG数量等信息执行哈希运算,生成PG ID(PG号)。
PG是一个包含多个对象的逻辑容器,该逻辑容器被映射到多个OSD上。如果不使用PG,在成千上万个OSD上管理和跟踪数亿对象的复制和传播将是一个巨大挑战。如果没有PG,管理海量对象所消耗的计算资源也是不可想象的。
建议在每个OSD上配置50~100个PG。

Ceph集群中的PG总数:
PG总数 = (OSD总数 * 100) / 最大副本数      ## 舍入到最接近的2的N次方幂的值。

Ceph集群中每个池的PG总数:
存储池PG总数 = (OSD总数 * 100 / 最大副本数) / 池数

每个存储池中的PG数和每个OSD中的PG数对于降低OSD的方差、避免速度缓慢的恢复再平衡进程是相当重要的。

PGP是为了实现定位而设置的PG,它的值应该和PG总数(即pg_num)保持一致。对于一个ceph池,如果增加pg_num,也应该把pgp_num调整为相同值,这样集群才会开始再平衡。
参数pg_num定义PG的数量,PG被映射至OSD。当任何一个池的PG数被增加时,PG依然保持和源OSD的映射关系,因此Ceph不会有再平衡动作。而当pgp_num的值被增加,PG才会被从源OSD迁移至其他OSD,此时再平衡才会开始。

为了避免大规模再平衡动作导致I/O降级,建议采用增加pool的办法来对ceph集群扩容。

15. 查看已有的ceph池
sudo ceph osd lspools

[stgadm@ceph1 my-cluster]$ sudo ceph osd lspools
1 voting-pool
2 asm-pool


16. 创建ceph块设备(注意容量单位不能用小写)
sudo rbd create voting-pool/img-voting-1 --size 2G --image-format 2 --image-feature layering
sudo rbd create voting-pool/img-voting-2 --size 2G --image-format 2 --image-feature layering
sudo rbd create voting-pool/img-voting-3 --size 2G --image-format 2 --image-feature layering

sudo rbd create asm-pool/img-asm-arch-1 --size 10G --image-format 2 --image-feature layering
sudo rbd create asm-pool/img-asm-data-1 --size 30G --image-format 2 --image-feature layering

设置ceph池的应用程序类型,指定为块设备
sudo ceph osd pool application enable voting-pool rbd
sudo ceph osd pool application enable asm-pool rbd


17. 查看池中的块设备
sudo rbd ls --pool voting-pool

[stgadm@ceph1 my-cluster]$ sudo rbd ls --pool voting-pool
img-voting-1
img-voting-2
img-voting-3


18. 映射块设备(注意,可以只在ceph客户端节点上做)
sudo rbd map voting-pool/img-voting-1
sudo rbd map voting-pool/img-voting-2
sudo rbd map voting-pool/img-voting-3
sudo rbd map asm-pool/img-asm-arch-1
sudo rbd map asm-pool/img-asm-data-1


至此,ceph集群的块设备已经准备好,可以用操作系统命令lsblk看到它们了:
[stgadm@ceph1 my-cluster]$ sudo lsblk
NAME                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0                                                                  2:0    1    4K  0 disk 
sda                                                                  8:0    0  160G  0 disk 
├─sda1                                                               8:1    0    1G  0 part /boot
└─sda2                                                               8:2    0  159G  0 part 
  ├─rootvg-rootlv                                                  253:0    0   50G  0 lvm  /
  └─rootvg-swaplv                                                  253:1    0    4G  0 lvm  [SWAP]
sdb                                                                  8:16   0   50G  0 disk 
└─ceph--2be235e1--6054--4ed8--a30c--ca0099f10219-osd--block--9fc2735f--5630--4fa5--8924--d7ecdb047084
                                                                   253:2    0   50G  0 lvm  
sr0                                                                 11:0    1 1024M  0 rom  
rbd0                                                               252:0    0    2G  0 disk 
rbd1                                                               252:16   0    2G  0 disk 
rbd2                                                               252:32   0    2G  0 disk 
rbd3                                                               252:48   0   10G  0 disk 
rbd4                                                               252:64   0   30G  0 disk 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值