目录
ceph配置步骤
1.配置无密码连接
2.创建ceph的源
4.准备存储磁盘
5.安装部署软件ceph-deploy
6.部署ceph集群
7.osd共享磁盘服务
存储类型: DAS 直连存储(sata sas)
NAS (网络附加存储)samba nfs ftp 文件系统
SAN (存储区域网络)iscsi 块
(SDS)软件定义存储 分布式存储
传统的存储,当两个电脑都有100t时,存储无法扩大到200T。而是通过挂载
两给盘来实现200T业务。
ceph组件
OSDs --存储设备
Monitors -- 集群监控组件
RadosGatway --对象存储网关
MDSs --存放文件系统的元数据
Client -- ceph客户端
ceph 高可用分割文件 同时默认三副本 速度更快 但是内存空间更大
准备四台虚拟机,为master server 1 2 3 4(将存储和集群监控部署在一台服务器上)
生产环境中,三台作为存储设备 还有三台作为集群监控组件设备 即最少需要六台
提前 vim /etc/hosts 配置主机域名 //使用循环语句将/etc/hosts文件拷贝所有的主机 for i in master server1 server2 server3 >do > scp /etc/hosts &i:/etc/hosts >done //配置无密码 [master]# ssh -keygen [master]#for i in master server1 server2 server3 >do > ssh-copy-id $i >done
1.自定义rpm包放入yum源(不推荐)
[root@master ~]# ls 1.sh anaconda-ks.cfg b.txt txt 2 a.txt ceph-deploy-1.5.29-0.noarch.rpm [root@master ~]# mv ceph-deploy-1.5.29-0.noarch.rpm ceph.rpm //修改名称 [root@master ~]# mkdir /opt/ceshi //创建目录 [root@master ~]# cp ceph.rpm /opt/ceshi [root@master ~]# createrepo /opt/ceshi //创建repo文件 Spawning worker 0 with 1 pkgs Spawning worker 1 with 0 pkgs Spawning worker 2 with 0 pkgs Spawning worker 3 with 0 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete [root@master ~]# ls /opt/ceshi ceph.rpm repodata [root@master ~]# ls /opt/ceshi/repodata/ //查看repo文件 25f4d32c6536c57147f21181f312768dfbc5ecf11fbf56635cbc85eeddb596e6-filelists.xml.gz 29aa7c33c48ced2798d41d163c1c0f1161c6f26756d66f92becc52acfb230be2-primary.xml.gz 3f7b51a96d93737ce3c49953f4323fc68cf79acad8b8cf41a82e46e5f8b59a90-other.sqlite.bz2 441458fbba30a249587accdb2d127ecb651b152fd0557c7360608915107d304b-filelists.sqlite.bz2 9093614fe95139e531e2b4d9c2bf7f0740b93abf253c179811ae2989f6d7d378-other.xml.gz eea420e5419050e6055c5f6745c2102c6513c7909ff441d2304d11eb6d38edde-primary.sqlite.bz2 repomd.xml [root@master ~]#yum clean all && yum makecache && yum repolist
配置阿里云yum源 [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/x86_64/ gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/noarch/ gpgcheck=0 priority=1 [ceph-aarch64] name=cephaarch baseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/aarch64/ gpgcheck=0 priority=1
将 yum.repos.d/ceph.repo 打包发送到每一个文件
[root@master ~]# for i in server1 server2 server3 server4; do scp /etc/yum.repos.d/ceph.repo $i:/etc/yum.repos.d/; done ceph.repo 100% 218 217.0KB/s 00:00 ceph.repo 100% 218 435.2KB/s 00:00 ceph.repo 100% 218 261.5KB/s 00:00 ssh: Could not resolve hostname server4: Name or service not known lost connection
3.配置ntp服务同步时间
[root@master ~]# yum install ntpdate -y //下载ntp服务 [root@master ~]# timedatectl set-timezone Asia/Shanghai [root@master ~]# ntpdate ntp1.aliyun.com //同步阿里云服务器 1 Sep 20:41:00 ntpdate[1604]: adjust time server 120.25.115.20 offset -0.005360 sec
#为每个虚拟机添加3块硬盘 [root@master ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 2G 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 96G 0 part / sdb 8:16 0 1G 0 disk sdc 8:32 0 1G 0 disk sdd 8:48 0 1G 0 disk sr0 11:0 1 4.4G 0 rom
##装环境包和服务包 [root@master ~]# yum -y install ceph-deploy ceph-common python-pkg-resources [root@master ~]# yum -y install python-setuptools python2-subprocess32 python-setuptools [root@master ~]# cat /usr/bin/ceph-deploy #脚本位置 自动部署ceph集群 必须无密码访问其他主机 [root@master ~]# ceph-deploy mom --help #查看帮助 [root@master ~]# ceph-deploy --help #查看帮助 [root@master ~]# mkdir ceph-cluster #创建目录 后期执行脚本必须要在这个目录中 [root@master ~]# cd ceph-cluster
1.创建ceph的配置文件,在ceph-cluster目录下生成的配置文件 [root@master ceph-cluster]# ceph-deploy new server1 server2 server3 ##创建节点 [root@master ceph-cluster]# cat ceph.conf [global] mon_host = 192.168.1.106,192.168.1.107,192.168.1.108 auth_cluster_required = cephx #cephx为密码占位符 删除即不需要密码 2.给所有的节点安装ceph的相关软件包 [root@master ceph-cluster]# for i in server1 server2 server3; do ssh $i"yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw"; done 3.[root@master ceph-cluster]# ceph-deploy mon create-initial ##拷贝配置文件到server123的/etc/ceph 并且mon设置开启自动 [root@server1 /]# systemctl status ceph-mon@server1 ##查看server1 ceph-mon的状态 [root@server1 /]#ceph -s ##查看集群状态
错误点 1. yum -y install ceph-common python-pkg-resources python-setuptools python2-subprocess32 python-setuptools ceph命令无法出来要安装python的依赖包 2.清除覆盖之前的配置 root@master ceph-cluster]# ceph-deploy --overwrite-conf mon create server1 server3 3.使用ceph认证权限问题 [root@node1 ~]# find / -name ceph.client.admin.keyring ##将ceph目录下的client钥匙文件拷贝给/etc/ceph目录 赋予执行权限 [root@node1 ~]# cp -a /root/ceph.client.admin.keyring /etc/ceph/ [root@node1 ~]# chmod +r ceph.client.admin.keyring 4.清除之前的ceph环境配置 rm -rf /etc/ceph/* /var/lib/ceph/* /var/log/ceph/* /var/run/ceph/* 三台节点的 mon 信息删除 rm -rf /var/run/ceph/
7.osd共享磁盘服务
将vdb分为2个区作为vdc和vdd的缓存盘 ssd sata vdb1 vdc vdb2 vdd
##使用for循环格式化vdb盘 for i in server1 server3 > do > ssh $i"parted /dev/sdb mklabel gpt" ##制作分区表gpt > ssh $i"parted /dev/sdb mkpart primary 1 50%" > ssh $i parted /dev/sdb mkpart primary 50% 100%" > done [root@server3 ~]# ll /dev/sdb* brw-rw---- 1 root disk 8, 17 9月 5 20:38 /dev/sdb1 brw-rw---- 1 root disk 8, 18 9月 5 20:38 /dev/sdb2 ##分区完后 默认无法ceph软件对磁盘读写 [root@server1 ~]# chown ceph.ceph /dev/sdb2 ##修改磁盘所属组 主 (临时规则) [root@server1 ~]# chown ceph.ceph /dev/sdb1 [root@server1 ~]# vim /etc/udev/rules.d/70-dvd.rules ##文件名必须要rules结尾 文件名任意 ##永久添加磁盘所属组 主 ENV{DEVNAME}=="/dev/sdb1",OWNER="ceph",GROUP="ceph" ENV{DEVNAME}=="/dev/sdb2",OWNER="ceph",GROUP="ceph"
##用ceph自带命令格式化server的 sdc sdd盘(server1操作即可) [root@server1 ceph]# ceph-deploy disk zap server1:sdc server1:sdd [root@server1 ceph]# ceph-deploy disk zap server3:sdc server3:sdd 创建osd存储空间(server1操作即可) [root@server1 ceph]# ceph-deploy osd create server3:sdc:/dev/sdb1 server3:sdd:/dev/sdb2 [root@server1 ceph]# ceph-deploy osd create server1:sdc:/dev/sdb1 server1:sdd:/dev/sdb2 ##添加osd节点 ##将sdb1作为sdc的缓存盘 sdb2作为sdd的缓存盘
1、查看osd树 root@ceph01:~# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.29279 root default -2 0.14639 host ceph01 0 0.14639 osd.0 up 1.00000 1.00000 -3 0.14639 host ceph02 1 0.14639 osd.1 down 0 1.00000 发现osd.1是down掉的。 2、将osd.1的状态设置为out [root@server1 ceph]#ceph osd out osd.1 osd.1 is already out. 3、从集群中删除 [root@server1 ceph]#ceph osd rm osd.1 removed osd.1 4、从CRUSH中删除 r[root@server1 ceph]#ceph osd crush rm osd.1 removed item id 1 name 'osd.1' from crush map 5、删除osd.1的认证信息 [root@server1 ceph]#ceph auth del osd.1 updated 6、umount umount /dev/sdb1 7、再次查看osd的集群状态 [root@server1 ceph]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.14639 root default -2 0.14639 host ceph01 0 0.14639 osd.0 up 1.00000 1.00000 -3 0 host ceph02 8、登录ceph-deploy节点 root@ceph01:~# cd /ceph/ 9、初始化磁盘 [root@server1 ceph]# ceph-deploy disk zap server1:sdc server1:sdd 10、再次激活所有的osd(记住是所有的,不只是down掉这一个) [root@server1 ceph]# ceph-deploy osd create server1:sdc:/dev/sdb1 server1:sdd:/dev/sdb2 11、查看osd树和健康状态 [root@server1 ceph]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.29279 root default -2 0.14639 host ceph01 0 0.14639 osd.0 up 1.00000 1.00000 -3 0.14639 host ceph02 1 0.14639 osd.1 up 1.00000 1.00000 [root@server1 ceph]# ceph -s cluster ecacda71-af9f-46f9-a2a3-a35c9e51db9e health HEALTH_OK monmap e1: 1 mons at {ceph01=10.111.131.125:6789/0} election epoch 14, quorum 0 ceph01 osdmap e150: 2 osds: 2 up, 2 in flags sortbitwise,require_jewel_osds pgmap v9284: 64 pgs, 1 pools, 17 bytes data, 3 objects 10310 MB used, 289 GB / 299 GB avail 64 active+clean