摘要: centos7 内核4.1.4-1.el7.elrepo.x86_64 安装配置ceph version 9.0.2 前期准备: 规划:8台机器 IP hostname role 192.168.2.20 mon mon.mon 192.168.2.21 osd1 osd.0,mon.osd1 192.168.2.22 osd2 osd.1,mds.b(standby) 192.168.2.23 osd3 osd.2 192.168.2.24 osd4 osd.3 192.168.2.27 client mds.a,mon.client 192.168.2.28 osd5 osd.4 192.168.2.29 osd6 osd.5 关闭 SELINUX [root@admin ceph]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@admin ceph]# setenforce 0 打开 Ceph 需要的端口 [root@admin ceph]# firewall-cmd --zone=public --add-port=6789/tcp --permanent [root@admin ceph]# firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent [root@admin ceph]# firewall-cmd --reload 安装 ntp 同步时间 [root@admin ceph]# yum -y install ntp ntpdate ntp-doc [root@admin ceph]# ntpdate 0.us.pool.ntp.org [root@admin ceph]# hwclock --systohc [root@admin ceph]# systemctl enable ntpd.service [root@admin ceph]# systemctl start ntpd.service ssh无密码访问: [root@admin ceph]#ssh-keygen [root@admin ceph]#ssh-copy-id {username}@node1 安装: 安装ceph(需要在每个节点上面做) 前面要安装依赖包,大概20个左右,也可以边做边装(比较麻烦,不推荐) [root@admin ceph]#yum install -y make automake autoconf boost-devel fuse-devel gcc-c++ libtool libuuid-devel libblkid-devel keyutils-libs-devel cryptopp-devel fcgi-devel libcurl-devel expat-devel gperftools-devel libedit-devel libatomic_ops-devel snappy-devel leveldb-devel libaio-devel xfsprogs-devel git libudev-devel btrfs-progs 使用yum 安装ceph,要配置yum源,配置方式参考官网,http://ceph.com/docs/master/install/get-packages/ [root@admin ceph]#yum install -y ceph-deploy ceph 如果安装不了,可以直接去ceph官网下载要安装的ceph版本,然后手动安装 集群配置(手动,不推荐) mon安装: 1.给集群分配惟一 ID (即 fsid ) [root@admin ceph]# uuidgen d437c823-9d58-43dc-b586-6b36cf286d4f 2.创建 Ceph 配置文件, Ceph 默认使用 ceph.conf ,其中的 ceph 是集群名字。 [root@admin ceph]#sudo vi /etc/ceph/ceph.conf 将上面创建的fsid放到ceph.conf fsid = d437c823-9d58-43dc-b586-6b36cf286d4f 3.把初始监视器及初始监视器的 IP 地址写入 Ceph 配置文件,多个用逗号隔开 mon initial members =mon mon host =192.168.2.20 4.为此集群创建密钥环、并生成监视器密钥。 [root@admin ceph]#ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' 5.生成管理员密钥环,生成 client.admin 用户并加入密钥环。 [root@admin ceph]#ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow' 6.把 client.admin 密钥加入 ceph.mon.keyring 。 [root@admin ceph]#ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring 7.用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /tmp/monmap [root@admin ceph]#monmaptool --create --add mon 192.168.2.20 --fsid d437c823-9d58-43dc-b586-6b36cf286d4f /tmp/monmap 8.在监视器主机上分别创建数据目录 [root@admin ceph]# mkdir /var/lib/ceph/mon/ceph-mon 9.用监视器图和密钥环组装守护进程所需的初始数据。 [root@admin ceph]#ceph-mon --mkfs -i mon --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring 10.修改Ceph 配置文件,目前配置应包括这些 [global] fsid = d437c823-9d58-43dc-b586-6b36cf286d4f mon initial members = mon mon host = 192.168.2.20 public network = 192.168.2.0/24 cluster network = 192.168.2.0/24 auth_cluster_required = cephx auth_service _equired = cephx auth_client_required = cephx auth supported = none osd journal size = 1024 #filestore xattr use omap = true osd pool default size = 2 osd pool default min size = 1 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1 [mon] mon data = /var/lib/ceph/mon/$name [mon.mon] host=admin mon addr=192.168.2.20:6789 11.建一个空文件 done ,表示监视器已创建、可以启动了: [root@admin ceph]#touch /var/lib/ceph/mon/ceph-mon/done 12.启动监视器 [root@admin ceph]#/etc/init.d/ceph start mon.mon 13.查看状态 [root@admin ceph]# ceph -s 添加MON 一台主机上只能有一个mon,现在在其他节点中添加Mon 1.在新监视器主机上创建默认目录: [root@client ceph]# mkdir /var/lib/ceph/mon/ceph-{mon-id} 如:mkdir /var/lib/ceph/mon/ceph-osd1 2.获取监视器密钥环。 [root@client ceph]# ceph auth get mon. -o /tmp/ceph.mon.keyring 如果这一步做不成功,可以直接复制其他mon节点上的到相应目录。 3.获取监视器运行图 [root@client ceph]# ceph mon getmap -o /tmp/ceph.mon.map 4.准备第一步创建的监视器数据目录。必须指定监视器运行图路径,这样才能获得监视器法定人数和它们 fsid 的信息;还要指定监视器密钥环路径。 [root@client ceph]# ceph-mon -i {mon-id} --mkfs --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring 如:[root@client ceph]# ceph-mon -i osd1 --mkfs --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring 5.把新监视器添加到集群的监视器列表里(运行时),这允许其它节点开始启动时使用这个节点 [root@client ceph]# ceph mon add <mon-id> <ip>[:<port>] 如:[root@client ceph]#ceph mon add osd1 192.168.2.21:6789 6.启动新监视器,它会自动加入机器。守护进程需知道绑定到哪个地址,通过 --public-addr {ip:port} 或在 ceph.conf 里的相应段设置 mon addr 可以指定。 [root@client ceph]#ceph-mon -i {mon-id} --public-addr {ip:port} 如:[root@client ceph]#ceph-mon -i osd1 --public-addr 192.168.2.21:6789 删除mon: [root@client ceph]#ceph mon remove node1 添加OSD 1.修改mon节点/etc/ceph/ceph.conf文件,如下所示: [global] fsid = d437c823-9d58-43dc-b586-6b36cf286d4f mon initial members =mon mon host =192.168.2.20 public network = 192.168.2.0/24 cluster network = 192.168.2.0/24 auth_cluster_required = cephx auth_service _equired = cephx auth_client_required = cephx auth supported = none osd journal size = 1024 #filestore xattr use omap = true osd pool default size = 2 osd pool default min size = 1 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1 [mon] mon data = /data/mon/$name [mon.mon] host=mon mon addr=192.168.2.20:6789 [osd] osd journal size = 1024 osd journal = /data/$name/journal osd data = /data/$name [osd.0] host = osd1 devs = /dev/sda2 [osd.1] host = osd2 devs = /dev/sda2 [osd.2] host = osd3 devs = /dev/sda2 并复制到要创建osd的节点/etc/ceph目录下 [root@client ceph]#scp /etc/ceph/ceph.conf root@osd1:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@osd2:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@osd3:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@client:/etc/ceph/ceph.conf 2.分别在osd节点上面创建数据目录并挂载 [root@osd1 ~]#mkdir /data/osd.0 [root@osd1 ~]#mount /dev/sda2 /data/osd.0 文件系统使用xfs的,具体如何分区参考其他资料。 3.创建 OSD 。如果没有指定 UUID ,将会在 OSD 首次启动时分配一个。下列命令执行完成后将输出 OSD 号,在后续步骤里还会用到这个号。 [root@osd1 ~]#uuidgen 8c907505-be2b-49ce-b30e-587d992fceec [root@osd1 ~]#ceph osd create 8c907505-be2b-49ce-b30e-587d992fceec 4.初始化 OSD 数据目录 [root@osd1 ~]#ceph-osd -i 0 --mkfs --mkkey --osd-uuid 8c907505-be2b-49ce-b30e-587d992fceec 5.注册此 OSD 的密钥。 [root@osd1 ~]#ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /data/osd.0/keyring 6.把此节点加入 CRUSH 图。 [root@osd1 ~]#ceph osd crush add-bucket osd1 host 7.把此 Ceph 节点放入 default 根下。 [root@osd1 ~]#ceph osd crush move osd1 root=default 8.把此 OSD 加入 CRUSH 图之后,它就能接收数据了。 [root@osd1 ~]#ceph osd crush add osd.0 1.0 host=osd1 9.启动osd [root@osd1 ~]#ceph-osd -i 0 10.查看状态,三个osd都添加成功之后,下面会显示如下内容 [root@osd3 osd.1]# ceph -s cluster d437c823-9d58-43dc-b586-6b36cf286d4f health HEALTH_OK monmap e1: 1 mons at {mon=192.168.2.20:6789/0}, election epoch 2, quorum 0 mon osdmap e22: 3 osds: 3 up, 3 in pgmap v58: 192 pgs, 3 pools, 0 bytes data, 0 objects 3175 MB used, 5550 GB / 5553 GB avail 192 active+clean 如果在添加osd时遇到Error EINVAL: entity osd.0 exists but key does not match错误,执行: [root@osd1 ~]# ceph auth del osd.0 再重新装 删除osd 1.down掉一个osd硬盘 [root@node1 ~]# ceph osd down 0 #down掉osd.0节点 2. 在集群中删除一个osd硬盘 [root@node4 ~]# ceph osd rm 0 removed osd.0 3. 在集群中删除一个osd 硬盘 crush map [root@node1 ~]# ceph osd crush rm osd.0 4. 在集群中删除一个osd的host节点 [root@node1 ~]# ceph osd crush rm node1 removed item id -2 name 'node1' from crush map 5. ceph osd tree 检测 添加MDS服务器及client配置 添加MDS服务器 方法1: 1.在mon节点/etc/ceph/ceph.conf中添加mds配置,并复制到其他节点。 [root@client ceph]# vi ceph.conf [mds.0] host=client [root@client ceph]#scp /etc/ceph/ceph.conf root@osd1:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@osd2:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@osd3:/etc/ceph/ceph.conf [root@client ceph]#scp /etc/ceph/ceph.conf root@client:/etc/ceph/ceph.conf 2.为mds元数据服务器创建一个目录 [root@client ceph]#mkdir -p /var/lib/ceph/mds/ceph-a 3.为bootstrap-mds客户端创建一个密钥 [root@client ceph]#ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds 4. 在ceph auth库中创建bootstrap-mds客户端,赋予权限添加之前创建的密钥 [root@client ceph]#ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring 5. 在ceph auth库中创建mds.0用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-0/keyring文件里 [root@client ceph]#ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.a osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-a/keyring 6.启动mds服务进程 [root@client ceph]#ceph-mds -i a 或[root@client ceph]# service ceph start mds.a 7.查看集群状态 [root@client ceph]# ceph -s cluster d437c823-9d58-43dc-b586-6b36cf286d4f health HEALTH_OK monmap e1: 1 mons at {mon=192.168.2.20:6789/0}, election epoch 2, quorum 0 mon mdsmap e4: 1/1/1 up {0=0=up:active} osdmap e22: 3 osds: 3 up, 3 in pgmap v60: 192 pgs, 3 pools, 1884 bytes data, 20 objects 3175 MB used, 5550 GB / 5553 GB avail 192 active+clean client io 2 B/s wr, 0 op/s 方法2: 或直接执行 [root@client ceph]#ceph-mds -i client -n mds.0 -c /etc/ceph/ceph.conf -m 192.168.2.20:6789 [root@client ceph]#ceph mds stat 8.客户端挂载cephfs(需要mds服务) 客户端要首先安装ceph-fuse包 [root@client ceph]# yum install ceph-fuse –y 创建目录 [root@client ceph]# mkdir /data/mycephfs 挂载 [root@client ceph]# ceph-fuse -m 192.168.2.20:6789 /data/mycephfs 查看 [root@client ceph]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 940M 0 940M 0% /dev tmpfs 948M 0 948M 0% /dev/shm tmpfs 948M 8.5M 940M 1% /run tmpfs 948M 0 948M 0% /sys/fs/cgroup /dev/sda3 7.8G 1.7G 5.8G 22% / /dev/sda1 1022M 9.8M 1013M 1% /boot/efi /dev/sda2 1.9T 33M 1.9T 1% /data ceph-fuse 5.5T 3.2G 5.5T 1% /data/mycephfs rbd方式挂载(不需要mds服务) 1.新建一个ceph pool ceph osd pool create {pool-name} {pg-num} [{pgp-num}] 如: [root@client ceph]#ceph osd pool create rbdpool 100 100 2.在pool中新建一个镜像 [root@client ceph]#rbd create rbdpoolimages --size 1048576 -p rbdpool 或者 [root@client ceph]#rbd create rbdpool/rbdpoolimages --size 102400 大小自己控制 3.列出块设备在一个特定的池 rbd ls {POOLNAME} [root@client ceph]#rbd ls rbdpool 4.查询一个池内的镜像信息 rbd --image {image-name} -p {pool-name} info 如: [root@client ceph]#rbd --image rbdpoolimages -p rbdpool info 5.把镜像映射到pool块设备中 [root@client ceph]#rbd map rbdpoolimages -p rbdpool (如果要取消映射块设备使用命令:rbd unmap /dev/rbd1) 6.查看镜像映射map [root@client ceph]#rbd showmapped 7.格式化映射的设备块 [root@client ceph]#mkfs.xfs /dev/rbd1 8.挂载新建的分区 [root@client ceph]#mkdir /data/rbddir [root@client ceph]#mount /dev/rbd1 /data/rbddir 9.修改/etc/fstab文件,将挂载信息添加进去。 /dev/rbd1 /data/rbddir1 xfs defaults 0 0 10.查看 [root@client ceph]#df -Th 对象文件上传方式(这种方式使用不是很方便,不建议使用) 1:创建一个pool #rados mkpool 2:上传rados put {object-name} {file-path} --pool=putdir 示例 rados put zabbix_client_install.tar.gz ./zabbix_client_install.tar.gz --pool=putdir 3:查看上传内容: rados -p putdir ls zabbix_client_install.tar.gz 4:下载对象文件 下载 rados get {object-name} {file-path} --pool=putdir rados get zabbix_client_install.tar.gz /workspace/zabbix_client_install.tar.gz -p putdir (责任编辑:IT) |