ceph 14 后 ceph adm支持自动配置numa
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph 14 后 ceph adm支持自动配置numa相关的知识,希望对你有一定的参考价值。
参考技术A 全局开启osd 使用numa自动绑定osd进程和cpu(内存)的亲和性指定numa亲和开关,由程序自动判断。(ceph 14版本以后支持)
osd_numa_auto_affinity
NUMA(非一致内存访问,Non-Uniform Memory Access) 技术将多个 CPU 划分为不同的 NUMA 节点,在物理分布上,每个 NUMA 节点的处理器和内存块的物理距离更小,访问它自己的本地内存比非本地内存的速度更快。对于进程来说如果让其运行在已经分配内存的 NUMA 节点上,那么其访问效率可以最大化
使用如下子命令可以进行numa节点配置
osd_numa_auto_affinity: 如果网络和存储在同一 NUMA 节点上会自动设置 affinity
ceph osd numa-status 命令显示所有 OSD 的 NUMA 信息
修改方式:通过修改配置文件ceph.conf
在[global]区域增加
osd_numa_auto_affinity = true
参考: https://bbs.huaweicloud.com/forum/thread-92388-1-1.html
ceph
1、Ceph是分布式存储系统,支持三种接口。
Object:有原生的API,而且也兼容Swift和S3的API
Block:支持精简配置、快照、克隆
File:Posix接口,支持快照
Ceph也是分布式存储系统,它的特点是:
高扩展性:使用普通x86服务器,支持10~1000台服务器,支持TB到PB级的扩展。
高可靠性:没有单点故障,多数据副本,自动管理,自动修复。
高性能:数据分布均衡,并行化度高。对于objects storage和block storage,不需要元数据服务器。
目前Inktank公司掌控Ceph的开发,但Ceph是开源的,遵循LGPL协议。Inktank还积极整合Ceph和其他云计算和大数据平台,目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop等。
1.1、组件:
Ceph OSDs: Object Storage Device,提供存储资源。
Monitors:维护整个Ceph集群的全局状态。
MDSs: 用于保存CephFS的元数据。
1.2、映射
Ceph的命名空间是 (Pool, Object),每个Object都会映射到一组OSD中(由这组OSD保存这个Object):
(Pool, Object) → (Pool, PG) → OSD set → Disk
Ceph中Pools的属性有:
Object的副本数
Placement Groups的数量
所使用的CRUSH Ruleset
在Ceph中,Object先映射到PG(Placement Group),再由PG映射到OSD set。每个Pool有多个PG,每个Object通过计算hash值并取模得到它所对应的PG。PG再映射到一组OSD(OSD的个数由Pool 的副本数决定),
第一个OSD是Primary,剩下的都是Replicas。
数据映射(Data Placement)的方式决定了存储系统的性能和扩展性。(Pool, PG) → OSD set 的映射由四个因素决定:
CRUSH算法:一种伪随机算法。
OSD MAP:包含当前所有Pool的状态和所有OSD的状态。
CRUSH MAP:包含当前磁盘、服务器、机架的层级结构。
CRUSH Rules:数据映射的策略。这些策略可以灵活的设置object存放的区域
把Object分成组,这降低了需要追踪和处理metadata的数量(在全局的层面上,我们不需要追踪和处理每个object的metadata和placement,只需要管理PG的metadata就可以了。PG的数量级远远低于object的
数量级)。
增加PG的数量可以均衡每个OSD的负载,提高并行度。
分隔故障域,提高数据的可靠性。
1.3、强一致性
Ceph的读写操作采用Primary-Replica模型,Client只向Object所对应OSD set的Primary发起读写请求,这保证了数据的强一致性。
由于每个Object都只有一个Primary OSD,因此对Object的更新都是顺序的,不存在同步问题。
当Primary收到Object的写请求时,它负责把数据发送给其他Replicas,只要这个数据被保存在所有的OSD上时,Primary才应答Object的写请求,这保证了副本的一致性。
RBD的I/O路径很长,要经过网络、文件系统、磁盘:
Librbd -> networking -> OSD -> FileSystem -> Disk
2、案例说明:
节点:
osd节点,每个系统都添加500G硬盘
10.200.197.11 cs1.99bill.com
10.200.197.12 cs2.99bill.com
10.200.197.13 cs3.99bill.com
10.200.197.14 cs4.99bill.com
10.200.197.15 cs5.99bill.com
10.200.197.16 cs6.99bill.com
10.200.197.17 cs7.99bill.com
10.200.197.18 cs8.99bill.com
10.200.197.19 cs9.99bill.com
10.200.197.20 cs10.99bill.com
10.200.197.21 cs11.99bill.com
10.200.197.22 cs12.99bill.com
10.200.197.23 cs13.99bill.com
10.200.197.24 cs14.99bill.com
10.200.197.25 cs15.99bill.com
mon节点
10.200.197.200 nc1.99bill.com
10.200.197.201 nc2.99bill.com
10.200.197.202 nc3.99bill.com
客户端
10.200.197.100 vip
10.200.197.252 cn1.99bill.com
10.200.197.253 cn2.99bill.com
mount 10.200.197.100:/data /mnt/data
2.1、
关闭防火墙或者开放 6789/6800~6900 端口、关闭 SELINUX;
配置源
centos7.repo
[ceph]
name=CentOS-- 163.com
baseurl= http://mirrors.163.com/ceph/rpm/el7/x86_64/
gpgcheck=0
gpgkey= http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
[[email protected] yum.repos.d]# cat epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
2.2、每台yum install ceph
安装部署主机(ceph-deploy)安装环境准备
cd /etc/ceph/
yum install ceph-deploy -y
创建 mon 节点
cd /etc/ceph/
ceph-deploy new nc1 nc2 nc3
2.3:添加初始 monitor 节点和收集秘钥
ceph-deploy mon create-initial
2.4:验证集群 mon 节点安装成功
[[email protected] ceph]# ceph -s
安装集群 osd 服务
每台osd服务器格式化盘
fdisk /dev/sdb
mkfs.xfs /dev/sdb1
执行 osd 初始化命令
ceph-deploy --overwrite-conf osd prepare cs1:sdb1 cs2:sdb1 cs3:sdb1 cs4:sdb1 cs5:sdb1 cs6:sdb1 cs7:sdb1
激活 OSD
ceph-deploy osd activate cs1:sdb1 cs2:sdb1 cs3:sdb1 cs4:sdb1 cs5:sdb1 cs6:sdb1 cs7:sdb1
2.5:验证 osd 启动状态
ceph osd tree
2.6:PGs per OSD (2 < min 30)报错解决:
修改前查看数量
[[email protected] ~]# ceph osd dump|grep rbd
修改配置:
ceph osd pool set rbd pg_num 128
ceph osd pool set rbd pgp_num 128
2.8:添加元数据服务器
a:添加元数据服务器
cd /etc/ceph
ceph-deploy --overwrite-conf mds create nc{1..3}
b:验证 mds 服务
[[email protected] ceph]# ceph mds stat
e1: 0/0/0 up
c:状态查看。还没有创建时候的状态。
对于一个刚创建的 MDS 服务,虽然服务是运行的,但是它的状态直到创建 pools 以及文件系统的时候才会变为
Active.
[[email protected] ~]# ceph mds dump
d:通过下面的操作创建 Filesystem
[[email protected] ~]# ceph osd pool create cephfs_data 128
[[email protected] ~]# ceph osd pool create cephfs_metadata 128
[[email protected] ~]# ceph fs new leadorfs cephfs_metadata cephfs_data
e:成功创建后,mds stat 的状态如下
[[email protected] ~]# ceph mds stat
2.9:同步集群配置文件
同步配置文件和 client.admin key
ceph-deploy --overwrite-conf admin nc{1..3} cs{1..9}
单独同步配置文件
ceph-deploy --overwrite-conf config push nc{1..3} cs{1..9}
2.10:修改 crushmap 信息
1:把 ceph 的 crush map 导出并转换为文本格式,
先把 crush map 以二进制的形式导入到 test 文本。
Ptmind Ceph Cluster 安装配置文档
ceph osd getcrushmap -o test
2:转换为可读格式:
用 crushtool 工具把 test 里的二进制数据转换成文本形式保存到 test1 文档里。
crushtool -d test -o test1
3:把重新写的 ceph crush 导入 ceph 集群
把 test1 转换成二进制形式
crushtool -c test1 -o test2
把 test2 导入集群、
ceph osd setcrushmap -i test2
2.11:清理软件包
ceph-deploy purge nc{1..3} cs{1..9}
2:卸载之前挂载的 osd 磁盘
/usr/bin/umount -a
rm -rf /var/lib/ceph
2.12:集群配置参数优化
1:配置参数优化
#
fsid = 973482fb-acf2-4a39-a691-3f810120b013
mon_initial_members = nc1, nc2, nc3
mon_host = 172.16.6.151,172.16.6.152,172.16.6.153
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
#数据副本数,手动设置等同于 ceph osd pool set {pool-name} size {size}。
osd pool default size = 3
#数据最小副本数,以向客户端确认写操作。如果未达到最小值, Ceph 就不会向客户端回复已写确认。
osd pool default min size = 1
#当 Ceph 存储集群开始时,Ceph 在 OS 等级(比如, 文件描述符最大的)设置 max open fds 。它帮助阻止 Ceph OSD 守
护进程在文件描述符之外运行。
max open files= 131072
#集群公共网络
public network = 192.168.0.0/16
#集群私有网络
cluster network = 192.168.0.0/16
###OSD filestore
#扩展属性(XATTRs),为 XATTRS 使用 object map,EXT4 文件系统时使用,XFS 或者 btrfs 也可以使用默认:false
#为 XATTR 使用对象图,使用 ext4 文件系统的时候要设置。
filestore xattr use omap = true
#在一个 CRUSH 规则内用于 chooseleaf 的桶类型。用序列号而不是名字
osd crush chooseleaf type = 1
[mon]
#时钟偏移
mon clock drift allowed = .50
# OSD 宕机后数据开始恢复时间
mon osd down out interval = 900
#MON-OSD 满比,在被 OSD 进程使用之前一个硬盘可用空间大于%20,认为状态良好。
mon osd full ratio = .80
#MON-OSD nearfull 率,在被 OSD 进程使用之前一个硬盘的剩余空间大于%30,认为状态良好,另集群总空间使用率
大于%70,系统会告警。
mon osd nearfull ratio = .70
[osd]
#osd 格式化磁盘的分区格式 xfs
osd mkfs type = xfs
#强制格式化
osd mkfs options xfs = -f
#每个存储池默认 pg 数
osd pool default pg num = 3000
#每个存储池默认 pgp 数
osd pool default pgp num = 3000
##同步间隔
#从日志到数据盘最大同步间隔间隔秒数,默认:5
filestore max sync interval = 15
#从日志到数据盘最小同步间隔秒数,默认 0.1
filestore min sync interval = 10
##队列
#数据盘最大接受的操作数,超过此设置的请求会被拒绝。默认:500
filestore queue max ops = 25000
#数据盘一次操作最大字节数(bytes)默认:100 << 20
filestore queue max bytes = 10485760
#数据盘能够 commit 的最大操作数默认:500
filestore queue committing max ops = 5000
#数据盘能够 commit 的最大字节数(bytes)100 << 20
filestore queue committing max bytes = 10485760000
#最大并行文件系统操作线程数,默认 2;
filestore op threads = 32
###osd journal
#注意,Ceph OSD 进程在往数据盘上刷数据的过程中,是停止写操作的。
#OSD 日志大小(MB)默认 5120,推荐 20000,使用 ssd 块存储日志,可以设置为 0,使用整个块。
osd journal size = 10000 #从 v0.54 起,如果日志文件是块设备,这个选项会被忽略,且使用整个块设备。
#一次性写入的最大字节数(bytes)默认:10 << 20
journal max write bytes = 1073714824
#journal 一次写入日志的最大数量,默认:100
journal max write entries = 10000
#journal 一次性最大在队列中的操作数,默认 500
journal queue max ops = 50000
#journal 一次性最大在队列中的字节数(bytes),默认:10 << 20
journal queue max bytes = 10485760000
###OSD 通讯
#注意:增加 osd op threads 和 disk threads 会带来额外的 CPU 开销
#OSD 一次可写入的最大值(MB),默认:90
osd max write size = 512
#客户端允许在内存中的最大数据(bytes),默认:500MB 默认 500 * 1024L * 1024L =524288000
osd client message size cap = 2147483648
#在 Deep Scrub 时候允许读取的字节数(bytes),默认:524288
osd deep scrub stride = 131072
#OSD 进程操作的线程数,设置为 0 来禁用它。增加的数量可能会增加请求的处理速率。默认:2
osd op threads = 8
#OSD 密集型操作例如恢复和 Scrubbing 时的线程,默认:1
osd disk threads = 5
###OSD 映射
#保留 OSD Map 的缓存(MB),默认:500
osd map cache size = 1024
#OSD 进程在内存中的 OSD Map 缓存(MB),默认:50
osd map cache bl size = 128
#Ceph OSD xfs Mount 选项默认:rw,noatime,inode64
osd mount options xfs = rw,noexec,nodev,noatime,nodiratime,nobarrier
###OSD recovery
#osd 异常数据恢复启动的恢复进程数量,默认:1
Ptmind Ceph Cluster 安装配置文档 --康建华
osd recovery threads = 2
#恢复操作优先级,它是相对 OSD 客户端 运算 优先级。取值 1-63,值越高占用资源越高,默认:10 。
osd recovery op priority = 4
#同一时间内活跃的恢复请求数,更多的请求将加速复苏,但请求放置一个增加的群集上的负载。默认:15
osd recovery max active = 10
#一个 OSD 允许的最大 backfills 数,默认:10
osd max backfills = 4
[client]
#启用缓存 RADOS 块设备,默认:false
rbd cache = true
#RBD 缓存大小(以字节为单位)默认:33554432
rbd cache size = 268435456
#缓存为 write-back 时允许的最大 dirty 字节数(bytes),如果为 0,使用 write-through ,默认:25165824
#Write-through:向高速 Cache 写入数据时同时也往后端慢速设备写一份,两者都写完才返回。
#Write-back:向高速 Cache 写完数据后立即返回,数据不保证立即写入后端设备。给调用者的感觉是速度快,但需
要额外的机制来防止掉电带来的数据不一致。
rbd cache max dirty = 134217728
#在被刷新到存储盘前 dirty 数据存在缓存的时间(seconds)默认:1
rbd cache max dirty age = 5
[mon.nc1]
host = nc1
mon data = /var/lib/ceph/mon/ceph-nc1/
mon addr = 172.16.6.151:6789
[mon.nc2]
host = nc2
mon data = /var/lib/ceph/mon/ceph-nc2/
mon addr = 172.16.6.152:6789
[mon.nc3]
host = nc3
mon data = /var/lib/ceph/mon/ceph-nc3/
mon addr = 172.16.6.153:6789
3使用
3.1、cephfs
1、添加元数据服务器
cd /etc/ceph
ceph-deploy --overwrite-conf mds create nc{1..3}
2:验证 mds 服务
[[email protected] ceph]# ceph mds stat
2:通过下面的操作创建 Filesystem
[[email protected] ~]# ceph osd pool create cephfs_data 128
[[email protected] ~]# ceph osd pool create cephfs_metadata 128
[[email protected] ~]# ceph fs new leadorfs cephfs_metadata cephfs_data
3、创建密钥文件
Ceph 存储集群默认启用认证,你应该有个包含密钥的配置文件(但不是密钥环本身)。用下述方法获取某一用户的密钥:
在密钥环文件中找到与某用户对应的密钥,例如:
cat ceph.client.admin.keyring
找到用于挂载 Ceph 文件系统的用户,复制其密钥。大概看起来如下所示:
[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
打开文本编辑器。
把密钥粘帖进去,大概像这样:
AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
保存文件,并把其用户名 name 作为一个属性(如 admin.secret )。
4、ceph使用
[[email protected] ~]# mount -t ceph 192.168.9.104:6789:/ /mnt/mycephfs2 -o name=admin,secretfile=/data/admin.secret
FATAL: Module ceph not found.
failed to load ceph kernel module (1)
mount error: ceph filesystem not supported by the system
[[email protected] ~]# rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
[[email protected] ~]# rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
[[email protected] ~]# yum --enablerepo=elrepo-kernel install kernel-ml
If you want that new kernel to boot by default, edit /etc/grub.conf, and change the Default=1 to Default=0, and reboot.
挂载
mount -t ceph 192.168.9.104:6789,192.168.9.105:6789,192.168.9.106:6789:/credit_platform /opt/netdata/Creditdata -o name=admin,secretfile=/etc/ceph/admin.secret
3.2、块设备
创建一个pool ‘ db-pool’
[[email protected] ~]# ceph osd pool create db-pool 128 128
创建镜像
rbd create db1 --size 102400 --pool db-pool
我们同时也可以改变image的容量大小
[[email protected] ceph]# rbd resize --size 1024000 db1 --pool db-pool
查看pool中的镜像
rbd ls db-pool
映射
rbd map db1 --pool db-pool --id admin
查看映射
rbd showmapped
删除映射
rbd unmap /dev/rbd1
挂载
mount /dev/rbd0 /data/
实践
keepalived+nfs
nfs挂载块设备,并提供nfs服务。
[[email protected] keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_ceph {
script "/etc/keepalived/chk_ceph.keepalived.sh"
interval 1
weight 2
}
vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass sLAlDoDEWs
}
track_interface {
ens192
}
virtual_ipaddress {
10.200.197.100
}
track_script {
chk_ceph
chk_mantaince_down
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
[[email protected] keepalived]# cat notify.sh
#!/bin/bash
# Author: [email protected]
# description: An example of notify script
#
vip=10.200.197.100
notify() {
mailsubject="`hostname` to be $1: $vip floating"
mailbody="`date ‘+%F %H:%M:%S‘`: vrrp transition, `hostname` changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
case "$1" in
master)
notify master
ssh 10.200.197.253 """umount -l /data/"""
ssh 10.200.197.253 """ rbd showmapped|grep /dev/rbd|awk ‘{print \"rbd unmap \"\$NF}‘|bash;"""
map=`ssh 10.200.197.253 """rbd map db1 --pool db-pool --id admin"""`
ssh 10.200.197.253 """mount ${map} /data """
umount -l /data/
rbd showmapped|grep /dev/rbd|awk ‘{print "rbd unmap "$NF}‘|bash;
rbd map db1 --pool db-pool --id admin
map=`rbd showmapped|grep /dev/rbd|awk ‘{print $NF}‘|tail -n 1`
mount $map /data/
exit 0
;;
backup)
notify backup
umount -l /data/
rbd showmapped|grep /dev/rbd|awk ‘{print "rbd unmap "$NF}‘|bash;
rbd map db1 --pool db-pool --id admin
map=`rbd showmapped|grep /dev/rbd|awk ‘{print $NF}‘|tail -n 1`
mount $map /data/
ssh 10.200.197.253 """umount -l /data/"""
ssh 10.200.197.253 """ rbd showmapped|grep /dev/rbd|awk ‘{print \"rbd unmap \"\$NF}‘|bash;"""
map=`ssh 10.200.197.253 """rbd map db1 --pool db-pool --id admin"""`
ssh 10.200.197.253 """mount ${map} /data """
exit 0
;;
fault)
notify fault
exit 0
;;
*)
echo ‘Usage: `basename $0` {master|backup|fault}‘
exit 1
;;
esac
[[email protected] keepalived]# cat chk_ceph.keepalived.sh
#!/bin/bash
# description:
# 定时查看nfs是否存在,如果不存在则启动nfs
# 如果启动失败,则返回1
status=`ps aux --no-header|grep nfs|grep -v grep|wc -l`
if [ $status -eq 0 ];then
/bin/systemctl restart nfs.service
sleep 3
status=`ps aux --no-header|grep nfs|grep -v grep|wc -l`
if [ ${status} -eq 0 ];then
exit 1
fi
fi
3.3、CEPH 对象存储快速入门
从 firefly(v0.80)起,Ceph 存储集群显著地简化了 Ceph 对象网关的安装和配置。网关守护进程内嵌了 Civetweb,无需额外安装 web 服务器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 来安装网关软件包、生成密钥、配置数据目录以及创建一个网关实例。
Tip Civetweb 默认使用 7480 端口。要么直接打开 7480 端口,要么在你的 Ceph 配置文件中设置首选端口(例如 80 端口)。
要使用 Ceph 对象网关,请执行下列步骤:
安装 CEPH 对象网关
在 client-node 上执行预安装步骤。如果你打算使用 Civetweb 的默认端口 7480 ,必须通过 firewall-cmd 或 iptables 来打开它。详情见预检。
从管理节点的工作目录,在 client-node 上安装 Ceph 对象网关软件包。例如:
ceph-deploy install --rgw <client-node> [<client-node> ...]
新建 CEPH 对象网关实例
ceph-deploy install --rgw cn2
yum install ceph-radosgw
从管理节点的工作目录,在 client-node 上新建一个 Ceph 对象网关实例。例如:
ceph-deploy rgw create
一旦网关开始运行,你就可以通过 7480 端口来访问它(比如 http://client-node:7480 )。
配置 CEPH 对象网关实例
通过修改 Ceph 配置文件可以更改默认端口(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:
[client.rgw.client-node]
rgw_frontends = "civetweb port=80"
Note 确保在 rgw_frontends 键值对的 port=<port-number> 中没有空格。
Important 如果你打算使用 80 端口,确保 Apache 服务器没有在使用该端口,否则会和 Civetweb 冲突。出现这种情况时我们建议移除 Apache 服务。
为了使新端口的设置生效,需要重启 Ceph 对象网关。在 RHEL 7 和 Fedora 上 ,执行:
sudo systemctl restart ceph-radosgw.service
在 RHEL 6 和 Ubuntu 上,执行:
sudo service radosgw restart id=rgw.<short-hostname>
最后,检查节点的防火墙,确保你所选用的端口(例如 80 端口)处于开放状态。如果没有,把该端口加入放行规则并重载防火墙的配置。例如:
sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port
80/tcp --permanent
sudo firewall-cmd --reload
关于使用 firewall-cmd 或 iptables 配置防火墙的详细信息,请参阅预检。
你应该可以生成一个未授权的请求,并收到应答。例如,一个如下不带参数的请求:
http://<client-node>:80
应该收到这样的应答:
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName></DisplayName>
</Owner>
<Buckets>
</Buckets>
</ListAllMyBucketsResult>
更多管理和 API 细节请参阅 Ceph 对象网关的配置 指南。
http://michaelkang.blog.51cto.com/1553154/1732525
调试对象存储,推荐式s3cmd
1:安装和配置s3cmd
yum install s3cmd -y
2:配置s3cmd进行S3接口测试,初始化 s3cmd本地环境 将之前radosgw-admin创建的user的access_key和secret_key,根据本机实际进行赋值;
vim ~/.s3cfg
[default]
access_key = 6FIZEZBT3LUBTPC60Z33
bucket_location = US
cloudfront_host = ceph.ptengine.cn
cloudfront_resource = /2015-12-15/distribution
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encoding = UTF-8
encrypt = False
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = True
host_base = ceph-100-80
host_bucket = %(*)s.ceph-100-80
human_readable_sizes = False
list_md5 = False
log_target_prefix =
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
recursive = False
recv_chunk = 4096
reduced_redundancy = False
secret_key = DbiQnQGuC7HMadOuptFgVMOMJhnMKKG2UNtePbS5
send_chunk = 4096
simpledb_host = rgw.ptengine.cn
skip_existing = False
socket_timeout = 10
urlencoding_mode = normal
use_https = False
verbosity = WARNING
3:测试是否配置成功:
s3cmd --configure
将会问你一系列问题:
AWS S3的访问密钥和安全密钥
对AWS S3双向传输的加密密码和加密数据
为加密数据设定GPG程序的路径(例如,/usr/bin/gpg)
是否使用https协议
如果使用http代理,设定名字和端口
配置将以保存普通文本格式保存在 ~/.s3cfg.
一路选确定,因为我们已经配置过了,直到最后一步Test选y:
########################本人测试环境配置,s3cmd自测ok#############################
[[email protected] ceph]# more ~/.s3cfg
[default]
access_key = 6FIZEZBT3LUBTPC60Z33
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = rgw.ptengine.cn
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encoding = UTF-8
encrypt = False
expiry_date =
expiry_days =
expiry_prefix =
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = True
host_base = rgw.ptengine.cn
host_bucket = %(*)s.rgw.ptengine.cn
human_readable_sizes = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
kms_key =
limitrate = 0
list_md5 = False
log_target_prefix =
long_listing = False
max_delete = -1
mime_type =
multipart_chunk_size_mb = 15
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
put_continue = False
recursive = False
recv_chunk = 4096
reduced_redundancy = False
requester_pays = False
restore_days = 1
secret_key = DbiQnQGuC7HMadOuptFgVMOMJhnMKKG2UNtePbS5
send_chunk = 4096
server_side_encryption = False
signature_v2 = False
simpledb_host = rgw.ptengine.cn
skip_existing = False
socket_timeout = 10
stop_on_error = False
storage_class =
urlencoding_mode = normal
use_https = False
use_mime_magic = True
verbosity = WARNING
website_endpoint = http://rgw.ptengine.cn/
website_error =
website_index = index.html
#####################################################
4:s3cmd命令参数介绍:
帮助命令:
s3cmd --help
使用方法
1:配置,主要是 Access Key ID 和 Secret Access Key
s3cmd --configure
2:列举所有 Buckets。(bucket 相当于根文件夹)
s3cmd ls
3:创建 bucket,且 bucket 名称是唯一的,不能重复。
s3cmd mb s3://my-bucket-name
4:删除空 bucket
s3cmd rb s3://my-bucket-name
5:列举 Bucket 中的内容
s3cmd ls s3://my-bucket-name
6:上传 file.txt 到某个 bucket,
s3cmd put file.txt s3://my-bucket-name/file.txt
7:上传并将权限设置为所有人可读
s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt
8:批量上传文件
s3cmd put ./* s3://my-bucket-name/
9:下载文件
s3cmd get s3://my-bucket-name/file.txt file.txt
10:批量下载
s3cmd get s3://my-bucket-name/* ./
11:删除文件
s3cmd del s3://my-bucket-name/file.txt
12:来获得对应的bucket所占用的空间大小
s3cmd du -H s3://my-bucket-name
######目录处理规则########
以下命令都能将dir1 中的文件上传至my-bucket-name,但效果只截然不同的。
1:dir1 不带"/"斜杠,那么dir1会作为文件路径的一部分,相当于上传整个dir1目录,即类似 "cp -r dir1/"
~/demo$ s3cmd put -r dir1 s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/dir1/file1-1.txt [1 of 1]
2:带"/"斜杠的 dir1,相当于上传dir1目录下的所有文件,即类似 "cp ./* "
~/demo$ s3cmd put -r dir1/ s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/file1-1.txt [1 of 1]
########同步方法########
这是s3cmd 使用难点,但却是最实用的功能。官方使用说明见《s3cmd sync HowTo》http://s3tools.org/s3cmd-sync
首先明确,同步操作是要进行MD5校验的,只有当文件不同时,才会被传输。
常规同步操作
1:同步当前目录下所有文件
s3cmd sync ./ s3://my-bucket-name/
s3cmd sync s3://my-bucket-name/ ./
2:加 "--dry-run"参数后,仅列出需要同步的项目,不实际进行同步。
s3cmd sync --dry-run ./ s3://my-bucket-name/
3:加 " --delete-removed"参数后,会删除本地不存在的文件。
s3cmd sync --delete-removed ./ s3://my-bucket-name/
s3cmd sync --delete-removed --force ./ s3://test.bucket
4:加 " --skip-existing"参数后,不进行MD5校验,直接跳过本地已存在的文件。
s3cmd sync --skip-existing ./ s3://my-bucket-name/
4.2、高级同步操作
4.2.1、排除、包含规则(--exclude 、--include)
file1-1.txt被排除,file2-2.txt同样是txt格式却能被包含。
~/demo$ s3cmd sync --dry-run --exclude ‘*.txt‘ --include ‘dir2/*‘ ./ s3://my-bucket-name/
exclude: dir1/file1-1.txt
upload: ./dir2/file2-2.txt -> s3://my-bucket-name/dir2/file2-2.txt
4.2.2、从文件中载入排除或包含规则。(--exclude-from、--include-from)
s3cmd sync --exclude-from pictures.exclude ./ s3://my-bucket-name/
pictures.exclude 文件内容
# Hey, comments are allowed here ;-)
*.jpg
*.gif
4.2.3、排除或包含规则支持正则表达式
--rexclude 、--rinclude、--rexclude-from、--rinclude-from
移除osd
1. 移出集群(管理节点执行)
ceph osd out 7 (ceph osd tree中,REWEIGHT值变为0)
2. 停止服务(目标节点执行)
systemctl stop [email protected] (ceph osd tree中,状态变为DOWN)
3. 移出crush
ceph osd crush remove osd.7
4. 删除key
ceph auth del osd.7
5. 移除osd
ceph osd rm 7
6. 查找其所在主机是否还有osd,若有,进入第7步骤,否则
ceph osd crush remove `hostname`
7. 修改并同步ceph.conf文件
vi /etc/ceph/ceph.conf
若存在,将该条信息删除[osd.7]
8. 删除目录文件
rm –rf * /var/lib/ceph/osd/ceph-7
4、监控
inkscope
它是通过ceph-rest-api收紧信息的
启动ceph-rest-api:
[[email protected] ~]# ceph-rest-api -n client.admin &
http://192.168.9.147:5000/api/v0.1
执行inkscopeProbe目录中的install.sh 脚本生成配置文件和执行文件
sysprobe:收集系统信息,必须被安装在所有ceph节点 yum install lshw sysstat pymongo python-devel python-pip
pip install psutil
cephprobe:收集集群信息,只需要安装在某一个ceph节点
本文出自 “我爱技术” 博客,请务必保留此出处http://zhoulinjun.blog.51cto.com/3911076/1794679
以上是关于ceph 14 后 ceph adm支持自动配置numa的主要内容,如果未能解决你的问题,请参考以下文章
容器云平台No.6~企业级分布式存储Ceph~v14.2.10