centos7 通过yum 安装jewel版本ceph
来源:互联网 发布:网络宣传怎么做 编辑:程序博客网 时间:2024/05/30 07:13
删除默认的源,国外的比较慢
yum clean all
rm -rf /etc/yum.repos.d/*.repo
下载阿里云的base源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
下载阿里云的epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
修改里面的系统版本为7.3.1611,当前用的centos的版本的的yum源可能已经清空了
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
sed -i 's/$releasever/7.3.1611/g' /etc/yum.repos.d/CentOS-Base.repo
添加ceph源
vim /etc/yum.repos.d/ceph.repo
添加
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
[ceph-source]
name=cephsource
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0[ceph-radosgw]
name=cephradosgw
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
进行yum的makecache
yum makecache
安装ceph集群
硬件环境准备
由于条件限制,本文所有实验机器全是虚拟机,共准备了3台虚拟机,其中1台做监控节点(master),2台做存储节点(slave1,slave2)。
Ceph要求必须是奇数个监控节点,而且最少3个(自己玩玩的话,1个也是可以的),ceph-adm是可选的,可以把ceph-adm放在monitor上,只不过把ceph-adm单独拿出来架构上看更清晰一些。当然也可以把mon放在 osd上,生产环境下是不推荐这样做的。
- ADM 服务器硬件配置比较随意,只是用来操作和管理 Ceph;
- MON 服务器1块硬盘用来安装操作系统;
- OSD 服务器上用1块1GB的硬盘做Ceph存储,每个osd对应1块硬盘,每个osd需要1个Journal,所以1块硬盘需要1个Journal,如果多个硬盘的话,可以每个区分别对应一个osd硬盘的journal.
软件环境准备
所有Ceph集群节点采用CentOS-7.3.1611版本,所有文件系统采用Ceph官方推荐的xfs。
安装完CentOS后我们需要在每个节点上(包括master)做一点基础配置,比如关闭SELINUX、关闭防火墙、同步时间等。
关闭 SELINUX# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config# setenforce 0关闭iptables# systemctl stop firewalld# systemctl disable firewalld同步时间# yum -y ntp# ntpdate asia.pool.ntp.org修改/etc/hosts# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.63.128 master192.168.63.130 slave1192.168.63.131 slave2
在每台osd服务器上对1块硬盘进行分区,创建XFS文件系统,对1块用作journal的硬盘分1个区,每个区对应一块硬盘,不需要创建文件系统,留给Ceph自己处理。# parted -a optimal --script /dev/sdb -- mktable gpt# parted -a optimal --script /dev/sdb -- mkpart primary xfs 0% 100%# mkfs.xfs -f /dev/sdbmeta-data=/dev/sdb isize=256 agcount=4, agsize=1310592 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0data = bsize=4096 blocks=5242368, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
# parted -a optimal --script /dev/sdc -- mktable gpt# parted -a optimal --script /dev/sdc -- mkpart primary xfs 0% 100%# mkfs.xfs -f /dev/sdcmeta-data=/dev/sdc1 isize=256 agcount=4, agsize=1310592 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0data = bsize=4096 blocks=5242368, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
在生产环境中,每台osd服务器上硬盘远不止2台,以上命令需要对多个硬盘进行处理,重复的操作太多,以后还会陆续增加服务器,写成脚本parted.sh方便操作,其中/dev/sdc|d|e|f分别是4块硬盘,/dev/sdb是用做journal的硬盘:
1234567891011121314151617181920212223242526
#!/bin/bashset -eif [ ! -x "/sbin/parted" ]; then echo "This script requires /sbin/parted to run!" >&2 exit 1fiDISKS="c d e f"for i in ${DISKS}; do echo "Creating partitions on /dev/sd${i} ..." parted -a optimal --script /dev/sd${i} -- mktable gpt parted -a optimal --script /dev/sd${i} -- mkpart primary xfs 0% 100% sleep 1 #echo "Formatting /dev/sd${i}1 ..." mkfs.xfs -f /dev/sd${i}1 &doneJOURNALDISK="b"for i in ${JOURNALDISK}; do parted -s /dev/sd${i} mklabel gpt parted -s /dev/sd${i} mkpart primary 0% 25% parted -s /dev/sd${i} mkpart primary 26% 50% parted -s /dev/sd${i} mkpart primary 51% 75% parted -s /dev/sd${i} mkpart primary 76% 100%done设置master slave1 slave2 免密登录(root用户)
Ceph部署
比起在每个Ceph节点上手动安装Ceph,用ceph-deploy工具统一安装要方便得多,登录master:
# yum install ceph-deploy -y
创建一个ceph工作目录,以后的操作都在这个目录下面进行:
[root@master ~]# mkdir ~/ceph-cluster[root@master ~]# cd ceph-cluster/
初始化集群,告诉ceph-deploy哪些节点是监控节点,命令成功执行后会在ceph-cluster目录下生成ceph.conf,ceph.log,ceph.mon.keyring等相关文件:
[root@master ceph-cluster]# ceph-deploy new master
在每个Ceph节点上都安装Ceph:
[root@master ceph-cluster]# ceph-deploy install master slave1 slave2
此处可能出现类似如下错误:
[master
][ERROR ] File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child[master
][ERROR ] raise child_exception[master
][ERROR ] OSError: [Errno 2] No such file or directory[master
][ERROR ] [master
][ERROR ] [ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph --version
解决方法是在报错的节点上执行下面的命令:
[root@
ceph-cluster]# yum install *argparse* -y
master
初始化监控节点:
[root@
ceph-cluster]# ceph-deploy mon create-initial
master
查看一下Ceph存储节点的硬盘情况:
[root@
ceph-cluster]# ceph-deploy disk list slave1[root@
master
ceph-cluster]# ceph-deploy disk list slave2
master
初始化Ceph硬盘,然后创建osd存储节点,存储节点:单个硬盘:对应的journal分区,一一对应:
创建slave1存储节点[root@master ceph-cluster]# ceph-deploy disk zap slave1:sdb[root@master ceph-cluster]# ceph-deploy osd create
ceph-deploy osd createslave1
:sdb:/dev/sdc1创建slave2存储节点[root@master ceph-cluster]# ceph-deploy disk zap slave2:sdb[root@master ceph-cluster]#slave1
:sdb:/dev/sdc1
最后,我们把生成的配置文件从master同步部署到其他几个节点,使得每个节点的ceph配置一致:
[root@master ceph-cluster]# ceph-deploy --overwrite-conf admin master slave1 slave2
测试
看一下配置成功了没?
[root@master ceph-cluster]# ceph health
[root@ceph-mon ceph-cluster]# ceph osd pool set rbd size 2set pool 0 size to 2[root@ceph-mon ceph-cluster]# ceph osd pool set rbd min_size 2set pool 0 min_size to 2[root@ceph-mon ceph-cluster]# ceph osd pool set rbd pg_num 128set pool 0 pg_num to 256[root@ceph-mon ceph-cluster]# ceph osd pool set rbd pgp_num 128set pool 0 pgp_num to 256[root@ceph-mon ceph-cluster]# ceph healthHEALTH_OK
如果pool设置失败的话可以删除掉重新添加即可。
更详细一点:
[root@master ceph-cluster]# ceph -s cluster 38a7726b-6018-41f4-83c2-911b325116df health HEALTH_OK monmap e1: 1 mons at {ceph-mon=192.168.128.131:6789/0} election epoch 2, quorum 0 ceph-mon osdmap e46: 8 osds: 8 up, 8 in pgmap v72: 256 pgs, 1 pools, 0 bytes data, 0 objects 276 MB used, 159 GB / 159 GB avail 256 active+clean
如果操作没有问题的话记得把上面操作写到ceph.conf文件里,并同步部署的各节点:
[root@ceph-mon ceph-cluster]# echo "osd pool default size = 2" >> ~/ceph-cluster/ceph.conf[root@ceph-mon ceph-cluster]# echo "osd pool default min size = 2" >> ~/ceph-cluster/ceph.conf[root@ceph-mon ceph-cluster]# echo "osd pool default pg num = 256" >> ~/ceph-cluster/ceph.conf[root@ceph-mon ceph-cluster]# echo "osd pool default pgp num = 256" >> ~/ceph-cluster/ceph.conf[root@ceph-mon ceph-cluster]# ceph-deploy --overwrite-conf admin master slave1 slave2
如果一切可以重来
部署过程中如果出现任何奇怪的问题无法解决,可以简单的删除一切从头再来:
[root@ceph-mon ceph-cluster]# ceph-deploy purge ceph-mon ceph-osd1 ceph-osd2[root@ceph-mon ceph-cluster]# ceph-deploy purgedata ceph-mon ceph-osd1 ceph-osd2[root@ceph-mon ceph-cluster]# ceph-deploy forgetkeys
Troubelshooting
如果出现任何网络问题,首先确认节点可以互相无密码ssh,各个节点的防火墙已关闭或加入规则
http://www.koenli.com/2016-09-08-%E5%9C%A8CentOS7-1%E4%B8%8A%E5%AE%89%E8%A3%85%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9FCeph.html
- centos7 通过yum 安装jewel版本ceph
- centos7安装ceph-jewel
- 【Ceph】centos7搭建Ceph集群(jewel)
- Ansible-安装 (Centos7 通过Yum安装最新发布版本)
- CentOS7使用yum安装ceph rpm包
- Jewel 版ceph安装和BlueStore配置
- centos7 通过yum安装redis
- Centos7 通过yum安装pip
- ceph存储 Jewel 版ceph安装和BlueStore配置
- CentOS7 yum 安装 Nginx最新版本
- centos7 yum安装最新版本的nginx
- CentOS7.3yum安装Nginx最新版本
- CentOS7 yum 安装 Nginx最新版本
- CentOS7通过yum命令安装Mono
- CentOS7下通过yum安装p7zip
- centOS7通过yum安装php7.0
- 在centos7通过yum安装PHP7
- CentOS7下通过yum安装MySQL5.7
- Hyperledger Composer 常用术语
- 关于java中用jxl从ex表格读取数据转存到数据库里
- 【SQL学习】基本用法
- HMM三大问题之评估问题解决方法前向问题
- URL重写案列整理思路
- centos7 通过yum 安装jewel版本ceph
- Docker与本机端口动态映射的方法
- java 如何理解泛型类(1)
- JUC集合---CopyOnWriteArraySet
- java8-[CompletableFuture]
- 使用storcli点亮服务器上的故障磁盘
- 物联网安全专家齐聚ICA联盟 多项IoT身份认证安全标准出炉
- SLIC超像素分割MATLAB代码执行时的一些细节
- 讯飞语音合成Wav,以及MediaPlayer的一些坑,SeekBar相关知识点