centos7部署ceph14

一、简介

记录ceph nautilus(ceph 14.2.5)在centOS7.6下的集群部署。

1.采用简单快速的ceph-deploy安装方式。参考第四章节,参考以下链接:

https://blog.51cto.com/u_15127574/2762371

2.采用手动部署方法进行安装,参考第五章节,参考以下链接:

https://ceph.readthedocs.io/en/latest/install/install-storage-cluster/
https://ceph.readthedocs.io/en/latest/install/manual-deployment/

二、基础环境简介

1.环境要求

oshostnameipssdroles
centos7.6node10管理网ip: 192.168.57.10, 业务网: 10.0.10.10,存储前后端网: 10.0.100.103个500Gceph-deploy, mon,mgr,osd,mds,rgw
centos7.6node11管理网ip: 192.168.57.11, 业务网: 10.0.10.11,存储前后端网: 10.0.100.113个500Gmon,mgr,osd,mds,rgw
centos7.6node12管理网ip: 192.168.57.12, 业务网: 10.0.10.12,存储前后端网: 10.0.100.123个500Gmon,mgr,osd,mds,rgw

2.硬件要求

​ 每个节点至少2U4G, 至少配置3张网卡

三、基础环境准备

1.设置主机名

node10执行:
$ hostnamectl set-hostname node10 && exec /bin/bash
node11执行:
$ hostnamectl set-hostname node11 && exec /bin/bash
node12执行:
$ hostnamectl set-hostname node12 && exec /bin/bash

2.配置ip并解析, 在三个节点都执行:

$ vim /etc/hosts
192.168.57.10 node10
192.168.57.11 node11
192.168.57.12 node12

3.免密登录,在node10上配置免密登录到node11,node12, 在node10执行

$ ssh-keygen -t rsa -P ''
$ for i in node1{0..2};do ssh-copy-id $i;done

4.打开ceph端口或者直接关闭端口服务,两者选其一,在三个节点都执行:

  • 打开常用端口

    $ firewall-cmd --zone=public --add-port=6789/tcp --permanent
    $ firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    $ firewall-cmd --reload
    $ firewall-cmd --zone=public --list-all
    
  • 关闭端口服务

    $ systemctl stop firewalld
    $ systemctl disable firewalld
    

5.禁用selinux策略,在三个节点都执行:

# 临时关闭,不用重启机器
$ setenforce 0
# 永久修改,修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

6.关闭NetworkManager,在三个节点都执行

$ systemctl disable NetworkManager && systemctl stop NetworkManager

7.设置镜像源,在三个节点都执行

#备份默认的源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
# 下载阿里云的base源和epel源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 添加ceph源
vim /etc/yum.repos.d/ceph.repo 

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

8.安装配置ntp服务(单节点可以不安装),在三个节点都执行

Ceph要求服务器时间统一,否则无法正常启动
$ yum -y install ntp ntpdate
$ ntpdate 0.us.pool.ntp.org
$ hwclock --systohc
$ systemctl enable ntpd
$ systemctl start ntpd

9.内核参数优化,在三个节点都执行

1.设置文件描述符
$ echo "ulimit -SHn 102400" >> /etc/rc.local
$ cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF

2.内核参数优化
$ cat >> /etc/sysctl.conf << EOF
kernel.pid_max = 4194303
vm.swappiness = 0 
EOF
$ sysctl -p

3.设置IO策略,I/O Scheduler,SSD要用noop,SATA/SAS使用deadline
$ echo "deadline" >/sys/block/sd[x]/queue/scheduler
$ echo "noop" >/sys/block/sd[x]/queue/scheduler

4.read_ahead,通过数据预读并且记载到随机访问内存方式提高磁盘读操作
$ echo "8192" > /sys/block/sda/queue/read_ahead_kb

四、ceph-deploy部署

1.部署ceph-mon

1.安装ceph-deploy(在node10节点上安装即可)

$ yum install ceph-deploy -y

2.集群初始化

# 创建文件夹/etc/ceph,后续安装命令均在此文件夹下执行(后续新增节点时也要创建该目录);如创建的目录不是/etc/ceph,软件安装会自动生成该文件夹,且集群运行使用的会是etc下的配置.
$ mkdir /etc/ceph 
$ cd /etc/ceph 

# 创建配置
$ ceph-deploy new {initial-monitor-node(s)}
$ ceph-deploy new node10 node11 node12

3.修改ceph.conf文件
vim /etc/ceph.conf

[global]
fsid = b6ed72db-04cd-4128-acb8-67a4a5e922d5
mon_initial_members = node10, node11, node12
mon_host = 192.168.57.10,192.168.57.11,192.168.57.12
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# 非必须,多网卡需配置
public_network = 192.168.57.0/24
cluster_network = 10.0.100.0/24
# 存储集群副本个数
osd_pool_default_size = 3
# 允许在degraded状态下只写两次对象
osd_pool_default_min_size = 1
# 池的pg数量,具体计算公式请参见附录
osd_pool_default_pg_num = 32
# pgp数量需要与pg数量相同
osd_pool_default_pgp_num = 32
# CRUSH规则用到chooseleaf时的bucket的类型,默认值1
osd_crush_chooseleaf_type = 0
# 客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 默认值 1024
objecter_inflight_ops = 10240               
# 客户端流控,允许的最大未发送脏数据,超过阀值会堵塞应用io,为0表示不受限  默认值 100M
objecter_inflight_op_bytes = 1048576000     

[mon]
# 时间偏移
mon_clock_drift_allowed = 0.5

[osd]
 # 处理peering等请求的线程数
osd op threads = 8  
# 处理snap trim,replica trim及scrub等的线程数
osd disk threads = 4    
# 一次写入最大的MB数(默认90)
osd_max_write_size = 1024
# 如果这个参数被设置,那么Ceph集群启动时,就会在操作系统层面设置最大打开文件描述符。这就避免OSD进程出现与文件描述符不足的情况。参数的缺省值为0
max_open_files = 655350  
# 每个osd 多对应的最大 pg 数量,超过该值会报警:too many PGs per OSD
mon_pg_warn_max_per_osd = 1000   
# pg 迁移时当某个osd 空间使用率超过在这个值,就会拒绝pg  的迁移请求 ,这个值可以适当调大 0.85
mon_osd_backfillfull_ratio = 0.85   
# 被认为集群已满的最大使用百分比(默认.95)
mon_osd_full_ratio = 0.95          
# osd full 设置,当osd 空间使用率超过该值时就会报警  可以适当调大 0.85
mon_osd_nearfull_ratio = 0.85
# 默认值 300  seconds  ceph标记一个osd为down and out的最大时间间隔
mon_osd_down_out_interval = 300
# mon标记一个osd为down的最小reporters个数(其他osd报告该osd为down的个数称为一个reporter) 默认值 2
mon_osd_min_down_reporters = 2
# mon标记一个osd为down的最长等待时间  默认值 900
mon_osd_report_timeout = 900
# 客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 默认值 1024
objecter_inflight_ops = 10240              
# 客户端流控,允许的最大未发送脏数据,超过阀值会堵塞应用io,为0表示不受限  默认值 10
objecter_inflight_op_bytes = 1048576000     

4.拷贝到远程

# ceph-deploy将ceph.conf拷贝到node10, node11, node12
$ ceph-deploy --overwrite-conf config push node10 node11 node12

5.安装ceph

$ ceph-deploy install ceph10 ceph11 ceph12 --stable --release nautilus --repo-url=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/ --gpg-url=https://mirrors.aliyun.com/ceph/keys/release.asc

6.在monitor节点上执行初始化monitor

$ cd /etc/ceph
$ ceph-deploy mon create-initial 
$ ceph-deploy --overwrite-conf  mon create-initial # 如果遇到报错,则关闭防火墙

2.部署ceph-osd

1.使用ceph-deploy创建osd

$ ceph-deploy osd create --data /dev/sdb node10
$ ceph-deploy osd create --data /dev/sdb node11
$ ceph-deploy osd create --data /dev/sdb node12

2.如果需要卸载某个osd

$ ceph osd tree                # 获取osd的id, 以下以osd.2为例进行删除
$ systemctl stop ceph-osd@2
$ ceph-volume lvm zap --destroy --osd-id 2                                          
$ ceph osd crush remove osd.2
$ ceph auth rm osd.2
$ ceph osd rm 2

3.部署ceph-mgr

1.拷贝admin秘钥,部署mgr

# 拷贝admin的秘钥
$ ceph-deploy admin node10 node11 node12
# 部署mgr
$ ceph-deploy mgr create node10 node11 node12

2.检查集群状态

$ ceph -s

3.启动dashboard.在active mgr上执行:

$ ceph mgr module enable dashboard 
$ ceph dashboard create-self-signed-cert
$ echo "abc@123" > passwd
$ ceph dashboard set-login-credentials admin -i passwd

五、手动部署ceph

1.安装软件

在各个节点上执行

$ sudo yum install snappy leveldb gdisk python-argparse gperftools-libs ceph -y

2.部署ceph-mon

1.生成cephfs id, 在node10上执行:

$ uuidgen
150147a4-72f8-456d-8b8c-5204fb866be4

2.创建文件和配置

在node10上执行
mkdir /etc/ceph
vim /etc/ceph/ceph.conf

[global]
fsid = 150147a4-72f8-456d-8b8c-5204fb866be4
mon_initial_members = node10, node11, node12
mon_host = 192.168.57.10,192.168.57.11,192.168.57.12
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# 非必须,多网卡需配置
public_network = 192.168.57.0/24
cluster_network = 10.0.100.0/24
# 存储集群副本个数
osd_pool_default_size = 3
# 允许在degraded状态下只写两次对象
osd_pool_default_min_size = 1
# 池的pg数量,具体计算公式请参见附录
osd_pool_default_pg_num = 32
# pgp数量需要与pg数量相同
osd_pool_default_pgp_num = 32
# CRUSH规则用到chooseleaf时的bucket的类型,默认值1
osd_crush_chooseleaf_type = 0
# 客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 默认值 1024
objecter_inflight_ops = 10240               
# 客户端流控,允许的最大未发送脏数据,超过阀值会堵塞应用io,为0表示不受限  默认值 100M
objecter_inflight_op_bytes = 1048576000     

[mon]
# 时间偏移
mon_clock_drift_allowed = 0.5

[osd]
 # 处理peering等请求的线程数
osd op threads = 8  
# 处理snap trim,replica trim及scrub等的线程数
osd disk threads = 4    
# 一次写入最大的MB数(默认90)
osd_max_write_size = 1024
# 如果这个参数被设置,那么Ceph集群启动时,就会在操作系统层面设置最大打开文件描述符。这就避免OSD进程出现与文件描述符不足的情况。参数的缺省值为0
max_open_files = 655350  
# 每个osd 多对应的最大 pg 数量,超过该值会报警:too many PGs per OSD
mon_pg_warn_max_per_osd = 1000   
# pg 迁移时当某个osd 空间使用率超过在这个值,就会拒绝pg  的迁移请求 ,这个值可以适当调大 0.85
mon_osd_backfillfull_ratio = 0.85   
# 被认为集群已满的最大使用百分比(默认.95)
mon_osd_full_ratio = 0.95          
# osd full 设置,当osd 空间使用率超过该值时就会报警  可以适当调大 0.85
mon_osd_nearfull_ratio = 0.85
# 默认值 300  seconds  ceph标记一个osd为down and out的最大时间间隔
mon_osd_down_out_interval = 300
# mon标记一个osd为down的最小reporters个数(其他osd报告该osd为down的个数称为一个reporter) 默认值 2
mon_osd_min_down_reporters = 2
# mon标记一个osd为down的最长等待时间  默认值 900
mon_osd_report_timeout = 900
# 客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 默认值 1024
objecter_inflight_ops = 10240              
# 客户端流控,允许的最大未发送脏数据,超过阀值会堵塞应用io,为0表示不受限  默认值 10
objecter_inflight_op_bytes = 1048576000     

3.创建monitor

$ ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
$ ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
$ ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
$ ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
$ ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
$ chown ceph:ceph /tmp/ceph.mon.keyring
$ monmaptool --create --add node10 192.168.57.10 --add node11 192.168.57.11 --add node12 192.168.57.12 --fsid  150147a4-72f8-456d-8b8c-5204fb866be4 /tmp/monmap
$ monmaptool --print /tmp/monmap

4.拷贝文件到其他节点node11, node12

$ scp /etc/ceph/ceph.conf root@node11:/etc/ceph/
$ scp /tmp/ceph.mon.keyring root@node11:/tmp/
$ scp /etc/ceph/ceph.client.admin.keyring root@node11:/etc/ceph/
$ scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@node11:/var/lib/ceph/bootstrap-osd/
$ scp /tmp/monmap root@node11:/tmp/

$ scp /etc/ceph/ceph.conf root@node12:/etc/ceph/
$ scp /tmp/ceph.mon.keyring root@node12:/tmp/
$ scp /etc/ceph/ceph.client.admin.keyring root@node12:/etc/ceph/
$ scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@node12:/var/lib/ceph/bootstrap-osd/
$ scp /tmp/monmap root@node12:/tmp/

4.初始化mon目录, 在每个节点都执行

$ sudo -u ceph ceph-mon --mkfs -i ceph-1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
$ chown -R ceph:ceph /etc/ceph
$ chown -R ceph:ceph /var/lib/ceph/mon/ceph-node10/  # 注意这里的node10为节点名称

5.启动mon服务

node10节点执行:
$ systemctl start ceph-mon@node10
$ systemctl enable ceph-mon@node10

node11节点执行:
$ systemctl start ceph-mon@node11
$ systemctl enable ceph-mon@node11

node12节点执行:
$ systemctl start ceph-mon@node12
$ systemctl enable ceph-mon@node12

3.部署ceph-osd

在需要部署的节点上,执行下面命令

$ lsblk
$ sudo ceph-volume lvm create --data /dev/sdb
$ sudo ceph-volume lvm create --data /dev/sdc
$ sudo ceph-volume lvm create --data /dev/sdd

4.部署ceph-mgr

1.创建目录

$ sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node10

2.创建秘钥

$ ceph auth get-or-create mgr.node10 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-node10/keyring

3.安装ceph-mgr

$ ceph-mgr - node10

4.启动ceph-mgr服务

$ systemctl enable ceph-mgr@node10
$ systemctl start ceph-mgr@node10

5.安装dashboard

$ yum install ceph-mgr-dashboard 
$ ceph mgr module enable dashboard
$ ceph dashboard create-self-signed-cert 
$ echo "abc@123" > passwd
$ ceph dashboard set-login-credentials admin -i passwd

六、资源创建

1.创建机架和设备组

在这里插入图片描述

1.设备组的创建

2.机架的创建

查看osd的拓扑图
$ ceph osd tree --format json
创建机架:
$ ceph osd crush add-bucket bucket-name bucket-type 
$ ceph osd crush add-bucket rack-test rack
绑定到设备组:
$ ceph osd crush link bucket-name devicegroup=devicegroup_name
$ ceph osd crush link rack-test devicegroup=dg
将host绑定到机架上(相当于替换工作):
$ ceph osd crush move bucket-name rack=bucket-name
$ ceph osd crush move ankorstor-dg rack=rack-test
删除被替换的机架:
$ ceph osd crush remove bucket-name
$ ceph osd crush remove rack-test

2.创建存储池

1.创建副本存储池

$ ceph osd crush rule create-replicated $rule_name $device_name $type(host/rack/osd)

$ ceph osd pool create $pool_name $pg_num $pgp_num $pool_type(replicated/erasure) $erasure_profile $rule_name

注意pg, pgp_num的计算参考:https://old.ceph.com/pgcalc/

2.创建纠删码存储池

$ ceph osd erasure-code-profile ls

$ ceph osd erasure-code-profile set $erasure_code_profile k=3 m=2 crush-failure-domain=rack/host/osd crush-root=$devicegroup_name

$ ceph osd crush rule create-erasure $rule_name $erasure_code_profile

$ ceph osd pool create $pool_name $pg_num $pgp_num $pool_type(replicated/erasure) $erasure_profile $rule_name

3.设备副本数量

$ ceph osd pool set $pool_name size 3

4.设置最小副本数

$ ceph osd pool set $pool_name min_size 1

5.设置纠删码可以被rbd,cephfs使用

$ ceph osd pool set $pool_name allow_ec_overwrites true

6.设置存储池限额

$ ceph osd pool set-quota $pool_name max_bytes 1000000

7.创建应用

$ ceph osd pool application enable rbd
$ ceph osd pool application enable cephfs 
$ ceph osd pool application enable rgw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值