容器部署ceph存储

举报
古冷 发表于 2019/01/27 20:28:08 2019/01/27
【摘要】 容器部署ceph存储

1,创建目录

所有节点都要创建

mkdir /data/ceph/{etc,lib,logs}

chown -R 167:167 /data/ceph/  #docker内用户id是167,这里进行授权

2,系统参数调整

# cat /etc/sysctl.d/ceph-tuning.conf

fs.aio-max-nr=1048576

fs.file-max=26234859

vm.zone_reclaim_mode=0

vm.swappiness=0

vm.min_free_kbytes=512000

vm.dirty_ratio=10

vm.dirty_background_ratio=5

kernel.hung_task_timeout_secs=0

 

# sysctl -p /etc/sysctl.d/ceph-tuning.conf

系统性能优化:

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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。