安装Ceph集群

目录

1、服务端部署

2、Dashboard的配置

3、配置块存储

4、配置对象存储

5、配置文件系统


1、服务端部署

准备环境
系统版本:centos7.4 x86_64 server
硬件配置:5台vm,1核1G内存,每台node角色的机器至少挂载1块不低于5个G的空闲盘为osd存储
​
    主机名                 ip                       role
    admin            192.168.153.130               admin--安装ceph-deploy
    node1            192.168.153.131               mon / mgr / osd 
    node2            192.168.153.132               osd
    node3            192.168.153.133               osd
    ceph-client      192.168.153.134
    
1.给三台node节点添加一块大小5G以上的磁盘。
2.所有节点修改主机名并相互解析
3.关闭所有机器的防火墙和selinux
4.所有节点创建普通用户并设置密码--所有节点都操作
5.同步时间,保证时间一致
6.配置好yum源 epel 官方源

[root@admin ~]# useradd cephu
[root@admin ~]# passwd cephu
​
5.确保各 Ceph 节点上新创建的用户都有 sudo 权限--所有节点操作
[root@admin ~]# visudo  ----在root ALL=(ALL) ALL下面添加:
cephu ALL=(root) NOPASSWD:ALL

安装Ceph集群_第1张图片

6.实现ssh无密码登录(admin节点操作)

[root@admin ~]# su - cephu
[cephu@admin ~]$ ssh-keygen
​
7.将admin节点cephu用户生成的密钥拷贝到各Ceph节点:

[cephu@admin ~]$ ssh-copy-id cephu@node1
[cephu@admin ~]$ ssh-copy-id cephu@node2
[cephu@admin ~]$ ssh-copy-id cephu@node3
[cephu@admin ~]$ ssh-copy-id cephu@ceph-client
​
8.在admin节点用root用户添加~/.ssh/config配置文件,并进行如下设置,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了
[root@admin ~]# mkdir ~/.ssh
[root@admin ~]# vim ~/.ssh/config
Host node1
Hostname node1
User cephu
​
Host node2
Hostname node2
User cephu
​
Host node3
Hostname node3
User cephu

9.添加下载源,安装ceph-deploy(admin节点,root用户)

[root@admin ~]# 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
​
更新源,安装ceph-deploy:

[root@admin ~]# yum makecache
[root@admin ~]# yum update
开启yum缓存

[root@admin ~]# vim /etc/yum.conf
keepcache=1
安装

[root@admin ~]# yum install ceph-deploy vim wget unzip -y
​
10.安装ntp(所有节点)
#注意!!选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端跟服务器同步时间
我选择的是admin上:
[root@admin ~]# yum install -y ntpdate
[root@admin ~]# ntpdate ntp.aliyun.com

部署ceph集群
#注意!!没有特别说明以下所有操作均是在admin节点,cephu用户下执行
1.创建cephu操作的目录:

[root@admin ~]# su - cephu
[cephu@admin ~]$ mkdir my-cluster   #之后,所有ceph-deploy命令操作必须在该目录下执行
​
2.创建集群---这里报错查看后面的错误整理
首先在这里需要先下载一个包并安装否则会报错,然后在创建集群

[cephu@admin ~]$ wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
[cephu@admin ~]$ unzip distribute-0.7.3.zip
[cephu@admin ~]$ cd distribute-0.7.3
[cephu@admin distribute-0.7.3]$ sudo python setup.py install
​
创建集群

[cephu@admin ~]$ cd my-cluster/
[cephu@admin my-cluster]$ ceph-deploy new node1
[cephu@admin my-cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file
​
3.安装luminous-12.2.13
目标:在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包
​
方法1:利用官方脚本全自动安装


[cephu@admin my-cluster]$ ceph-deploy install --release luminous node1 node2 node3
#这一步时间很长,容易超时,可以利用手动安装
​
​
​
如果ceph和ceph-radosgw安装不上,则采用方法2
测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.13
 
[cephu@node1 ~]$ ceph --version 
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
​
​
方法2:手动部署安装三台机器分别创建:三台node节点相同操作
    1)安装epel源
    # yum install -y epel-release
    2)创建Ceph源,内容如下:官方源

    # vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
​
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
​
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
​
#下面的是阿里云的ceph源
# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
    3)分别在node1,node2,node3节点执行下面命令安装软件,可以完全手动安装,但需要yum的ceph缓存目录结构
    $sudo yum install ceph ceph-radosgw  -y    
    如果因为速度慢导致安装失败可以按ctrl+c,利用它创建的yum缓存目录,手动把安装包下载下来保存到缓存目录/var/cache/yum/x86_64/Ceph/packages目录下
    再次执行安装命令:
    $sudo yum install ceph ceph-radosgw  -y
​
测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.13    
[cephu@node1 ~]$ ceph --version 
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
4.初始化mon:admin节点--cephu用户执行

[cephu@admin my-cluster]$ ceph-deploy mon create-initial
​
5.赋予各个节点使用命令免用户名权限:

[cephu@admin my-cluster]$ ceph-deploy admin node1 node2 node3
​
6.安装ceph-mgr:只有luminous才有,为使用dashboard做准备

[cephu@admin my-cluster]$ ceph-deploy mgr create node1
​
7.添加osd:
注意:各个节点上提供存储空间的磁盘大小不能太小,最好5G以上,注意检查你的磁盘名字

[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node1
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node2
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node3
命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区)。
最后通过如下命令查看集群状态:

[cephu@admin my-cluster]$ ssh node1 sudo ceph -s
如果显示health_ok,3个osd up就成功了

2、Dashboard的配置

在node1上操作
把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr

[root@node1 ~]# su - cephu
​
1.创建管理域秘钥:

[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
    key = AQAePadeYsvJLxAA9Pnmib3S+0Kj1jAeuSQcKw==
​
2.开启 ceph-mgr 管理域

[cephu@node1 ~]$ sudo ceph-mgr -i node1
​
3.查看ceph的状态:确认mgr的状态为active

[cephu@node1 ~]$ sudo ceph status
  cluster:
    id:     aec06bc6-428c-49ff-a2c1-2d84808bcb54
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum node1
    mgr: node1(active, starting)
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   3.01GiB used, 12.0GiB / 15.0GiB avail
    pgs:
    
4.打开dashboard模块:加载dashboard模块到内存里面

[cephu@node1 ~]$ sudo ceph mgr module enable dashboard
​
5.绑定开启dashboard模块的ceph-mgr节点的ip地址:

[cephu@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.153.136
set mgr/dashboard/node1/server_addr
# ip地址为mgr节点的ip地址,也就是node1的ip地址
​
5.web登录:浏览器地址栏输入:
 mgr地址:7000

安装Ceph集群_第2张图片

到这里Ceph分布式集群完成!

3、配置块存储

创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行--也就是规划好的node1节点
创建存储池:

[cephu@node1 ~]$ sudo ceph osd pool create rbd 128 128
pool 'rbd' created
​
注释:
创建pool
# 若少于5个OSD, 设置pg_num为128。
# 5~10个OSD,设置pg_num为512。
# 10~50个OSD,设置pg_num为4096。
​
​
​
初始化存储池

[cephu@node1 ~]$ sudo rbd pool init rbd
​
准备客户端client(客户端操作):
升级client内核到最新版本
更新前,内核版本为:

[root@ceph-client ~]# uname -r 
3.10.0-693.el7.x86_64
​
升级方法
导入key

[root@client ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
​
安装elrepo的yum源

[root@client ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
​
查看可用的系统内核包

[root@client ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
​
安装内核

[root@client ~]# yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
​
查看内核默认启动顺序

[root@client ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg 
CentOS Linux (5.7.8-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-f0079ffdc1064b91b9f525935ca9c3e7) 7 (Core)
​
选择处于0位置的新内核为默认启动内核

[root@client ~]# grub2-set-default 0
[root@client ~]# reboot
​
重启后的内核版本:

[root@client ~]# uname -r 
5.7.8-1.el7.elrepo.x86_64
​
删除旧内核

[root@client ~]# yum remove kernel -y
​
client安装ceph:
环境准备参考部署ceph文档开头环境准备的2-5步
​
安装依赖包、epel、配置ceph源

[root@client ~]# yum install -y  python-setuptools  epel-release
[root@client ~]# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
​
[root@client ~]# yum install ceph ceph-radosgw  -y
[root@client ~]# ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
​
在admin节点赋予client使用命令免用户名权限:

[cephu@admin my-cluster]# ceph-deploy admin client
​
修改client下该文件的读权限:

[root@client ~]# chmod +r /etc/ceph/ceph.client.admin.keyring
​
修改client下的ceph配置文件:这一步是为了解决映射镜像时出错问题

[root@client ~]# vi /etc/ceph/ceph.conf #在global section下添加:
rbd_default_features = 1
​
client节点创建块设备镜像:单位是M,这里是4个G

[root@client ~]# rbd create foo --size 4096
​
client节点映射镜像到主机:

[root@client ~]# rbd map foo --name client.admin
/dev/rbd0
​
client节点格式化块设备:

[root@client ~]# mkfs.ext4 -m 0 /dev/rbd/rbd/foo
​
client节点mount块设备:

[root@client ~]# mkdir /mnt/ceph-block-device #创建挂载点
[root@client ~]# mount /dev/rbd/rbd/foo /mnt/ceph-block-device #挂载
​
客户端重起之后,设备需要重新作映射,不然可能会卡死,有需要做开机挂载可以在/etc/rc.local中进行映射和挂载
​
​
# 删除块存储

[root@client ~]# umount /mnt/ceph-block-device      #客户端先卸载
[root@client ~]# rbd unmap /dev/rbd/rbd/foo1                #取消映射
[root@client ~]# ceph osd pool delete rbd rbd --yes-i-really-really-mean-it     #删除pool
pool 'rbd_pool' removed
​
# 如果遇到以下错误

[root@client ~]# ceph osd pool delete rbd rbd --yes-i-really-really-mean-it
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
​
# 处理方法:

[root@node1 ~]# vim /etc/ceph/ceph.conf # 在文件中增加以下行
mon_allow_pool_delete= true
[root@node1 ~]# systemctl restart ceph-mon@node1
继续删除即可

4、配置对象存储

由于客户端已经升级了内核,并安装了客户端,在做对象存储是就不在进行客户端配置了

# 在node1上创建rgw对象网关,端口为7480

[root@admin ~]# ceph-deploy rgw create node1
[root@node1 ~]# ss -tnlp
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128              *:7480                         *:*                   users:(("radosgw",pid=972,fd=36))
​
# 在客户端测试连接对象网关。连接对象存储需要用户账号秘钥连接,所以需要再客户端创建用户秘钥
#创建账号秘钥,如下所示(radosgw-admin命令其实是yum -y  install ceph-common安装的)

[root@client ~]# radosgw-admin user create --uid="newrain" --display-name="newrain"
{
    "user_id": "newrain",
    "display_name": "newrain",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "newrain",
            "access_key": "53HERX0LCC7UV4FT9EFL",
            "secret_key": "ucN9AYrPofCB1u3PGpEEzIqW6NHNe6F5OTE9qKVy"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw"
}
​
# 使用S3连接ceph对象网关
[root@client ~]# #AmazonS3是一种面向Internet的对象存储服务.我们这里可以使用s3工具连接ceph的对象存储进行操作。
[root@client ~]# yum install s3cmd -y       #安装s3模块,用于连接对象存储#安装好s3包后就会有s3cmd命令用于连接对象存储,为了方便,我们可以把一些连接参数写成一个.s3cfg文件,s3cmd命令默认会去读这个文件
[root@client ~]# vim /root/.s3cfg           #创建文件,并写入一下内容
[default]
access_key = 53HERX0LCC7UV4FT9EFL           #这个访问秘钥就是我们创建newrain用户时的访问秘钥
secret_key = ucN9AYrPofCB1u3PGpEEzIqW6NHNe6F5OTE9qKVy       #这个安全秘钥就是我们创建newrain用户时的安全秘钥    
host_base = 192.168.75.129:7480                         #对象存储的IP和端口
host_bucket = 192.168.75.129:7480/%(bucket)             #桶,对象存储的IP和端口
cloudfront_host = 192.168.75.129:7480
use_https = False
​
# s3cmd命令测试连接对象存储
[root@client ceph]# s3cmd mb s3://newrain                   #创建一个名为newrain的桶,桶的概念可理解为目录
Bucket s3://newrain/ created
[root@client ceph]# s3cmd ls                                #查看桶
2022-01-05 16:19  s3://newrain
[root@client ~]# s3cmd put /var/log/yum.log  s3://newrain           #put文件到桶,即上传文件
upload: /var/log/yum.log -> s3://newrain/yum.log  [1 of 1]5014 of 5014   100% in    1s     3.72 KB/s  done
[root@client ~]# s3cmd get s3://newrain/yum.log                     #get文件到本地,即下载文件到本地
download: s3://newrain/yum.log -> ./yum.log  [1 of 1]5014 of 5014   100% in    0s  1106.05 KB/s  done
[root@client ~]# ll                                                 #查看文件
total 12
-rw-------. 1 root root 1203 Jan  1 15:45 anaconda-ks.cfg
-rw-r--r--. 1 root root 5014 Jan  5 16:22 yum.log   
# 生成带签名的url
[root@client ~]# s3cmd signurl s3://newrain/yum.log $(date -d 'now + 1 year' +%s)
http://192.168.75.129:7480/newrain/yum.log?AWSAccessKeyId=53HERX0LCC7UV4FT9EFL&Expires=1724326642&Signature=n71mSypF6u0NdHLky43cbT5srsE%3D
​

5、配置文件系统

# 创建Ceph文件存储
# 要运行Ceph文件系统, 你必须先创建至少带一个mds的Ceph存储集群(Ceph块设备和Ceph对象存储不使用MDS)。
# Ceph MDS: Ceph文件存储类型存放与管理元数据metadata的服务。
[cephu@admin my-cluster]$ ceph-deploy  mds create node1 node2 node3
#第1步、 在node1节点创建mds服务(最少创建一个mds,也可以做多个mds实现HA)
[root@node1 ~]# ceph mds stat                                   #查看mds状态
cephfs-1/1/1 up  {0=node3=up:active}, 2 up:standby
[root@node1 ceph]#
#第2步、 一个Ceph文件系统需要至少两个RADOS存储池,一个用于存放数据,一个用于存放元数据,下面我们就来创建这两个池
[root@node1 ceph]# ceph osd pool  create ceph_data 16               #创建ceph_data池,用于存数据
[root@node1 ceph]# ceph osd pool  create ceph_metadata 8            #创建ceph_metadata池,用于存元数据
#第3步、创建ceph文件系统,并确认客户端访问的节点
[root@node1 ceph]# ceph fs new cephfs ceph_metadata ceph_data       #cephfs就是ceph文件系统名,即客户端挂载点,ceph_metadata是上一步创建的元数据池,ceph_data是上一步创建的数据此,这两个池的顺序不能乱
new fs with metadata pool 3 and data pool 4
[root@node1 ceph]# ceph fs ls                                       #查看我们创建的ceph文件系统
name: cephfs, metadata pool: ceph_metadata, data pools: [ceph_data ]
[root@node1 ceph]#
​
​
# 客户端挂载
[root@node1 ~]# cd /etc/ceph
[root@node1 ceph]# cat ceph.client.admin.keyring                    #在node1上查看客户端的秘钥文件内容,这个文件叫ceph.client.admin.keyring,其中admin是用户名
[client.admin]                                                      #admin是用户名key = AQDYGeJkiAemGBAAakLZFEr7HQTIDwrmgIg3KA==                #这个就是客户端的秘钥
[root@node1 ceph]#
[root@client ~]# mkdir /etc/ceph && cd /etc/ceph                    #在cline客户端创建一个/etc/ceph目录
[root@client ceph]# echo 'AQDYGeJkiAemGBAAakLZFEr7HQTIDwrmgIg3KA==' >> admin.key        #新建一个秘钥文件,并把从node1上看到的客户端秘钥复制到这个文件里来
[root@client ceph]# cat admin.key 
AQDYGeJkiAemGBAAakLZFEr7HQTIDwrmgIg3KA==
[root@client ceph]# mkdir /cephfs_data                              #先创建一个目录作为挂载点
[root@client ceph]# mount.ceph  node1:6789:/ /cephfs_data/ -o name=admin,secretfile=/etc/ceph/admin.key         
#解读:node1:6789:/ /cephfs_data/,其中6789是mon的端口,客户端挂载连接找mon的,因为我们node1上创建了3个mon,所以这里写node2,node3都可以,斜杠表示找根,找node1的根就是找我们在node1上创建的cephfs文件系统,/cephfs_data/表示挂载到本地的ceph_data目录,-o表示指定参数选项,name=admin,secretfile=/etc/ceph/admin.key 表示使用用户名为admin,秘钥使用/etc/ceph/admin.key秘钥文件进行连接
[root@client ceph]# df -h                                           #查看是否挂载了
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M   14M  473M   3% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root  6.2G  1.6G  4.7G  26% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                     98M     0   98M   0% /run/user/0
192.168.118.128:6789:/   532M     0  532M   0% /cephfs_data 

你可能感兴趣的:(ceph)