RHEL7.3 安装ceph

环境:
    主机名            ip地址            角色
    cephadmin        10.30.12.134    admin
    ceph1            10.30.12.136    osd
    ceph2            10.30.12.137    osd
    ceph3            10.30.12.138    osd

    也可以使用osd节点作为admin node,这样可以减少一个节点。



安装前环境配置(all):
1、配置/etc/hosts

2、关闭SELinux

3、更新selinux相关包:
     
     yum update selinux-policy-3.13.1-102.el7_3.15.noarch.rpm selinux-policy-targeted-3.13.1-102.el7_3.15.noarch.rpm -y

4、安装python依赖包:

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install python-itsdangerous-0.23-2.el7.noarch.rpm python-webob-1.6.1-2.el7.noarch.rpm python-webtest-2.0.23-1.el7.noarch.rpm -y



安装环境配置:
1、安装RHEL额外包仓库EPEL(Extra Packages for Enterprise Linux )(cephadmin):
 
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm


2、配置ceph的YUM源(cephadmin):

vim /etc/yum.repos.d/ceph.repo
   
内容如下:
    [ceph-noarch]
    name=Ceph noarch packages
    baseurl=https://download.ceph.com/ rpm-luminous/el7/noarch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc


3、更新仓库并安装ceph-deploy  (cephadmin):
 
yum update && yum install ceph-deploy -y


4、安装ntp(all):

yum install ntp ntpdate ntp-doc


5、安装ssh(all):

yum install openssh-server


6、创建ceph部署用户,部署用户需要互信,并且可以不需要密码进行sudo。不推荐使用root直接互信,也不能使用ceph用户,因为ceph用户作为ceph daemon的用户(all)。

useradd -d /home/neuceph -m neuceph
passwd neuceph                                #密码为neuceph123


7、给部署用户增加sudo免密码权限(all):

    echo "neuceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/neuceph
    chmod 0440 /etc/sudoers.d/neuceph


以下命令均在部署用户下执行,本文在neuceph用户下执行。
8、给部署用户做互信(cephadmin):

    su - neuceph
    ssh-keygen
    ssh-copy-id neuceph@ceph1
    ssh-copy-id neuceph@ceph2
    ssh-copy-id neuceph@ceph3


9、修改neuceph用户的~/.ssh/config文件,以便每次执行ceph-deploy命令时需要执行--username参数(cephadmin):

vi ~/.ssh/config
chmod 600 ~/.ssh/config
文件内容如下:
    Host ceph1
       Hostname ceph1
       User neuceph
    Host ceph2
       Hostname ceph2
       User neuceph
    Host ceph3
       Hostname ceph3
       User neuceph


10、创建目录,存放配置文件和key文件(cephadmin):

    mkdir my-cluster
    cd my-cluster



正式安装过程(如无特殊标明,均在cephadmin节点的neuceph用户下执行):
1、如果安装过程出现问题,需要重新安装,可以使用如下命令卸载ceph包并清除数据和配置:

    ceph-deploy purge cephadmin ceph1 ceph2 ceph3
    ceph-deploy purgedata cephadmin ceph1 ceph2 ceph3
    ceph-deploy forgetkeys


2、创建一个cluster,增加一个mon节点:

    ceph-deploy new ceph1                                        #new创建一个默认名称为ceph的集群,并生产配置文件和密钥文件


3、在配置文件中加入将备份数设置为2(默认是3)。这样当两个osd的时候ceph状态也会变为active+clean。并将公共网络加到配置文件中,不然后续添加MON节点会出问题。

    vi ceph.conf
    在[global] setion下增加如下内容:
    osd_pool_default_size = 2
    public_network = 10.30.12.0/24


4、安装ceph:

    ceph-deploy install cephadmin ceph1 ceph2 ceph3
    # 正常执行这个命令即可安装,如果网络环境较差就会报错。可以在所有节点执行如下命令进行安装
    # yum -y install ceph ceph-osd ceph-mds ceph-mon ceph-radosgw
    # 然后在执行cephadmin节点执行
    # ceph-deploy install cephadmin ceph1 ceph2 ceph3


5、初始化监控节点并且生成keys:

    ceph-deploy mon create-initial


6、先增加两个OSD节点,可以使用目录,本文使用磁盘进行测试:

    ceph-deploy disk list ceph1 ceph2 ceph3                                         #列出各节点磁盘列表
    ceph-deploy disk zap ceph1:vdb ceph2:vdb                                        #修正数据盘,即清空磁盘原分区表,为ceph做准备
    ceph-deploy osd create ceph1:/dev/vdb:/dev/vdc1 ceph2:/dev/vdb:/dev/vdc1        #创建osd,合并了prepare和active操作。格式为ceph-deploy osd create {node}:{data-disk}[:{journal-disk}]。data-disk是数据盘,journal-disk是日志盘。日志盘可选,不选择就和数据盘放到一起,会有性能损耗。                                                                                    

7、拷贝配置文件和密钥文件到个主机:

     ceph-deploy admin cephadmin ceph1 ceph2 ceph3


8、至此,一个两节点的ceph集群已经完成。接下来扩展集群OSD和MON节点。


9、增加osd节点:

     ceph-deploy osd create ceph3:/dev/vdb:/dev/vdc1


10、增加mon节点:

     ceph-deploy mon add ceph2
     ceph-deploy mon add ceph3


使用块设备:
1、块设备有两种用途,一是直接挂载到系统,二是给虚拟机使用,先挂载给操作系统


2、在管理节点给client节点安装ceph包,本文使用cephadmin节点作为client节点,在上面的步骤已经安装完成(cephadmin):

     ceph-deploy install cephadmin                    #cephadmin可以换成真正的client节点


3、将配置文件拷贝到client节点,在前面的步骤也完成了(cephadmin):

     ceph-deploy admin cephadmin                      #cephadmin可以换成真正的client节点


4、在client上创建块设备并映射块设备(本文是cephadmin):

rbd create dddtest --size 409600 -m 10.30.12.136                                    #创建一个块设备image
rbd info dddtest                                                                    #查看image信息,可以看到image拥有layering, exclusive-lock, object-map, fast-diff, deep-flatten这些特性
rbd feature disable dddtest exclusive-lock, object-map, fast-diff, deep-flatten     #但是3.10的内核只支持layering特性,所以要禁用其他的特性才能映射成功
rbd map dddtest --name client.admin -m 10.30.12.136                                 #把 image 映射为块设备
mkfs.ext4 -m0 /dev/rbd0                                                             #格式化
mount /dev/rbd0 /mnt                                                                #挂载





删除OSD节点:

    ceph osd tree                               #在ceph1上查看osd树结构    
    ceph osd out 0                              #在ceph1上标记id为0的osd节点要退出cluster
    ceph osd out 1                              #在ceph1上标记id为1的osd节点要退出cluster
    systemctl stop ceph-osd@0                   #在ceph1上停止osd服务
    systemctl stop ceph-osd@1                   #在ceph2上停止osd服务
    ceph osd crush remove osd.0                 #在ceph1上从crush中删除osd.0
    ceph osd crush remove osd.1                 #在ceph1上从crush中删除osd.1
    ceph auth del osd.0                         #在ceph1上从auth中删除osd.0
    ceph auth del osd.1                         #在ceph1上从auth中删除osd.1
    ceph osd rm 0                               #在ceph1上删除osd.0节点
    ceph osd rm 1                               #在ceph1上删除osd.1节点



服务管理:

systemctl start/stop ceph.target                         #启动/停止一个Ceph节点(任何类型)上的所有守护进程
systemctl status ceph\*.service ceph\*.target            #查看一个Ceph节点上的服务
systemctl start ceph-osd.target                          #启动一个Ceph节点的所有osd服务
systemctl start ceph-mon.target                          #启动一个Ceph节点的所有mon服务
systemctl start ceph-mds.target                          #启动一个Ceph节点的所有mds服务
systemctl stop ceph-mon\*.service ceph-mon.target        #停止一个Ceph节点的所有osd服务
systemctl stop ceph-osd\*.service ceph-osd.target        #停止一个Ceph节点的所有mon服务
systemctl stop ceph-mds\*.service ceph-mds.target        #停止一个Ceph节点的所有mds服务
systemctl start/stop ceph-osd@{id}                       #启动/停止Ceph节点上指定的osd服务
systemctl start/stop ceph-mon@{hostname}                 #启动/停止Ceph节点上指定的mon服务
systemctl start/stop ceph-mds@{hostname}                 #启动/停止Ceph节点上指定的mds服务
           


ceph命令:

ceph health                                  #查看集群监控情况
ceph status/-s                               #查看集群状态
ceph -w                                      #监控(watch)集群状态
ceph df                                      #查看集群的数据用量及其在存储池内的分布情况

ceph osd stat                                #查看 OSD 状态
ceph osd dump [--format plain/json]          #转储 OSD 运行图
ceph osd tree [--format plain/json]          #把OSD运行图转储为树

ceph mon stat                                #查看监视器状态
ceph mon dump                                #导出监视器状态信息
ceph quorum_status                           #查看监视器的法定人数状态

ceph pg stat                                 #查看归置组状态
ceph pg dump [--format plain/json]           #查看归置组列表
ceph pg map 0.2a                             #根据指定归置组号查看哪些OSD位于Acting Set或Up Set里
ceph pg 0.2a query                           #查询某个归置组信息

ceph osd map <pool-name> <object-name>       #找出某对象在哪里或应该在哪里
ceph osd getmap -o file                      #把最新的OSD运行图拷贝到一个文件,参见osdmaptool
ceph osd getcrushmap -o file                 #从最新OSD运行图拷出CRUSH图
ceph osd setcrushmap -i file                 #导入指定CRUSH 图。

ceph osd crush set {id} {weight} [{loc1} [{loc2} ...]]    #增加或挪动一个新OSD条目,要给出 id/name/weight 和位置参数
ceph osd crush remove {name}                 #从现有CRUSH图删除存在的条目(OSD)
ceph osd crush remove {bucket-name}          #从现有CRUSH图删除存在的空桶
ceph osd crush move {id} {loc1} [{loc2} ...] #把有效的桶从分级结构里的一个位置挪到另一个。
ceph osd crush reweight {name} {weight}      #设置{name}所指条目的权重为{weight}

ceph osd cluster_snap {name}                 #创建集群快照
ceph osd lost {id} [--yes-i-really-mean-it]  #OSD标记为丢失,有可能导致永久性数据丢失,慎用!
ceph osd create [{uuid}]                     #创建新OSD,如果未指定ID,将自动分配个新ID
ceph osd rm [{id}...]                        #删除指定OSD 。
ceph osd getmaxosd                           #查询OSD运行图里的max_osd参数。
ceph osd setmaxosd                           #设置OSD运行图的max_osd参数,扩展存储集群时有必要。

ceph osd down {osd-num}                      #把ID为{osd-num}的OSD标记为down
ceph osd out {osd-num}                       #把OSD{osd-num}标记为数据分布之外(即不给分配数据)
ceph osd in {osd-num}                        #把OSD{osd-num}标记为数据分布之内(即分配了数据)
ceph osd pause                               #设置OSD运行图的暂停标记,不会有IO请求发送到任何OSD
ceph osd unpause                             #用unpause清空此标记会导致重发未决的请求。

ceph osd scrub {osd-num/*}                   #向OSD下达一个洗刷命令,用通配符 * 把命令下达到所有 OSD 。
ceph osd repair osd-num/*                    #向osd下达修复命令,用*下达到所有OSD

ceph osd reweight {osd-num} {weight}         #为OSD重设权重,权重相同的OSD大致会收到相同的I/O请求、并存储相同数量的数据。此命令可给OSD设置一个增益权重,有效值在0和1之间,它使得CRUSH重新归置一定数量的、本应该放到此处的数据。它不会影响crush图里所分配的权重,在CRUSH分布算法没能理想地执行时,它可作为一种纠正手段。比如,假设你的某个OSD使用率达到了90%,但其它的大致都在50%,这时你就可以试着下调此权重来补偿它。
ceph osd reweight-by-utilization [threshold] #重设所有滥用 OSD 的权重,它默认会下调达到平均利用率 120% 的那些OSD ,除非你指定了阀值。
ceph tell osd.N bench [NUMER_OF_OBJECTS] [BYTES_PER_WRITE]    #在osd上进行个简单的吞吐量测试,每次写入BYTES_PER_WRITE、一共写入TOTAL_BYTES。默认以4MB增量写入1GB 。此压力测试是非破坏性的,不会覆盖已有OSD数据,但可能会暂时影响同时访问此OSD的客户端性能。


ceph osd lspools                             #看错存储池列表
ceph osd pool mksnap/rmsnap {pool-name} {snap-name}    #创建/删除存储池快照。
ceph osd pool create {pool-name} pg_num [pgp_num]      #创建/删除/重命名存储池
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]    #创建/删除/重命名存储池
ceph osd pool rename {old-name} {new-name}             #创建/删除/重命名存储池
ceph osd pool set {pool-name} {field} {value}          #更改存储池设置。可用的 field 值有:
        size: 设置存储池内数据的副本数;
        crash_replay_interval: 允许客户端重放确认而未提交的请求前等待的时间,秒;
        pg_num: 归置组数量;
        pgp_num: 计算归置组存放的有效数量;
        crush_ruleset: 用于归置映射的规则号。
ceph osd pool get {pool-name} {field}                  #获取存储池配置值。可用的 field 值有:
        pg_num: 归置组数量;
        pgp_num: 计算归置组存放的有效数量;
        lpg_num: 本地归置组数量;
        lpgp_num: 用于存放本地归置组的数量。
























































































  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值