1.ceph安装原理
ceph分布式存储由若干个组件组成,包括:Ceph Monitor、Ceph OSD和Ceph .MDS,其中如果你仅使用对象存储和块存储时,MDS不是必须的,仅当你用使用Cephfs时,MDS才是需要安装的。
ceph的安装模型与k8是有些类似,也是通过一个deploy node远程操作其他Node以进行create、prepare和activate各个node上的组件,官方给的组件示意图如下.
Ceph 安装前准备,环境与拓扑图如下:
主机名 | 外网IP | 内网IP | 安装组件 | 磁盘块 |
c720181 | 172.22.69.84 | 192.168.20.181 | ceph-deploy osd | sdb |
c720182 | 172.22.69.85 | 192.168.20.182 | mon osd | sdb |
c720183 | 172.22.69.86 | 192.168.20.183 | mon osd | sdb |
c720184 | 172.22.69.95 | 192.168.20.184 | cli |
|
2.本次安装实际环境
ceph-deploy 192.168.0.101
ceph-node1 192.168.0.101
ceph-node2 192.168.0.102
ceph-node3 192.168.0.103
ceph-node4 192.168.0.104
3.环境准备
-
配置host(各主机)
vim /etc/hosts ceph-node1 192.168.0.101 ceph-node2 192.168.0.102 ceph-node3 192.168.0.103 ceph-node4 192.168.0.104
-
创建ceph账户(各节点)
useradd -d /home/${username} -m ${username} passwd ${uasername} cat << EOF > /etc/sudoers.d/ceph ceph All = (root) NOPAASSWD ALL EOF #创建账户ceph,官方不支持root,不推荐root,请注意。 登录设备后,创建ceph用户 useradd -d /home/ceph -m ceph 为ceph用户修改密码 passwd ceph 为用户添加root权限 sudo echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph sudo chmod 0440 /etc/sudoers.d/ceph 在两个osd 设备上建立相同的ceph用户 和密码 检查是否存在ssh服务 如果不存在,则需要安装一个 sudo apt-get install openssh-server
-
配置免密登陆(各节点)
ssh-keygen(各节点) #回车 #回车 #回车 完成后, /home/ceph/.ssh/ 路径下: admin-node 多了文件 id_rsa、id_rsa.pub 和 known_hosts; node1, node2, node3 多了文件authorized_keys。 # 然后把master上的公钥拷贝到其他的节点上去(各节点) ssh-copy-id ceph@ceph-node2 ssh-copy-id ceph@ceph-node3 #编辑ssh配置文件,可使ceph远程登陆的时候直接 ssh ceph-node2 (=ssh ceph@ceph-node2) 修改~/.ssh/config 文件 修改 ~/.ssh/config 文件(没有则新增),这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了。 // 必须使用sudo cat > ~/.ssh/config <<EOF(各节点) $ sudo vi ~/.ssh/config Host ceph-node1 Hostname ceph-node1 User ceph Host ceph-node2 Hostname ceph-node2 User ceph Host ceph-node3 Hostname ceph-node3 User ceph EOF chmod 600 config yum install ceph-deploy -y
-
安装ntpd(主要是为了时钟同步)(各节点)
yum install ntpdate -y &&ntpdate 0.asia.pool.ntp.org
-
安装ceph源(各节点)
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org* yum clean all yum makecache
-
安装ceph-deploy(ceph-node1)
su - ceph mkdir ceph-cluster cd ceph-cluster ceph-deploy new ceph-node1 #创建ceph新集群,ceph-node1是monit监控节点主机名
-
安装ceph(各节点)
yum install ceph
-
创建并初始化监控节点(ceph-node1)
cd ceph-cluster ceph-deploy mon create-initial
-
查看各节点ceph存储节点硬盘情况
ceph-deploy disk list ceph-node1 ceph-deploy disk list ceph-node2 ceph-deploy disk list ceph-node3
-
创建数据节点(各节点),因为我只是测试没有没有挂载多余硬盘
#ceph-node1 sudo mkdir -p /data/osd0 && sudo chmod -R 777 /data/ sudo chown -R ceph:ceph /data #ceph-node2 sudo mkdir -p /data/osd1 && sudo chmod -R 777 /data/ sudo chown -R ceph:ceph /data #ceph-node3 sudo mkdir -p /data/osd2 && sudo chmod -R 777 /data/ sudo chown -R ceph:ceph /data
-
各虚拟机添加硬盘,并立即生效,格式为xfs格式。(各节点)
#虚拟机添加磁盘 echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan fdisk -l fdisk /dev/sdb #n #p #1 #entry #enty #w mkfs.xfs /dev/sdb1
-
挂载磁盘到/data/osdx(各节点)
mount /dev/sdb1 /data/osdx
-
准备OSD(ceph-node1)
cd ceph-cluster ceph-deploy osd prepare ceph-node1:/data/osd0 ceph-node2:/data/osd1 ceph-node3:/data/osd2
-
激活OSD(ceph-node1)
cd ceph-cluster ceph-deploy osd activate ceph-node1:/data/osd0 ceph-node2:/data/osd1 ceph-node3:/data/osd2
-
为了防止挂载好的磁盘下次重启或者开机生效,我们修改编辑/etc/fstab
vim /etc/fstab #ceph-node1 /dev/sdb1 /data/osd0 xfs defaults 0 0 #ceph-node2 /dev/sdb1 /data/osd1 xfs defaults 0 0 #ceph-node3 /dev/sdb1 /data/osd2 xfs defaults 0 0
-
ceph-deploy将配置文件和管理秘钥复制到管理节点和它的ceph节点。(ceph-node1)
cd ceph-cluster ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
-
更改文件权限
sudo chown -R ceph:ceph /etc/ceph
-
查看集群健康状态
ceph health
-
创建文件系统(ceph-node1)
ceph-deploy mds create ceph-node1 ceph mds stat
-
查看pool,pool是存储数据时的逻辑分区,起到namespace作用。
ceph osd lspools
-
创建ceph集群
ceph osd pool create cephfs_data 10
-
创建ceph元数据
ceph osd pool create cephfs_metadata 10
-
创建一个文件系统
ceph fs new myceph cephfs_metadata cephfs_data ceph mds stat
-
查看集群状态
ceph -s
-
客户端安装ceph-fuse,并创建挂载目录(ceph-node4)
yum install -y ceph-fuse mkdir /cephfs
-
复制配置文件到client
rsync -e "ssh -p22" -avp root@192.168.0.101:/etc/ceph/ceph.conf /etc/ceph/
-
复制秘钥到client
rsync -e "ssh -p22" -avp root@192.168.10.200:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
-
查看ceph授权client
ceph auth list
-
挂载文件到cephfs,并查看
mkdir /cephfs ceph-fuse -m 192.168.0.101:6789 /cephfs df -Th
-
卸载挂载
umount/cephfs
-
常用命令集
查看ceph集群状态:ceph -s 查看mon状态:ceph mon stat 查看msd状态:ceph msd stat 查看osd状态:ceph osd stat 查看osd目录树(可以查看每个osd挂在哪台机,是否已启动):ceph osd tree 查看机器的健康状态:ceph health 查看ceph实时运行装填 ceph -w 检查信息状态 ceph -s 查看ceph存储状态 ceph df 清除节点数据: ceph-deploy purge ceph-nodex ceph-deploy purgedata ceph-nodex #我发现清除后ceph-repo也会被清除,请注意 为ceph创建一个admin用户并为admin用户创建一个密钥,把密钥保存到/etc/ceph目录下: # ceph auth get-or-create client.admin mds 'allow' osd 'allow ' mon 'allow ' > /etc/ceph/ceph.client.admin.keyring 查看ceph集群中的认证用户及相关的key:ceph auth list 查看mon的状态信息: ceph mon stat 查看mon选举状态: ceph quorum_status 查看mon映射信息 ceph mon dump
最近在学习rook,想了解下ceph知识,未做深入了解,仅想理解原理和基本操作。
基本的原理和概念,请看链接,我选取的都是精华。