目录
一:简介... 1
二:部署环境介绍... 1
三:集群配置准备工作... 2
四:安装ceph软件包... 6
五:安装ceph对象网关... 9
六、搭建ceph集群... 10
6.1、配置mon节点... 10
6.2:添加osd节点... 13
6.2.1、添加第一块osd节点... 13
6.3:添加元数据服务器... 17
6.3.1、添加第一个元数据服务器... 17
七:安装client端RBD、cephFS挂载演示... 18
7.1:客户端内核要求、安装装准备... 18
7.2、RBD方式挂载... 19
7.3、cephFS挂载... 20
八:检查ceph集群状态常用命令... 23
8.1、磁盘压力测试软件推荐... 23
九:故障排查... 23
一:简介Ceph 生态系统架构可以划分为四部分:
1. Clients:客户端(数据用户) 2. mds:Metadata servercluster,元数据服务器(缓存和同步分布式元数据) 3. osd:Object storagecluster,对象存储集群(将数据和元数据作为对象存储,执行其它关键职能) 4. mon:Cluster monitors,集群监视器(执行监视功能) 二:部署环境介绍主机名 | 公网IP(eth0)
私网IP(eth1)
双网卡绑定 bond0 | | | | | | | | | | cpu: e5520*2
5506/4核/8线程*2 | | CentOS6.6
3.18.2
|
|
| node01
| 172.16.2.27
| mon、mds、osd
| cpu: e5520*2
5506/4核/8线程*2 | | CentOS6.6
| 1T sas 7500转*4
第一块装系统
|
| node02
| 172.16.2.28
| mon、mds、osd
| cpu: e5520*2
5506/4核/8线程*2 | | CentOS6.6
| 1T sas 7500转*4
第一块装系统
|
| node03
| 172.16.2.29
| mon、mds、osd
| cpu: e5520*2
5506/4核/8线程*2 | | CentOS6.6
| 1T sas 7500转*4
第一块装系统
|
|
三:集群配置准备工作 node01节点执行 3.1:创建工作文件夹,建立ip地址list,为文件传输做准备 mkdir /workspace/ [iyunv@node01 ~]#cd /workspace/ [iyunv@node01workspace]# vi cephlist.txt 主机列表 client node01 node02 node03
主机ssh登陆证书 ssh-keygen cd .ssh/ ssh-copy-id 127.1 将配置完成的证书传输到其它服务器 sync –avp * 172.17.2.27:/root/.ssh/ sync –avp * 172.17.2.28:/root/.ssh/ sync –avp * 172.17.2.29:/root/.ssh/
3.2:系统基础设置,建议整理为脚本,批量传输到所有集群主机执行 3.2.1.修改SELINUX模式 sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 3.2.2.set max userprocesses sed -i's/1024/102400/' /etc/security/limits.d/90-nproc.conf echo "* -sigpending 256612" >> /etc/security/limits.d/90-nproc.conf
3.2.3.set ulimit echo "ulimit-SHn 102400" >> /etc/rc.local cat >>/etc/security/limits.conf << EOF * soft nofile 102400 * hard nofile 102400 * soft nproc 102400 * - sigpending256612 * hard nproc 102400 EOF #执行profile source/etc/profile 3.3: 修改host文件 [iyunv@node01 ~]# vi /etc/hosts 追加内容如下: 172.16.4.17 client 172.16.2.27 node01 172.16.2.28 node02 172.16.2.29 node03 172.16.4.240 cephNaNmind.com 将host文件传输到其它主机 for ip in $(cat/workspace/cephlist.txt);do echo -----$ip-----;rsync -avp /etc/hosts $ip:/etc/;done 3.4:安装centos的yum源软件包 =>全部节点安装 3.4.1:升级基础包
3.4.2:配置一个国内yum源 vi/etc/yum.repos.d/my.[url=]repo[/url][url=][k1][/url] 详见批注 3.4.3:添加时间同步定时任务 vi /etc/crontab 3.4.4:时间同步,此处是我们的内部时间源 20 */1 * * * root/usr/sbin/ntpdate 172.16.5.100 && /sbin/hwclock –w for ip in $(cat /workspace/cephlist.txt);doecho -----$ip-----;rsync -avp --delete /etc/crontab $ip:/etc/;done 4:5:传输yum源文件到其它节点服务器 --delete 删除那些DST中SRC没有的文件 for ip in $(cat/workspace/cephlist.txt);do echo -----$ip-----;rsync -avp --delete/etc/yum.repos.d $ip:/etc/;done
3.5、更新yum源 (所有节点执行) Screen yum clean all&&yum update –y 3.6、添加ceph yum源或者自制yum源; 在所有节点安装ceph的所有的yum源 (所有节点执行) 3.6.1、安装软件包key (1)、release.asckey rpm --import'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' (2)、autobuild.asckey rpm --import'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc'
3.6.2、安装ceph附加包源ceph-extras.repo,设置priority=2,确保新的包(如qemu)优先级比标准包的高。 vi/etc/yum.repos.d/ceph-extras.[url=]repo[/url][url=][k2][/url] [url=][k3][/url] 详见附件 #制作私有yum源下载软件包地址 3.6.3、安装ceph源 vi/etc/yum.repos.d/ceph.[url=]repo[/url][url=][k4][/url] [url=][k5][/url] ##制作私有yum源下载软件包地址
3.6.4、安装ceph的apache yum源 vi/etc/yum.repos.d/ceph-apache.[url=]repo[/url][url=][k6][/url] ##制作私有yum源下载软件包地址
3.6.5、添加ceph-fastcgi.repofile to /etc/yum.repos.d vi/etc/yum.repos.d/mod_fastcgi.[url=]repo[/url][url=][k7][/url] 详见批注 ##制作私有yum源下载软件包地址
3.7:如果制作内网yum源,完成上面给出的下载链接后,进行如下配置: 3.7.1:删除无用文件 cd/usr/share/nginx/html find ./ -nameindex.html* >1.txt for i in $(cat1.txt);do rm -rf $i;done find ./ -nameindex.html*
3.7.2:调整目录结构 下载至本地的软件包,目录结构根据实际情况作调整, 3.7.3:添加、修改nginx配置: location / { root /usr/share/nginx/html; autoindex on; 3.7.4、修改yum源,repo文件,将yum请求的地址改为私有地址; 例如: vi/etc/yum.repos.d/ceph-extras.[url=]repo[/url][url=][k8][/url] [ceph-extras-source] name=Ceph ExtrasSources baseurl=http://172.16.2.240/ceph-extras/packages/ceph-extras/rpm/centos6/SRPMS enabled=1 priority=2 gpgcheck=0 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
3.8、安装国内epel yum源 备:
官方推荐rpm安装ceph,安装下面插件: 3.9:安装yum-plugin-priorities. yum install yum-plugin-priorities -y yum update –y 3.9.1:确认配置文件内容 cat/etc/yum/pluginconf.d/priorities.conf [main] enabled = 1
[url=][k1][/url][base] name=CentOS-6 -Base - 163.com baseurl=http://mirrors.163.com/centos/6/os/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#released updates [updates] name=CentOS-6 -Updates - 163.com baseurl=http://mirrors.163.com/centos/6/updates/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=updates gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additionalpackages that may be useful [extras] name=CentOS-6 -Extras - 163.com baseurl=http://mirrors.163.com/centos/6/extras/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=extras gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additionalpackages that extend functionality of existing packages [centosplus] name=CentOS-6 -Plus - 163.com baseurl=http://mirrors.163.com/centos/6/centosplus/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=centosplus gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#contrib -packages by Centos Users [contrib] name=CentOS-6 -Contrib - 163.com baseurl=http://mirrors.163.com/centos/6/contrib/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=contrib gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
[url=][k2][/url][ceph-extras-source] name=Ceph Extras Sources baseurl=http://ceph.com/packages/ceph-extras/rpm/centos6/SRPMS enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
[url=][k3][/url]
[url=][k4][/url][ceph] name=Ceph packagesfor $basearch baseurl=http://ceph.com/rpm/rhel6/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
[ceph-noarch] name=Ceph noarchpackages baseurl=http://ceph.com/rpm/rhel6/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
[ceph-source] name=Ceph sourcepackages baseurl=http://ceph.com/rpm/rhel6/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
[url=][k5][/url]
[url=][k6][/url][apache2-ceph-noarch] name=Apache noarchpackages for Ceph baseurl=http://gitbuilder.ceph.com/apache2-rpm-centos6-x86_64-basic/ref/master/ enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc
[apache2-ceph-source] name=Apache sourcepackages for Ceph baseurl=http://gitbuilder.ceph.com/apache2-rpm-centos6-x86_64-basic/ref/master/ enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc
[url=][k7][/url][fastcgi-ceph-basearch] name=FastCGIbasearch packages for Ceph baseurl=http://gitbuilder.ceph.com/mod_fastcgi-rpm-centos6-x86_64-basic/ref/master enabled=1 priority=2yum gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc
[fastcgi-ceph-noarch] name=FastCGInoarch packages for Ceph baseurl=http://gitbuilder.ceph.com/mod_fastcgi-rpm-centos6-x86_64-basic/ref/master enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc
[fastcgi-ceph-source] name=FastCGI sourcepackages for Ceph baseurl=http://gitbuilder.ceph.com/mod_fastcgi-rpm-centos6-x86_64-basic/ref/master enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/autobuild.asc
[url=][k8][/url][ceph-extras-source] name=Ceph ExtrasSources baseurl=http://ceph.com/packages/ceph-extras/rpm/centos6/SRPMS enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
四:安装ceph软件包4.1、安装ceph部署机 ,使用ceph-deploy方式安装部署 yum install -yceph-deploy 4.2、安装ceph存储集群 (1)、安装ceph必备软件 ==all yum install -y snappy leveldb gdisk python-argparse gperftools-libs (2)、安装ceph软件 ==all yum install -y ceph 4.3、安装ceph对象网关 ==all yum install -y yum-plugin-priorities yum update -y 4.4、安装apachefastcgi ==all (1)、安装apachefastcgi 需要yum install httpd mod_fastcgi,安装之前先执行下面的操作 yuminstall -y httpd mod_fastcgi
4.4.1、确认 FastCGImodule启用. cat/etc/httpd/conf.d/fastcgi.conf|grep mod_fastcgi.so 输出结果如下: LoadModulefastcgi_module modules/mod_fastcgi.so
4.4.2、确认 Rewritemodule 启用 cat/etc/httpd/conf/httpd.conf|grep mod_rewrite.so 输出结果如下: LoadModulerewrite_module modules/mod_rewrite.so
4.4.3、编辑配置文件httpd.conf ,修改httpd.conf ServerName为本机主机名 vim/etc/httpd/conf/httpd.conf echo"ServerName $HOSTNAME">> /etc/httpd/conf/httpd.conf
4.4.4、启动httpd进程 /etc/init.d/httpd restart
4.5、安装SSL (安装此步骤有报错) yum install -ymod_ssl openssl 4.5.1、创建证书 生成私钥. openssl genrsa-out ca.key 2048 4.5.2、生成CSR文件 openssl req -new-key ca.key -out ca.csr ountry Name (2 letter code)
| 使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
| State or Province Name (full name)
| 省份,比如填写Shanghai
| Locality Name (eg, city)
| 城市,比如填写Shanghai
| Organization Name (eg, company)
| 组织单位,比如填写公司名称的拼音
| Organizational Unit Name (eg, section)
| 比如填写IT Dept
| Common Name (eg, your websites domain name):
| 行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是:
abc.com 是一个网站;
www.abc.com 是另外一个网站;
pay.abc.com 又是另外一个网站。
| Email Address
| 邮件地址,可以不填
| A challenge password
| 可以不填
| An optional company name
| 可以不填
|
4.5.3、生成证书 opensslx509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
4.5.4、copy生成证书至apache监听位置. cp ca.crt/etc/pki/tls/certs cp ca.key/etc/pki/tls/private/ca.key cp ca.csr/etc/pki/tls/private/ca.csr
4.5.5、修改apache ssl配置文件 /etc/httpd/conf.d/ssl.conf. vi +105/etc/httpd/conf.d/ssl.conf 将 105SSLCertificateFile /etc/pki/tls/certs/localhost.crt 改为: 105 SSLCertificateFile/etc/pki/tls/certs/ca.crt 将 112 SSLCertificateKeyFile/etc/pki/tls/private/localhost.key 改为 112 SSLCertificateKeyFile/etc/pki/tls/private/ca.key 4.5.6:将证书文件传到其它主机 --delete 删除那些DST中SRC没有的文件 for ip in $(cat/workspace/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/pki/tls/certs$ip:/etc/pki/tls/;done for ip in $(cat/workspace/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/pki/tls/private$ip:/etc/pki/tls/;done for ip in $(cat/workspace/cephlist.txt);do echo -----$ip-----;rsync -avp --delete/etc/httpd/conf.d/ssl.conf $ip:/etc/httpd/conf.d/ssl.conf;done
4.5.7、批量重启服务 for ip in $(cat /workspace/cephlist.txt);do echo-----$ip-----;ssh root@$ip /etc/init.d/httpd restart;done
官网步骤,写了host文件略过啦 (10)、AddWildcard to DNS (The address of the DNS must also be specified in the Cephconfiguration file with the rgw dns name = {hostname} setting. address=/.ceph-node/192.168.0.1 五:安装ceph对象网关5.1、基础软件包 yum install -y ceph-radosgwceph 5.2、安装ceph对象网关代理 yum install -yradosgw-agent 5.3、为块存储安装虚拟化软件 5.3.1、如果之前有qemu模块先删除,确保之后安装的是最完善的 yumremove -y qemu-kvm qemu-kvm-tools qemu-img 5.3.2、卸载后重新安装qemu yum install -yqemu-kvm qemu-kvm-tools qemu-img 5.4、安装qemu客户代理 yum install -yqemu-guest-agent
5.5、在所有节点安装ceph依赖的软件及模块 yum install *argparse* -y yum install redhat-lsb -y yum install xfs* -y
############官方文档无此内容############ (4)、安装libvirt软件包 yuminstall -y libvirt 以上步骤参考配置连接 http://docs.ceph.com/docs/master/install/install-ceph-gateway/ 配置 ceph对象网关 http://docs.ceph.com/docs/master/radosgw/config/
六、搭建ceph集群 http://docs.ceph.com/docs/master/radosgw/config/ 6.1、配置mon节点6.1.1、建立第一个mon节点 1、登录监控节点node01节点 ls /etc/ceph #查看ceph配置文件目录是否存在 2、创建ceph配置文件并配置ceph配置文件内的内容 3、创建一个ceph配置文件 touch/etc/ceph/ceph.conf 4、执行此命令可以得到一个唯一的标识,作为ceph集群ID uuidgen bc5ec6c4-3cc9-48ad-94d9-cee3cd75952a
fsid = bc5ec6c4-3cc9-48ad-94d9-cee3cd75952a #此标识就是上面得到的,把此条命令加入ceph的配置文件 mon initialmembers = node01,node02,node03 #node01、node02、node03作为ceph集群的监控节点,把此条命令加入到ceph配置文件 mon host = 172.16.2.27,172.16.2.28, 172.16.2.29 #监控节点的地址,把此条命令加入ceph的配置文件中
5、ceph配置文件预览 vi /etc/ceph/ceph.conf [global] fsid = bc5ec6c4-3cc9-48ad-94d9-cee3cd75952a mon initial members = node01,node02,node03 mon host = 172.16.2.27, 172.16.2.28, 172.16.2.29 public network = 172.16.2.0/24 auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 filestore xattr use omap = true osd pool default size = 3 osd pool default min size = 1 osd crush chooseleaf type = 1 osd_mkfs_type = xfs max mds = 5 mds max file size = 100000000000000 mds cache size = 1000000 mon osd down out interval = 900 #设置osd节点down后900s,把此osd节点逐出ceph集群,把之前映射到此节点的数据映射到其他节点。 cluster_network = 172.16.2.0/24 [mon] mon clock drift allowed = .50 #把时钟偏移设置成0.5s,默认是0.05s,由于ceph集群中存在异构PC,导致时钟偏移总是大于0.05s,为了方便同步直接把时钟偏移设置成0.5s
6、在node01创建各种密钥 #为监控节点创建管理密钥 ceph-authtool--create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
#为ceph amin用户创建管理集群的密钥并赋予访问权限 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'
#添加client.adminkey到 ceph.mon.keyring ceph-authtool/tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
验证 cat/tmp/ceph.mon.keyring
7、在node01监控节点创建一个mon数据目录 mkdir -p/var/lib/ceph/mon/ceph-node01
8、在node01创建一个boot引导启动osd的key mkdir -p/var/lib/ceph/bootstrap-osd/ ceph-authtool -C /var/lib/ceph/bootstrap-osd/ceph.keyring
9、在node01节点上初始化mon节点, ceph-mon--mkfs -i node01 --keyring /tmp/ceph.mon.keyring
10、为了防止重新被安装创建一个空的done文件 touch/var/lib/ceph/mon/ceph-node01/done
11、创建一个空的初始化文件 touch/var/lib/ceph/mon/ceph-node01/sysvinit
12、启动ceph进程 /sbin/serviceceph -c /etc/ceph/ceph.conf start mon.node01
10、查看asok mon状态 [iyunv@node01 ~]# ceph--cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.node01.asok mon_status
6.1.2、添加其他mon(2)节点: 1、复制node01节点的/etc/ceph目录到node02 2、复制node01节点上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node02 3、复制node01节点上的/tmp/ceph.mon.keyring 4、在node02节点上新建一个/var/lib/ceph/bootstrap-osd/目录 5、在node02节点上建立一个/var/lib/ceph/mon/ceph-node02目录 6、在node02节点上初始化mon节点 7、为了防止重新被安装创建一个空的done文件 8、创建一个空的初始化文件 9、启动ceph进程
scp /etc/ceph/*node02:/etc/ceph/ scp /var/lib/ceph/bootstrap-osd/ceph.keyringnode02:/var/lib/ceph/bootstrap-osd/ scp /tmp/ceph.mon.keyring node02:/tmp/
mkdir /var/lib/ceph/bootstrap-osd/ mkdir -p /var/lib/ceph/mon/ceph-node02 ceph-mon--mkfs -i node02 --keyring /tmp/ceph.mon.keyring touch/var/lib/ceph/mon/ceph-node02/done touch/var/lib/ceph/mon/ceph-node02/sysvinit /sbin/service ceph -c/etc/ceph/ceph.conf start mon.node02 验证状态: ceph --cluster=ceph--admin-daemon /var/run/ceph/ceph-mon.node02.asok mon_status
6.1.3、添加其他mon(3)节点: 添加方法同 6.1.2 步骤,注意修改node名称 6.2:添加osd节点6.2.1、添加第一块osd节点1、创建一个OSD,生成一个osdnumber [iyunv@node01 ~]# ceph osd create 0
2、为osd节点创建一个osd目录 [iyunv@node01~]# mkdir -p/var/lib/ceph/osd/ceph-0
3、格式化已准备好的osd硬盘(格式化为xfs格式) [iyunv@node01 ~]# mkfs.xfs-f /dev/sdb
4、创建osd挂载目录 [iyunv@node01 ~]#mount /dev/sdb /var/lib/ceph/osd/ceph-0 [iyunv@node01 ~]#mount -o remount,user_xattr /var/lib/ceph/osd/ceph-0 查看挂载的情况 [iyunv@node01 ~]#mount /dev/sda2 on /type ext4 (rw) proc on /proc typeproc (rw) /dev/sdbon /var/lib/ceph/osd/ceph-1 type xfs (rw,user_xattr)
5、把上面的挂载信息写入分区表 [iyunv@node01 ~]# vi /etc/fstab /dev/sdb /var/lib/ceph/osd/ceph-0 xfs defaults 0 0 /dev/sdb /var/lib/ceph/osd/ceph-0 xfs remount,user_xattr 0 0
6、初始化osd数据目录 [iyunv@node01 ~]# ceph-osd-i 0 --mkfs --mkkey 2015-04-0720:43:08.092553 7fab822b2800 -1 journal FileJournal::_open: disabling aio fornon-block journal. Use journal_force_aioto force use of aio anyway 2015-04-0720:43:08.181608 7fab822b2800 -1 journal FileJournal::_open: disabling aio fornon-block journal. Use journal_force_aioto force use of aio anyway 2015-04-0720:43:08.202946 7fab822b2800 -1 filestore(/var/lib/ceph/osd/ceph-0) could notfind 23c2fcde/osd_superblock/0//-1 in index: (2) No such file or directory 2015-04-0720:43:08.236009 7fab822b2800 -1 created object store /var/lib/ceph/osd/ceph-0journal /var/lib/ceph/osd/ceph-0/journal for osd.0 fsidfe3655d0-80d9-4dcf-a2c8-dcd1caf819ff 2015-04-0720:43:08.236076 7fab822b2800 -1 auth: error reading file:/var/lib/ceph/osd/ceph-0/keyring: can't open /var/lib/ceph/osd/ceph-0/keyring:(2) No such file or directory 2015-04-0720:43:08.236182 7fab822b2800 -1 created new key in keyring/var/lib/ceph/osd/ceph-0/keyring
6、注册osd的认证密钥 ceph auth addosd.[osd ID] osd 'allow *' mon 'allow profile osd' -i/var/lib/ceph/osd/ceph-[osd ID]/keyring
[iyunv@node01 ~]#ceph auth add osd.0osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
查看认证节点 ceph auth list osd.1 key:AQDwSsZUQMkeGRAAmYYw9CoUUdK73IjDSH/gnw== caps: [mon] allow profile osd 7、为此osd节点创建一个crushmap [iyunv@node01 ~]#ceph osd crush add-bucket node01 host
8、防放置 Node01 到根路径 [iyunv@node01 ~]#ceph osd crush move node01 root=default moved item id -2name 'node01' to location {root=default} in crush map
9、放置osd.0到 bucketnode01 [iyunv@node01 ~]#ceph osd crush add osd.0 1.0 host=node01 add item id 0 name'osd.0' weight 1 at location {host=node01} to crush map
10、创建一个初始化目录 [iyunv@node01 ~]#touch /var/lib/ceph/osd/ceph-0/sysvinit
11、启动osd进程 /etc/init.d/cephstart osd.0
12、查看osd目录树 [iyunv@node01 ~]#ceph osd tree # id weight type name up/down reweight -1 1 root default -2 1 host node01 0 1 osd.0 up 1
6.2.2、添加第二个osd节点 [iyunv@node02 ~]# 1、创建一个OSD,生成一个osd number 2、为osd节点创建一个osd目录 3、格式化已准备好的osd硬盘,并挂在到上一步创建的osd目录(格式化为xfs格式) 4、挂在目录 5、初始化osd数据目录 6、注册osd的认证密钥 7、为此osd节点创建一个crush map 8、Place the Ceph Node under the root default 9、放置osd.0到 bucket node01 10、创建一个初始化目录 11、启动osd进程 、对应参数如下
ceph osd create mkdir -p/var/lib/ceph/osd/ceph-1 mkfs.xfs-f /dev/sdb mount/dev/sdb /var/lib/ceph/osd/ceph-1 mount -oremount,user_xattr /var/lib/ceph/osd/ceph-1
ceph-osd-i 1 --mkfs --mkkey cephauth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring cephosd crush add-bucket node02 host cephosd crush move node02 root=default cephosd crush add osd.1 1.0 host=node02 touch/var/lib/ceph/osd/ceph-1/sysvinit
/etc/init.d/cephstart osd.1
12、把上面的挂载信息写入分区表 vi /etc/fstab /dev/sdb /var/lib/ceph/osd/ceph-1 xfs defaults 0 0 /dev/sdb /var/lib/ceph/osd/ceph-1 xfs remount,user_xattr 0 0
验证: mount /dev/sdb on/var/lib/ceph/osd/ceph-1 type xfs (rw,user_xattr)
13、查看osd目录树 [iyunv@node02 ~]#ceph osd tree # id weight type name up/down reweight -1 2 root default -2 1 host node01 0 1 osd.0 up 1 -3 1 host node02 1 1 osd.1 up 1
6.2.3、添加其它osd节点 ,参考6.2.1、6.2.2 步骤 添加node01 服务器上的其它磁盘为[url=]osd[/url][url=][k1][/url] 添加node02 服务器上的其它磁盘为[url=]osd[/url][url=][k2][/url] [url=][k3][/url] 添加node03 服务器上的其它磁盘为[url=]osd[/url][url=][k4][/url] [url=][k5][/url]
验证: mount
12、查看osd目录树 [iyunv@node02 ~]#ceph osd tree
添加其它osd方法步骤同上 添加删除osd参考文档 http://docs.openfans.org/ceph/ceph4e2d658765876863/ceph-1/ceph-storage-cluster3010ceph5b5850a896c67fa43011/operations301064cd4f5c3011/adding-removing-osds3010589e52a0-52209664osd3011
6.3:添加元数据服务器6.3.1、添加第一个元数据服务器1、为mds元数据服务器创建一个目录 [iyunv@node1 ~]#mkdir -p /var/lib/ceph/mds/ceph-node01 2、为bootstrap-mds客户端创建一个密钥 注:(如果下面的密钥在目录里已生成可以省略此步骤) [iyunv@node1 ~]#ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key-n client.bootstrap-mds
3、在ceph auth库中创建bootstrap-mds客户端,赋予权限添加之前创建的密钥 注(查看ceph auth list 用户权限认证列表 如果已有client.bootstrap-mds此用户,此步骤可以省略) [iyunv@node1 ~]#ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i/var/lib/ceph/bootstrap-mds/ceph.keyring added key forclient.bootstrap-mds
4、在root家目录里创建ceph.bootstrap-mds.keyring文件 touch/root/ceph.bootstrap-mds.keyring
5、把keyring/var/lib/ceph/bootstrap-mds/ceph.keyring里的密钥导入家目录下的ceph.bootstrap-mds.keyring文件里 ceph-authtool--import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring ceph.bootstrap-mds.keyring
6、在ceph auth库中创建mds.node01用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-node01/keyring文件里 ceph--cluster ceph --name client.bootstrap-mds --keyring/var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node01 osd'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node01/keyring
7、为mds创建一个初始化文件用于启动使用(此文件为空文件) [iyunv@node1 ~]# touch/var/lib/ceph/mds/ceph-node01/sysvinit 8、为了防止重新被安装创建一个空的done文件 [iyunv@node1 ~]#touch /var/lib/ceph/mds/ceph-node01/done 9、情况mds服务进程 [iyunv@node1 ~]#service ceph start mds.node01 === mds.node01 === Starting Ceph mds.node01on node1... starting mds.node01at :/0 6.3.2:添加其它元数据服务器,参考6.3.1 步骤
添加第二个元数据[url=]服务器[/url][url=][k6][/url] 添加第三个元数据[url=]服务器[/url][url=][k7][/url]
1、查看osd目录树 ceph osd tree
查看集群状态 ceph -w 七:安装client端RBD、cephFS挂载演示7.1:客户端内核要求、安装装准备7.1.1、升级client端内核 A. 操作系统使用CentOS6.6,因为系统已经包含xfs的支持可以直接使用不需要再次编译。 B. 由于CentOS6.5系统的内核为2.6.32,因此要关闭硬盘的写入缓存,若高于此版本不需要关闭。 i. #hdparm -W 0/dev/sdb 0
7.1.2:升级系统内核 kernel 2.6.34以前的版本是没有Modulerbd的,把系统内核版本升级到最新 yum--enablerepo=elrepo-kernel install kernel-ml -y 安装完内核后修改/etc/grub.conf配置文件使 修改配置文件中的 Default=1 toDefault=0 7.1.3、验证内核支持 [首先加载ceph.ko] #modprobe -l|grep ceph kernel/fs/ceph/ceph.ko kernel/net/ceph/libceph.ko #modprobe ceph
机器重启后生效 init 6
7.2、RBD方式挂载7.2.1、安装ceph软件包
Yum install ceph –y
7.2.2、将node01配置文件copyclient
rsync -avp node01:/etc/ceph/* /etc/ceph/
7.2.3、新建一个cephpool
ceph osd pool create{pool-name} {pg-num} [{pgp-num}]
[iyunv@client ~]# cephosd pool create kman 256
7.2.3、在pool中新建一个镜像
[iyunv@client ~]# rbd create rbdtest-1--size 80960 -p kman
7.2.4、把镜像映射到pool块设备中
[iyunv@client ~]# rbd map rbdtest-1-p kman
取消映射块设备:
使用RBD命令要取消映射块设备镜像,指定rm选项,设备名称(即,一般以作为块设备映像名称相同)
sudo rbd unmap/dev/rbd/{poolname}/{imagename}
例如:
sudo rbd unmap/dev/rbd/rbd/foo
7.2.5、查看镜像映射map
[iyunv@client ~]# rbdshowmapped
id pool image snap device
0 kman rbdtest-1 - /dev/rbd0
7.2.6、格式化映射的设备块
[iyunv@client ~]# mkfs.ext4 -m0/dev/rbd0
参数:-m reserved-blocks-percentage
保留块百分比,-m:设置预留空间
默认是5%。也就是2G的空间,文件系统只是有2G*95%
7.2.7、挂载新建的分区
[iyunv@client ~]# mkdir /rbdtest
[iyunv@client ~]# mount/dev/rbd0 /rbdtest
[iyunv@client ~]# df -h
/dev/sda5 1.7T 4.8G 1.7T 1% /data
/dev/rbd0 78G 56M 78G 1% /rbdtest
7.2.8、进入新建的分区并dd测试性能
[iyunv@client ~]# cd /rbdtest
7.2.9、其它参考命令
查看创建的池
ceph osd lspools
删除池
ceph osd pool delete kman kman--yes-i-really-really-mean-it
创建池参考资料
http://docs.openfans.org/ceph/ce ... 1/pools30106c603011
7.3、cephFS挂载参考文档
http://docs.openfans.org/ceph/ce ... eph5e2e52a998753011
创建cephfs文件系统
对于一个刚创建的MDS服务,虽然服务是运行的,但是它的状态直到创建 pools 以及文件系统的时候才会变为Active.
[iyunv@zeus-4-17 rbdtest]# ceph mds dump
dumped mdsmap epoch 1
epoch 1
flags 0
created 0.000000
modified 2015-01-26 21:49:35.368742
tableserver 0
root 0
session_timeout 0
session_autoclose 0
max_file_size 0
last_failure 0
last_failure_osd_epoch 0
compat compat={},rocompat={},incompat={}
max_mds 0
in
up {}
failed
stopped
data_pools
metadata_pool 0
inline_data disabled
7.3.1、创建cephfs 存储池
ceph osd pool create {pool-name} {pg-num}[{pgp-num}]
{
Option implication:
{pool-name}--> 存储池名称,必须唯一。
{pg-num}--> 存储池拥有的归置组总数。
{pgp-num}--> 用于归置的归置组总数。
ceph osd pool create cephfs_data10
ceph osd pool createcephfs_metadata 10
ceph fs newleadorfs cephfs_metadata cephfs_data
验证数据生成
[iyunv@zeus-4-17 rbdtest]# ceph mds dump
dumped mdsmap epoch 5
epoch 5
flags 0
created 2015-01-27 16:10:16.789446
modified 2015-01-27 16:10:21.504363
tableserver 0
root 0
session_timeout 60
session_autoclose 300
max_file_size 100000000000000
last_failure 0
last_failure_osd_epoch 0
compat compat={},rocompat={},incompat={1=base v0.20,2=client writeableranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds usesversioned encoding,6=dirfrag is stored in omap,8=no anchor table}
max_mds 5
in 0
up {0=4341}
failed
stopped
data_pools 2
metadata_pool 3
inline_data disabled
4341: 172.16.2.29:6815/31531 'node03' mds.0.1 up:active seq 1493
7.3.2、客户端挂载
1、安装客户端挂载软件
yum install ceph-fuse -y
2、创建挂载目录
mkdir /mycephfs
3、模拟挂载
mount -t ceph node01:6789:/ /mycephfs -v -oname=admin,secret=AQCnrMZUaFsiCxAAXzM3aF9WjUBnwbN6PtvZEw==
返回结果:
parsing options:rw,name=admin,secret=AQCnrMZUaFsiCxAAXzM3aF9WjUBnwbN6PtvZEw==
4、证书来源位置
more /etc/ceph/ceph.client.admin.keyring #key证书来源
[client.admin]
key = AQCnrMZUaFsiCxAAXzM3aF9WjUBnwbN6PtvZEw==
auid = 0
caps mds = "allow"
caps mon = "allow *"
caps osd = "allow *"
5、另外一种命令挂载方式
[iyunv@ceph-client ~]# mount -t ceph node01:6789:/ /mycephfs -v -oname=admin,secretfile=/etc/ceph/ceph.client.admin.keyring
6、若果有多个mon监控节点,可以挂载多可节点,保证了cephFS的安全行,当有一个节点down的时候不影响写入数据
[iyunv@client ~]# mount.cephnode01,node02,node03:/ /mycephfs -v -o name=admin,secret= AQCnrMZUaFsiCxAAXzM3aF9WjUBnwbN6PtvZEw==
7、验证挂载信息:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 1.7T 4.8G 1.7T 1% /data
/dev/rbd0 78G 56M 78G 1% /rbdtest
172.16.2.27:6789:/ 8.2T 9.8G 8.2T 1% /mycephfs
8、把挂载的信息写到fstab里
[iyunv@client ~]# vi /etc/fstab
172.16.2.27,172.16.2.28,172.16.2.29:/ /mycephfs ceph name=admin,secret= AQCnrMZUaFsiCxAAXzM3aF9WjUBnwbN6PtvZEw==,noatime 0
9、指定key文件的调用方式
sudoceph-fuse -k ./ceph.client.admin.keyring -m 192.168.40.107:6789 ~/mycephfs
10、挂载后查看结果,注意观察类型
df-Th
11、取消挂载
取消挂载的操作如下:
sudoumount /mnt/mycephfs
八:检查ceph集群状态常用命令#ceph health //ceph健康状态 #ceph status //ceph当前全部状态 #ceph -w //实时监控ceph状态及变化 #ceph osddump //所有osd详细状态 #ceph osd tree //osd所在位置,及状态 #cephquorum_status //mon优先级状态 #ceph mon dump //mon节点状态 #ceph mds dump //mds详细状态
8.1、磁盘压力测试软件推荐安装fio压测工具、Linux系统自带,yum即可安装
yum install fio –y
http://www.360doc.com/content/12/0809/11/2459_229177650.shtml http://www.gongzi.org/linux-io-test.html
九:故障排查9.1、创建osd节点挂载磁盘报错,报错信息如下
[iyunv@node01 ~]#mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0 mount:wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, orother error In some cases useful info is found in syslog -try dmesg | tail or so 执行上面的命令会报错 解决的办法是:用下面的两条命令替代上面的一条命令。 [iyunv@node01~]# mount /dev/sdb /var/lib/ceph/osd/ceph-0 [iyunv@node01~]# mount -o remount,user_xattr /var/lib/ceph/osd/ceph-0
9.2:执行ceph 命令报错 Traceback (mostrecent call last): File "/usr/bin/ceph", line 63, in<module> import rados ImportError: Nomodule named rados 解决:注释自己安装python的环境变量 [iyunv@vhadoop-18-14~]# more /etc/profile #exportPYTHON=/opt/python/ #exportPATH=$PYTHON/bin:$PATH
#其它类似报错 Traceback (mostrecent call last): File"/usr/local/bin/ceph", line 53, in <module> import argparse ImportError: Nomodule named argparse 解决办法: yuminstall python-pip pipinstall argparse pipinstall argparse --upgrade
/usr/local/bin/cephosd create Traceback (mostrecent call last): File"/usr/local/bin/ceph", line 56, in <module> import rados ImportError: Nomodule named rados cp -vf /usr/local/ceph/lib/python2.6/site-packages/*/usr/lib64/python2.6 echo/usr/local/ceph/lib >/etc/ld.so.conf.d/ceph.conf
ldconfig
9.3:创建osd报错 [iyunv@node01 ~]#ceph-osd -i 3 --mkfs --mkkey 2015-01-2712:29:06.775251 7f4c5d342800 -1 OSD::mkfs: ObjectStore::mkfs failed with error-16 2015-01-2712:29:06.775288 7f4c5d342800 -1 **ERROR: error creating empty object store in /var/lib/ceph/osd/ceph-3: (16)Device or resource busy
排查解决: [iyunv@node01 ~]#mount 查看挂载分区 /dev/sda2 on /type ext4 (rw) proc on /proc typeproc (rw) sysfs on /sys typesysfs (rw) devpts on /dev/ptstype devpts (rw,gid=5,mode=620) tmpfs on /dev/shmtype tmpfs (rw) /dev/sda1 on /boottype ext4 (rw) none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb on/var/lib/ceph/osd/ceph-0 type xfs (rw,user_xattr) 此处的磁盘挂载出错啦,应该是一个新磁盘 /dev/sdc , /dev/sdbon /var/lib/ceph/osd/ceph-3 type xfs (rw,user_xattr)
9.4:报错 在ceph auth库中创建mds.node01用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-node01/keyring文件里 root@node01 ~]# ^C [iyunv@node01 ~]#ceph --cluster ceph --name client.bootstrap-mds --keyring/var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node01 osd'allow rwx' mds 'allow' mon 'allow profile mds' -o/var/lib/ceph/mds/ceph-node01/keyring 2015-01-27 13:54:44.1895357f79f9ec5700 0 librados:client.bootstrap-mds authentication error (1) Operation not permitted Error connectingto cluster: PermissionError
解决办法: 确认key文件信息: more/var/lib/ceph/bootstrap-mds/ceph.keyring [client.bootstrap-mds] key = AQDvRcZUALD4MxAAv4s4cMr6XraBt+Pw2Iowyg== 通过ceph auth list 命令查看审核信息,找到 client.bootstrap-mds key:AQDvRcZUALD4MxAAv4s4cMr6XraBt+Pw2Iowyg== caps: [mon] allow profile bootstrap-mds 确保/var/lib/ceph/bootstrap-mds/ceph.keyring 文件内容与ceph auth list 查看信息一致
9.5:报错 ceph -w clusterbc5ec6c4-3cc9-48ad-94d9-cee3cd75952a health HEALTH_WARN too few pgs per osd (7 < min 20) monmap e1: 3 mons at{node01=172.16.2.27:6789/0,node02=172.16.2.28:6789/0,node03=172.16.2.29:6789/0},election epoch 8, quorum 0,1,2 node01,node02,node03 osdmap e73: 9 osds: 9 up, 9 in pgmap v176: 64 pgs, 1 pools, 0 bytesdata, 0 objects 9524 MB used, 8365 GB / 8374 GB avail 64 active+clean 解决办法: 解决办法, 需要修改pg_num , pgp_num . 先要获取pool name, 如下, 返回pool name : rbd. ceph osd poolstats pool rbd id 0 nothing is going on 修改pool对应的pg_num和pgp_num. ceph osd pool set rbdpg_num 128 specified pg_num128 <= current 128 #要大于当前128
cephosd pool set rbd pg_num 300 验证:
ceph -s clusterbc5ec6c4-3cc9-48ad-94d9-cee3cd75952a health HEALTH_WARN too few pgs per osd (14< min 20); pool rbd pg_num 128 > pgp_num 64 monmap e1: 3 mons at{node01=172.16.2.27:6789/0,node02=172.16.2.28:6789/0,node03=172.16.2.29:6789/0},election epoch 8, quorum 0,1,2 node01,node02,node03 osdmap e75: 9 osds: 9 up, 9 in pgmap v184: 128 pgs, 1 pools, 0 bytesdata, 0 objects 9527 MB used, 8365 GB / 8374 GB avail 128 active+clean
同时还需要调整pgp_num [iyunv@mon1~]# ceph osd pool set rbd pgp_num 300
ceph -s clusterbc5ec6c4-3cc9-48ad-94d9-cee3cd75952a health HEALTH_WARN toofew pgs per osd (14 < min 20) monmap e1: 3 mons at{node01=172.16.2.27:6789/0,node02=172.16.2.28:6789/0,node03=172.16.2.29:6789/0},election epoch 8, quorum 0,1,2 node01,node02,node03 osdmap e78: 9 osds: 9 up, 9 in pgmap v225: 128 pgs, 1 pools, 0 bytesdata, 0 objects 9529 MB used, 8365 GB / 8374 GBavail 128 active+clean 最终验证: [iyunv@node02 ~]#ceph -s clusterbc5ec6c4-3cc9-48ad-94d9-cee3cd75952a health HEALTH_OK monmap e1: 3 mons at{node01=172.16.2.27:6789/0,node02=172.16.2.28:6789/0,node03=172.16.2.29:6789/0},election epoch 8, quorum 0,1,2 node01,node02,node03 osdmap e83: 9 osds: 9 up, 9 in pgmap v265: 300 pgs, 1 pools, 0 bytesdata, 0 objects 9538 MB used, 8365 GB / 8374 GBavail 300 active+clean
9.6: 报错 [iyunv@node01 ~]#ceph -w clusterbc5ec6c4-3cc9-48ad-94d9-cee3cd75952a health HEALTH_WARN pool cephfs_data has too fewpgs
|