Ceph 部署 ceph-deploy
网络环境:
双网卡,一个是拱外部存储使用,一个内网卡拱内部集群管理使用。在宿主机的网卡上配置如下虚拟网卡。
vim /etc/sysconfig/network-scripts/ifcfg-virbr2 TYPE=Bridge BOOTPROTO=static DEVICE=virbr2 STP=on ONBOOT=yes IPADDR=192.168.2.1 NETMASK=255.255.255.0
多磁盘环境:
在每个虚拟机上添加多个磁盘,这里示例每个虚拟机使用两个磁盘作为ceph存储使用,这样每个虚拟机一共三个磁盘。
关闭防火墙:
systemctl stop firewalld.service systemctl disable firewalld.service
关闭SeLinux:
setenforce 0 sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux
时间同步:
systemctl start chronyd.service systemctl enable chronyd.service timedatectl set-timezone Asia/Shanghai chronyc -a makestep
hosts:这里使用ceph01,ceph02,ceph03节点作为安装集群使用。
cat > /etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.30 ceph01 192.168.1.31 ceph02 192.168.1.32 ceph03 EOF
在每个节点上安装ceph仓库:
仓库位置:使用minic版本
https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
安装ceph yum源:
rpm -ivh https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
但是里面的yum源是官网的,不是阿里云的要改一下:
[Ceph] name=Ceph packages for $basearch baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc [Ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
安装epel yum源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置root用户的无秘钥登陆:这个主要用来复制文件用的。
ssh-keygen ssh-copy-id root@ceph01
在每个节点上创建普通用户并设定密码:
useradd cephadm && echo qiyang | passwd --stdin cephadm
配置cephadm用户无秘钥使用sudo的权限:
cat > /etc/sudoers.d/cephadm <<EOF cephadm ALL=(root) NOPASSWD: ALL EOF
测试是否可用:
su - cephadm sudo -l ..... User cephadm may run the following commands on ceph01: (root) NOPASSWD: ALL # 出现这个即可
复制sudo的权限文件 /etc/sudoers.d/cephadm 到各个节点:
scp /etc/sudoers.d/cephadm root@ceph01:/etc/sudoers.d/cephadm scp /etc/sudoers.d/cephadm root@ceph02:/etc/sudoers.d/cephadm scp /etc/sudoers.d/cephadm root@ceph03:/etc/sudoers.d/cephadm
配置cephadm用户的免秘钥登陆:这个用户是用来安装ceph用的。实现免秘钥的方式有两种,除了上面的方法还可以用如下方法。
]# su - cephadm ]$ ssh-keygen -t rsa -P '' ]$ ssh-copy-id -i .ssh/id_rsa.pub cephadm@localhost ]$ scp -rp .ssh/ cephadm@ceph01:/home/cephadm/
检查免秘钥是否可用:
]$ ssh ceph02 'date'
安装Ceph
安装ceph-deploy工具:这个工具只在管理节点上安装即可
]$ sudo yum install ceph-deploy python-setuptools python2-subprocess32 -y
在管理节点创建目录:这个目录主要用来存放安装时的临时文件
]$ sudo mkdir /home/ceph-cluster && cd /home/ceph-cluster
使用cephadm用户来安装ceph:
su - cephadm
初始化一个mon节点:
]$ sudo ceph-deploy new --cluster-network 192.168.2.0/24 --public-network 192.168.1.0/24 ceph01
安装ceph集群:
]$ sudo yum -y install ceph ceph-radosgw
安装ceph:--no-adjust-repos 不调整yum源
]$ sudo ceph-deploy install --no-adjust-repos ceph01 ceph02 ceph03
安装监视器MON
安装mon:
]$ sudo ceph-deploy mon create-initial
推送配置文件和秘钥:如果只推送配置文件使用ceph-deploy config命令
]$ sudo ceph-deploy admin ceph01 ceph02 ceph03
给每个节点的keyring文件设置cephadm用户可读:如果不需要这些节点管理的话可以不设置
]$ ssh ceph01 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring' ]$ ssh ceph02 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring' ]$ ssh ceph03 'sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring'
扩展mon节点:生产环境一般为3个,必须是奇数点
]$ sudo ceph-deploy mon add ceph02
查看监视器的状态:
]$ sudo ceph quorum_status --format json-pretty
安装管理节点MGR
创建一个mgr节点:
]$ sudo ceph-deploy mgr create ceph03
扩展mgr节点:mgr属于无状态应用,无需特定节点数
]$ sudo ceph-deploy mgr create ceph02
在管理节点只需安装ceph-common即可:
]$ sudo yum install ceph-common -y
同样需要keyring秘钥:
]$ sudo ceph-deploy admin ceph01
设置权限:
]$ sudo setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring
在管理节点上执行如下命令:此时已近可以看到集群信息了
]$ ceph -s cluster: id: 4866c43f-bb48-473c-8a41-373e57069690 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum ceph02 mgr: ceph03(active) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
创建OSD
列出节点上的磁盘:
]$ sudo ceph-deploy disk list ceph01 ...... [ceph02][INFO ] Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors # 系统盘 [ceph02][INFO ] Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors # 为ceph准备的盘 [ceph02][INFO ] Disk /dev/vdc: 21.5 GB, 21474836480 bytes, 41943040 sectors # 为ceph准备的盘 [ceph02][INFO ] Disk /dev/mapper/centos-root: 14.5 GB, 14503903232 bytes, 28327936 sectors [ceph02][INFO ] Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
擦除某节点上某块磁盘的数据:
]$ sudo ceph-deploy disk zap ceph01 /dev/vdb
创建osd:这里使用的是bluestore,详细命令使用ceph-deploy osd --help
]$ sudo ceph-deploy osd create --data /dev/vdb ceph01 ]$ sudo ceph-deploy osd create --data /dev/vdb ceph02 ]$ sudo ceph-deploy osd create --data /dev/vdb ceph03 ]$ sudo ceph-deploy osd create --data /dev/vdc ceph01 ]$ sudo ceph-deploy osd create --data /dev/vdc ceph02 ]$ sudo ceph-deploy osd create --data /dev/vdc ceph03
查看osd个数:默认情况下至少需要三个osd
]$ ceph -s cluster: id: 4866c43f-bb48-473c-8a41-373e57069690 health: HEALTH_OK services: mon: 1 daemons, quorum ceph02 mgr: ceph03(active) osd: 6 osds: 6 up, 6 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 6.0 GiB used, 108 GiB / 114 GiB avail pgs:
简单使用
创建pool:
]$ ceph osd pool create mypool 64 64 # 两个64分别是PG和PGS
列出pool:
]$ ceph osd pool ls
上传文件:使用ceph自身的api接口上传文件 --pool = -p
]$ rados put fstab /etc/fstab --pool=mypool
列出文件:
]$ rados ls --pool=mypool
查看映射关系:
]$ ceph osd map mypool fstab osdmap e28 pool 'mypool' (1) object 'fstab' -> pg 1.45a53d91 (1.11) -> up ([0,5,4], p0) acting ([0,5,4], p0)
删除:
]$ rados rm fstab --pool=mypool