http://bbs.ceph.org.cn/article/83
@H_502_11@
管理节点 bees Ubuntu14.04 Physical
monitor1 bees Ubuntu14.04 KVM
osd1 bees Ubuntu14.04 KVM
osd2 bees Ubuntu14.04 KVM
在所有ceph节点上配置ntp,并同步时间。此处为示例。
@H_502_73@$sudoapt-getinstallntp
--------------------------------------
#server0.ubuntu.pool.ntp.org
#server1.ubuntu.pool.ntp.org
#server2.ubuntu.pool.ntp.org
#server3.ubuntu.pool.ntp.org
server127.127.1.0
3. 安装ssh服务(所有节点)
@H_502_73@$sudoapt-getinstallopenssh-server
4. 无密码访问(管理节点)
• 生成密钥
@H_502_73@$ssh-keygen
Generatingpublic/privatekeypair.
Enterfileinwhichtosavethekey(/ceph-admin/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/ceph-admin/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/ceph-admin/.ssh/id_rsa.pub.
• 将公钥拷贝到各个ceph节点
@H_502_73@$ssh-copy-idbees@monitor1
$ssh-copy-idbees@osd1
$ssh-copy-idbees@osd2
• 修改管理节点的 ~/.ssh/config 文件,添加如下内容
@H_502_73@Hostmonitor1
Hostnamemonitor1
Userbees
Hostosd1
Hostnameosd1
Userbees
Hostosd2
Hostnameosd2
Userbees
5. 修改防火墙规则(所有节点)
• 删除iptables,ubuntu默认不安装firewall。
@H_502_73@$ufwdisable
$apt-getremoveiptables
@H_502_73@/etc/apt/sources.list
----------------------------------
debhttp://archive.ubuntu.com/ubuntu/trustymainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-securitymainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse
deb-srchttp://archive.ubuntu.com/ubuntu/trustymainrestricteduniversemultiverse
deb-srchttp://archive.ubuntu.com/ubuntu/trusty-securitymainrestricteduniversemultiverse
7. 配置主机名(所有节点)
@H_502_73@/etc/hosts
-----------------------------------
193.168.123.90bees1
193.168.123.67bees2
193.168.123.89osd1
193.168.123.58monitor1
193.168.123.145osd2
@H_502_73@$mkdirmy-cluster
$cdmy-cluster
$sudomkfs.xfs/dev/sda-f
$mkfs.xfs/dev/sdb-f
$exit
$sshosd2
$sudomkfs.xfs/dev/sda-f
$mkfs.xfs/dev/sdb-f
$exit
$ceph-deploydiskzaposd1:sdb
$ceph-deploydiskzaposd2:sda
$ceph-deploydiskzaposd2:sdb
$ceph-deployosdprepareosd2:sdb:/dev/sda
$ceph-deployosdactivateosd2:/dev/sdb1:/dev/sda1
HEALTH_OK
$ceph-s
cluster54356b3d-be17-4d5c-a8b0-804420caa59d
healthHEALTH_OK
monmape1:1monsat{monitor1=193.168.123.58:6789/0}
electionepoch3,quorum0monitor1
osdmape10:2osds:2up,2in
flagssortbitwise
pgmapv23:64pgs,1pools,0bytesdata,0objects
68380kBused,20391MB/20457MBavail
64activeclean
以下问题是发生在
1)使用root用户配置ceph集群。
2)osd守护进程使用ext4格式的磁盘。
的情况。
主机A —————————————— 主机B (可以)
主机A中的虚拟机 ————————— 主机B (不可以)
主机A —————————————— 主机B中的虚拟机 (不可以)
* 原因:
公司网络限制。
解决办法
使用公司白名单上的MAC地址。
@H_502_73@root@monitor1:/etc/apt#apt-getupdate
E:Methodhttphasdiedunexpectedly!
E:Sub-processhttpreceivedsignal6.
root@monitor1:/etc/apt#
原因:
公司网络限制。
解决办法
使用能够访问外网的MAC地址。
@H_502_73@[osd1][WARNIN]2016-05-2216:02:20.4030397f859771e800-1asok(0x7f85a1ffc280)AdminSocketConfigObs::init:Failed:
AdminSocket::bind_and_listen:FailedtobindtheUNIXdomainsocketto'/var/run/ceph/ceph-osd.0.asok':(13)Permissiondenied
[osd1][WARNIN]2016-05-2216:02:20.4036017f859771e800-1filestore(/var/local/osd1)mkfs:write_version_stamp()Failed:(13)Permissiondenied
[osd1][WARNIN]2016-05-2216:02:20.4036307f859771e800-1OSD::mkfs:ObjectStore::mkfsFailedwitherror-13
[osd1][WARNIN]2016-05-2216:02:20.4036827f859771e800-1**ERROR:errorcreatingemptyobjectstorein/var/local/osd1:(13)Permissiondenied
[osd1][WARNIN]Traceback(mostrecentcalllast):
[osd1][WARNIN]File"/usr/sbin/ceph-disk",line9,in<module>
[osd1][WARNIN]load_entry_point('ceph-disk==1.0.0','console_scripts','ceph-disk')()
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line4964,inrun
[osd1][WARNIN]main(sys.argv[1:])
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line4915,inmain
[osd1][WARNIN]args.func(args)
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3277,inmain_activate
[osd1][WARNIN]init=args.mark_init,
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3097,inactivate_dir
[osd1][WARNIN](osd_id,cluster)=activate(path,activate_key_template,init)
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3202,inactivate
[osd1][WARNIN]keyring=keyring,line2695,inmkfs
[osd1][WARNIN]'--setgroup',get_ceph_group(),line439,incommand_check_call
[osd1][WARNIN]returnsubprocess.check_call(arguments)
[osd1][WARNIN]File"/usr/lib/python2.7/subprocess.py",line540,incheck_call
[osd1][WARNIN]raiseCalledProcessError(retcode,cmd)
[osd1][WARNIN]subprocess.CalledProcessError:Command'['/usr/bin/ceph-osd','--cluster','ceph','--mkfs','--mkkey','-i','0','--monmap','/var/local/osd1/activate.monmap','--osd-data','/var/local/osd1','--osd-journal','/var/local/osd1/journal','--osd-uuid','cb9d8962-75f7-4cb1-8a99-ca8044ee283f','--keyring','/var/local/osd1/keyring','--setuser','--setgroup','ceph']'returnednon-zeroexitstatus1
[osd1][ERROR]RuntimeError:commandreturnednon-zeroexitstatus:1
[ceph_deploy][ERROR]RuntimeError:Failedtoexecutecommand:/usr/sbin/ceph-disk-vactivate--mark-initupstart--mount/var/local/osd1
原因:
对/var/local/osd1没有相关权限。
解决办法:
给/var/local/osd1添加所有权限。
@H_502_73@root@osd1:/home/bees#chmod777/var/local/osd1
原因:
在ceph节点上,/var/lib/ceph/osd/目录下的某个osd进程正在使用这个磁盘。
解决办法:
1. 换一个磁盘或者目录。如果还是出现此问题,使用方法2。
2. 删除/var/lib/ceph/osd/目录下使用此磁盘的osd。
如果主机上有多个osd守护进程,注意不要删错了。
@H_502_73@root@bees2:/home/my-cluster#cephhealth
HEALTH_ERR64pgsarestuckinactiveformorethan300seconds;64pgsstuckinactive
原因:
因为本次osd守护进程所在磁盘格式为ext4。
解决办法:
1. 重新添加一块磁盘,推荐格式化为xfs。
2. 在osd字段下添加 filestore xattr use omap = true。方法2暂未尝试。
cluster15e780dc-f32c-47f8-8105-54a45aaa167d
healthHEALTH_ERR
2pgsarestuckinactiveformorethan300seconds
62pgsdegraded
64pgsstale
2pgsstuckstale
62pgsstuckunclean
62pgsundersized
monmape1:1monsat{monitor1=193.168.123.58:6789/0}
electionepoch9,quorum0monitor1
osdmape491:2osds:2up,2in;62remappedpgs
flagssortbitwise
pgmapv2421:64pgs,0objects
79208kBused,30620MB/30697MBavail
62staleactiveundersizeddegraded
2staleactiveclean
原因:
暂不清楚。
解决办法 卸载ceph并清除配置,并重新安装ceph。给出两点建议 1. 使用普通用户执行ceph-deploy。 2. 最好不要使用ext4的磁盘,推荐使用xfs。
1. 构成与预检
————————————————————————————————————————————————构成
节点名称 │ 用户名 │ OS版本 │ 机器类型管理节点 bees Ubuntu14.04 Physical
monitor1 bees Ubuntu14.04 KVM
osd1 bees Ubuntu14.04 KVM
osd2 bees Ubuntu14.04 KVM
预检
1. 安装ceph部署工具(管理节点)$wget-q-O-'https://download.ceph.com/keys/release.asc'|sudoapt-keyadd-
$echodebhttp://download.ceph.com/debian-{ceph-stable-release}/$(lsb_release-sc)main|sudotee/etc/apt/sources.list.d/ceph.list
$sudoapt-getupdate
问题 1:2. 安装ntp服务并配置(所有节点)
bees@monitor1:~$ wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
gpg: no valid OpenPGP data found.
原因:
没有配置wget代理。
解决办法:
配置wget代理。
问题 2:
如果root用户使用wget正常,但是非root用户(本例中是bees用户)使用wget出现问题。
bees@monitor1:/root$ sudo wget -O release.asc https://download.ceph.com/keys ... 05-0916:38:03-- https://download.ceph.com/keys/release.ascX92XResolving download.ceph.com (download.ceph.com)... Failed: No address associated with hostname.
wget: unable to resolve host address download.ceph.com
原因:
在root用户下配置wget代理。
解决办法:
在非root用户下(本例中是bees用户)下配置wget代理。
在所有ceph节点上配置ntp,并同步时间。此处为示例。
@H_502_73@$sudoapt-getinstallntp
--------------------------------------
#server0.ubuntu.pool.ntp.org
#server1.ubuntu.pool.ntp.org
#server2.ubuntu.pool.ntp.org
#server3.ubuntu.pool.ntp.org
server127.127.1.0
3. 安装ssh服务(所有节点)
@H_502_73@$sudoapt-getinstallopenssh-server
4. 无密码访问(管理节点)
• 生成密钥
@H_502_73@$ssh-keygen
Generatingpublic/privatekeypair.
Enterfileinwhichtosavethekey(/ceph-admin/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Entersamepassphraseagain:
Youridentificationhasbeensavedin/ceph-admin/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/ceph-admin/.ssh/id_rsa.pub.
• 将公钥拷贝到各个ceph节点
@H_502_73@$ssh-copy-idbees@monitor1
$ssh-copy-idbees@osd1
$ssh-copy-idbees@osd2
• 修改管理节点的 ~/.ssh/config 文件,添加如下内容
@H_502_73@Hostmonitor1
Hostnamemonitor1
Userbees
Hostosd1
Hostnameosd1
Userbees
Hostosd2
Hostnameosd2
Userbees
5. 修改防火墙规则(所有节点)
• 删除iptables,ubuntu默认不安装firewall。
@H_502_73@$ufwdisable
$apt-getremoveiptables
如果有安全需要,推荐制定防火墙规则。6. 配置apt-get源(所有节点)
@H_502_73@/etc/apt/sources.list
----------------------------------
debhttp://archive.ubuntu.com/ubuntu/trustymainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-securitymainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse
debhttp://archive.ubuntu.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse
deb-srchttp://archive.ubuntu.com/ubuntu/trustymainrestricteduniversemultiverse
deb-srchttp://archive.ubuntu.com/ubuntu/trusty-securitymainrestricteduniversemultiverse
7. 配置主机名(所有节点)
@H_502_73@/etc/hosts
-----------------------------------
193.168.123.90bees1
193.168.123.67bees2
193.168.123.89osd1
193.168.123.58monitor1
193.168.123.145osd2
2. 快速安装(管理节点)
————————————————————————————————————————————————1. 创建集群目录,保存ceph-deploy生成的配置文件及密钥对
推荐使用非root用户(本例中是bees用户)创建。@H_502_73@$mkdirmy-cluster
$cdmy-cluster
2. 创建集群
@H_502_73@$ceph-deploynewmonitor13. 允许两个osd也能达到active clean状态。在当前目录下ceph.conf文件的[global]字段中添加如下内容
@H_502_73@osdpooldefaultsize=24. 如果有多个网卡,将public network也写入ceph.conf文件的[global]字段中
@H_502_73@public_network=193.168.123.0/245. 在各个节点上安装ceph
@H_502_73@$ceph-deployinstallmonitor1osd1osd2问题:因为之前安装ceph-base包出现问题,现在只能手动下载ceph-base安装包并强制覆盖安装。
Preparing to unpack .../ceph-base_10.2.1-1trusty_amd64.deb ...
Unpacking ceph-base (10.2.1-1trusty) ...
dpkg: error processing archive /var/cache/apt/archives/ceph-base_10.2.1-1trusty_amd64.deb (--unpack):
trying to overwrite '/usr/share/man/man8/ceph-deploy.8.gz',which is also in package ceph-deploy 1.4.0-0ubuntu1
Selecting prevIoUsly unselected package ceph-fs-common.
Preparing to unpack .../ceph-fs-common_10.2.1-1trusty_amd64.deb ...
Unpacking ceph-fs-common (10.2.1-1trusty) ...
Selecting prevIoUsly unselected package ceph-fuse.
Preparing to unpack .../ceph-fuse_10.2.1-1trusty_amd64.deb ...
Unpacking ceph-fuse (10.2.1-1trusty) ...
Selecting prevIoUsly unselected package ceph-mds.
Preparing to unpack .../ceph-mds_10.2.1-1trusty_amd64.deb ...
Unpacking ceph-mds (10.2.1-1trusty) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
/var/cache/apt/archives/ceph-base_10.2.1-1trusty_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
原因:
之前安装ceph-base包出现问题。
解决办法:
$ dpkg -i --force-overwrite /var/cache/apt/archives/ceph-base_10.2.1-1trusty_amd64.deb
6. 初始化monitor节点
@H_502_73@$ceph-deploymoncreate-initial3. 配置osd节点(管理节点)
————————————————————————————————————————————————1. 为osd守护进程创建所需的磁盘。sdb最为OSD守护进程磁盘,sda作为日志磁盘。
@H_502_73@$sshosd1$sudomkfs.xfs/dev/sda-f
$mkfs.xfs/dev/sdb-f
$exit
$sshosd2
$sudomkfs.xfs/dev/sda-f
$mkfs.xfs/dev/sdb-f
$exit
2. 擦净磁盘,比如分区表等。
@H_502_73@$ceph-deploydiskzaposd1:sda$ceph-deploydiskzaposd1:sdb
$ceph-deploydiskzaposd2:sda
$ceph-deploydiskzaposd2:sdb
3. 准备osd节点
@H_502_73@$ceph-deployosdprepareosd1:sdb:/dev/sda$ceph-deployosdprepareosd2:sdb:/dev/sda
4. 激活osd节点
@H_502_73@$ceph-deployosdactivateosd1:/dev/sdb1:/dev/sda1$ceph-deployosdactivateosd2:/dev/sdb1:/dev/sda1
5. 将配置文件和admin密钥拷贝到ceph所有节点
@H_502_73@$ceph-deployadminbees2monitor1osd1osd2问题:在卸载ceph后,没有删除管理节点的ceph配置,导致新生成的文件和以前的文件内容有所不同。强制覆盖。
[ceph_deploy.admin][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different conte use --overwrite-conf to overwrite
原因:
卸载ceph之后并没有删除管理节点的ceph配置文件,新生成的ceph配置文件和之前的出现差异。
解决办法:
$ ceph-deploy --overwrite-conf admin bees2 monitor1 osd1 osd2
6. 添加对ceph.client.admin.keyring 有正确的操作权限
@H_502_73@$sudochmod+r/etc/ceph/ceph.client.admin.keyring7. 检查集群的健康情况,集群应该是active clean状态
@H_502_73@$cephhealthHEALTH_OK
$ceph-s
cluster54356b3d-be17-4d5c-a8b0-804420caa59d
healthHEALTH_OK
monmape1:1monsat{monitor1=193.168.123.58:6789/0}
electionepoch3,quorum0monitor1
osdmape10:2osds:2up,2in
flagssortbitwise
pgmapv23:64pgs,1pools,0bytesdata,0objects
68380kBused,20391MB/20457MBavail
64activeclean
4. 问题一览
————————————————————————————————————————————————以下问题是发生在
1)使用root用户配置ceph集群。
2)osd守护进程使用ext4格式的磁盘。
的情况。
问题 1
安装好虚拟机之后,设置桥接方式。发现主机A中的虚拟机ping不通主机B。主机B中的虚拟机ping不通主机A。但是主机A和主机是可以相互ping通。主机A —————————————— 主机B (可以)
主机A中的虚拟机 ————————— 主机B (不可以)
主机A —————————————— 主机B中的虚拟机 (不可以)
* 原因:
公司网络限制。
解决办法
使用公司白名单上的MAC地址。
问题 2
在使用apt-get更新源的时候,出现如下问题。@H_502_73@root@monitor1:/etc/apt#apt-getupdate
E:Methodhttphasdiedunexpectedly!
E:Sub-processhttpreceivedsignal6.
root@monitor1:/etc/apt#
原因:
公司网络限制。
解决办法
使用能够访问外网的MAC地址。
问题 3
使用目录作为osd守护进程。当activate osd设备的时候出现如下错误。@H_502_73@[osd1][WARNIN]2016-05-2216:02:20.4030397f859771e800-1asok(0x7f85a1ffc280)AdminSocketConfigObs::init:Failed:
AdminSocket::bind_and_listen:FailedtobindtheUNIXdomainsocketto'/var/run/ceph/ceph-osd.0.asok':(13)Permissiondenied
[osd1][WARNIN]2016-05-2216:02:20.4036017f859771e800-1filestore(/var/local/osd1)mkfs:write_version_stamp()Failed:(13)Permissiondenied
[osd1][WARNIN]2016-05-2216:02:20.4036307f859771e800-1OSD::mkfs:ObjectStore::mkfsFailedwitherror-13
[osd1][WARNIN]2016-05-2216:02:20.4036827f859771e800-1**ERROR:errorcreatingemptyobjectstorein/var/local/osd1:(13)Permissiondenied
[osd1][WARNIN]Traceback(mostrecentcalllast):
[osd1][WARNIN]File"/usr/sbin/ceph-disk",line9,in<module>
[osd1][WARNIN]load_entry_point('ceph-disk==1.0.0','console_scripts','ceph-disk')()
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line4964,inrun
[osd1][WARNIN]main(sys.argv[1:])
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line4915,inmain
[osd1][WARNIN]args.func(args)
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3277,inmain_activate
[osd1][WARNIN]init=args.mark_init,
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3097,inactivate_dir
[osd1][WARNIN](osd_id,cluster)=activate(path,activate_key_template,init)
[osd1][WARNIN]File"/usr/lib/python2.7/dist-packages/ceph_disk/main.py",line3202,inactivate
[osd1][WARNIN]keyring=keyring,line2695,inmkfs
[osd1][WARNIN]'--setgroup',get_ceph_group(),line439,incommand_check_call
[osd1][WARNIN]returnsubprocess.check_call(arguments)
[osd1][WARNIN]File"/usr/lib/python2.7/subprocess.py",line540,incheck_call
[osd1][WARNIN]raiseCalledProcessError(retcode,cmd)
[osd1][WARNIN]subprocess.CalledProcessError:Command'['/usr/bin/ceph-osd','--cluster','ceph','--mkfs','--mkkey','-i','0','--monmap','/var/local/osd1/activate.monmap','--osd-data','/var/local/osd1','--osd-journal','/var/local/osd1/journal','--osd-uuid','cb9d8962-75f7-4cb1-8a99-ca8044ee283f','--keyring','/var/local/osd1/keyring','--setuser','--setgroup','ceph']'returnednon-zeroexitstatus1
[osd1][ERROR]RuntimeError:commandreturnednon-zeroexitstatus:1
[ceph_deploy][ERROR]RuntimeError:Failedtoexecutecommand:/usr/sbin/ceph-disk-vactivate--mark-initupstart--mount/var/local/osd1
原因:
对/var/local/osd1没有相关权限。
解决办法:
给/var/local/osd1添加所有权限。
@H_502_73@root@osd1:/home/bees#chmod777/var/local/osd1
问题 4
@H_502_73@ceph_disk.main.Error:Error:anothercephosd.0alreadymountedinposition(old/differentclusterinstance?);unmountingours.原因:
在ceph节点上,/var/lib/ceph/osd/目录下的某个osd进程正在使用这个磁盘。
解决办法:
1. 换一个磁盘或者目录。如果还是出现此问题,使用方法2。
2. 删除/var/lib/ceph/osd/目录下使用此磁盘的osd。
如果主机上有多个osd守护进程,注意不要删错了。
问题 5
在查看ceph集群状态的时候,出现如下问题@H_502_73@root@bees2:/home/my-cluster#cephhealth
HEALTH_ERR64pgsarestuckinactiveformorethan300seconds;64pgsstuckinactive
原因:
因为本次osd守护进程所在磁盘格式为ext4。
解决办法:
1. 重新添加一块磁盘,推荐格式化为xfs。
2. 在osd字段下添加 filestore xattr use omap = true。方法2暂未尝试。
问题 6
@H_502_73@root@bees2:/home/my-cluster#ceph-scluster15e780dc-f32c-47f8-8105-54a45aaa167d
healthHEALTH_ERR
2pgsarestuckinactiveformorethan300seconds
62pgsdegraded
64pgsstale
2pgsstuckstale
62pgsstuckunclean
62pgsundersized
monmape1:1monsat{monitor1=193.168.123.58:6789/0}
electionepoch9,quorum0monitor1
osdmape491:2osds:2up,2in;62remappedpgs
flagssortbitwise
pgmapv2421:64pgs,0objects
79208kBused,30620MB/30697MBavail
62staleactiveundersizeddegraded
2staleactiveclean
原因:
暂不清楚。
解决办法 卸载ceph并清除配置,并重新安装ceph。给出两点建议 1. 使用普通用户执行ceph-deploy。 2. 最好不要使用ext4的磁盘,推荐使用xfs。