1,创建目录
所有节点都要创建
mkdir /data/ceph/{etc,lib,logs}
chown -R 167:167 /data/ceph/ #docker内用户id是167,这里进行授权
2,系统参数调整
系统性能优化:
vm.min_free_kbytes:min下的内存是保留给内核使用的;当到达min,会触发内存的direct reclaim。对于线上128G的内存的机器,可以考虑将min设置为512M左右。因为,太大了,可能会导致内存的浪费;
当然如果只有40G的物理机,更不要考虑把min设置超过1G了,这样会导致频繁的触发内存回收。
vm.dirty_background_ratio:指定当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存。
vm.dirty_ratio:则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存),在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。
通常情况下,vm.dirty_ratio的值要大于vm.dirty_background_ratio的值。
kernel.hung_task_timeout_secs:文件系统把数据从缓存转到外存进程等待IO的等待时间,默认是120s。如果超过了这个时间就会打印相关堆栈信息,这里我们取消120秒的时间限制。
还有调整系统IO调度策略也可以提升性能,有三种调度策略:
CFQ (Completely Fair Scheduler(完全公平调度器))(cfq):它是许多Linux 发行版的默认调度器;它将由进程提交的同步请求放到多个进程队列中,然后为每个队列分配时间片以访问磁盘。
Noop调度器(noop):基于先入先出(FIFO)队列概念的Linux内核里最简单的I/O调度器。此调度程序最适合于SSD。
截止时间调度器(deadline):尝试保证请求的开始服务时间。
IO调度策略我们已经在部署OSD的脚本里面设置好了,磁盘都是SSD的,所以使用的Noop调度器。
部署:
1,启动MON
在ceph001上启动mon
docker run -d --net=host \ --name=mon \ --net=host \ --restart=always \ --pid=host \ -v /etc/localtime:/etc/localtime \ -v /data/ceph/etc:/etc/ceph \ -v /data/ceph/lib:/var/lib/ceph \ -v /data/ceph/logs:/var/log/ceph \ -e MON_IP=192.168.15.130,192.168.15.131,192.168.15.132 \ -e CEPH_PUBLIC_NETWORK=192.168.15.0/16 \ ceph/daemon:v3.1.0-stable-3.1-mimic-centos-7 mon |
修改ceph配置文件,添加
vim /data/ceph/etc/ceph.conf
成功启动后会生成配置文件,在文件后面追加下面配置。
mon clock drift allowed = 2 mon clock drift warn backoff = 30 mon_allow_pool_delete = true rbd_default_features = 3 osd_pool_default_pg_num = 1024 osd_pool_default_pgp_num = 1024 osd_pool_default_size = 2 osd_pool_default_min_size = 1 bluestore_cache_size=2G bluestore_cache_meta_ratio=0.5 |
拷贝数据到其他所有节点相同位置,注意修改权限。
# scp -r /data/ceph ceph0[xx].aibee.cn:/data/
2,启动MGR
mgr是ceph自带的仪表盘监控,可以部署到多个节点实现多活。在ceph001,ceph003,ceph005上执行下面脚本。
start_mgr.sh
docker run -d --net=host \ --name=mgr \ --restart=always \ --privileged=true \ -v /etc/localtime:/etc/localtime \ -v /data/ceph/etc:/etc/ceph \ -v /data/ceph/lib:/var/lib/ceph \ -v /data/ceph/logs:/var/log/ceph \ ceph/daemon:v3.1.0-stable-3.1-mimic-centos-7 mgr |
ceph在mimic版本使用的是v2版本的dashboard,默认是有证书和用户管理的。通过下面配置可以启用。
# docker exec mgr ceph mgr module enable dashboard # docker exec mgr ceph dashboard create-self-signed-cert # docker exec mgr ceph dashboard set-login-credentials aibee abc123$%^ |
访问https://[mgr-host]:8443,使用aibee用户登陆就能看到集群的状态并能简单操作集群。
dashboard用户要想操作rgw的bucket,需要执行下面操作
radosgw-admin user create --uid=aibee --display-name=Aibee --system radosgw-admin user info --uid=aibee ceph dashboard set-rgw-api-access-key U0K5O8KP6P8RQZQV333U ceph dashboard set-rgw-api-secret-key PuIp09FCBmeoPfXy0SCCjy7bgt3G7xG1BCZytMPM |
3,启动OSD
我们每一块盘作为一个OSD,从sda到sdx一共24个盘。在所有节点上执行下面的脚本启动osd。
docker run -d \ --name=osd_data \ --net=host \ --restart=always \ --privileged=true \ --pid=host \ -v /etc/localtime:/etc/localtime \ -v /data/ceph/etc:/etc/ceph \ -v /data/ceph/lib:/var/lib/ceph \ -v /data/ceph/logs:/var/log/ceph \ -v /dev/:/dev/ \ -e OSD_DEVICE=/dev/sd${j} \ -e OSD_TYPE=disk \ -e OSD_BLUESTORE=1 \ ceph/daemon:v3.1.0-stable-3.1-mimic-centos-7 osd |
如果有某一个osd启动失败,在清理对应的磁盘后需要手动执行docker命令启动osd。
成功执行后,会看到所有的osd已经加入ceph集群,执行docker exec mon ceph -s可以看到osd: 240 osds: 240 up, 240 in
4,启动RGW
在ceph001,ceph003,ceph005上执行下面脚本启动对象存储
docker run -d \ --net=host \ --name=rgw \ --restart=always \ --privileged=true \ -v /etc/localtime:/etc/localtime \ -v /data/ceph/etc:/etc/ceph \ -v /data/ceph/lib:/var/lib/ceph \ -v /data/ceph/logs:/var/log/ceph \ ceph/daemon:v3.1.0-stable-3.1-mimic-centos-7 rgw |
以上执行完以后,执行docker exec mon ceph -s 查看集群状态
services:
mon: 3 daemons, quorum ceph001,ceph003,ceph005
mgr: ceph005(active), standbys: ceph003, ceph001
osd: 240 osds: 240 up, 240 in
rgw: 3 daemons active
5,启动MDS
mds是cephfs的进程。在ceph002,ceph004,ceph006上执行下面脚本启动cephfs。
docker run -d \ --net=host \ --name=mds \ --restart=always \ --privileged=true \ -v /etc/localtime:/etc/localtime \ -v /data/ceph/etc:/etc/ceph \ -v /data/ceph/lib/:/var/lib/ceph/ \ -v /data/ceph/logs/:/var/log/ceph/ \ -e CEPHFS_CREATE=1 \ -e CEPHFS_METADATA_POOL_PG=512 \ -e CEPHFS_DATA_POOL_PG=512 \ ceph/daemon:v3.1.0-stable-3.1-mimic-centos-7 mds |
由于我们-e CEPHFS_CREATE=1 在成功执行后回自动创建两个pool,即cephfs_data,cephfs_metadata。也可以设置-e CEPHFS_CREATE=0,就需要在启动mds服务后手动创建pool。
# 创建data pool docker exec mon ceph osd pool create cephfs_data 512 512 # 创建 metadata pool docker exec mon ceph osd pool create cephfs_metadata 512 512 # 创建测试 cephfs docker exec mon ceph fs new test cephfs_metadata cephfs_data # 查看信息 docker exec mon ceph fs ls name: test, metadata pool: cephfs_metadata, data pools: [cephfs_data ] |
至此,ceph的所有功能都开启,执行docker exec mon ceph -s就能看到对应的服务状态。
services:
mon: 3 daemons, quorum ceph001,ceph003,ceph005
mgr: ceph005(active), standbys: ceph003, ceph001
mds: cephfs-1/1/1 up {0=ceph002=up:active}, 2 up:standby
osd: 240 osds: 240 up, 240 in
rgw: 3 daemons active
Zap a device
有时您可能想从磁盘上销毁分区表。为此,您可以使用Zap_设备方案,其工作方式如下
docker run -d --privileged=true \ -v /dev/:/dev/ \ -e OSD_DEVICE=/dev/sdd \ ceph/daemon zap_device |
评论(0)