ceph-deploy部署ceph

原创
06/25 21:59
阅读数 1K

环境说明

节点规划:

主机名 public-ip cluster-ip 角色 磁盘
ceph01 192.168.11.134 10.10.10.2 admin-node,mon,mgr,osd 系统盘: sda;  数据盘:sdb,sdc,sdd
ceph02 192.168.11.135 10.10.10.3 mon, mgr, osd 系统盘: sda;  数据盘:sdb,sdc,sdd
ceph03 192.168.11.136 10.10.10.4 mon, mgr, osd 系统盘: sda;  数据盘:sdb,sdc,sdd

节点角色:

  •  admin-node:ceph集群部署节点,负责集群整体部署,也可以复用cpeh集群中的节点作为部署节点。
  •  monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,一般需要3或5个节点。
  • osd:Ceph存储节点Object Storage Daemon,实际负责数据存储的节点。
  • mgr: Ceph 集群管理节点(manager),为外界提供统一的入口。
  • rgw: Ceph对象网关,是一种服务,使客户端能够利用标准对象存储API来访问Ceph集群
  • mds:Ceph元数据服务器,MetaData Server,主要保存的文件系统服务的元数据,使用文件存储时才需要该组件 

安装版本:

  • ceph版本:nautilus 14.2.9
  • deploy版本:ceph-deploy 2.0.1
  • Ceph网络:Ceph Cluster网络采用10.10.10.0/24,Ceph Public网络采用192.168.11.0/24

注意:cluster网络与public网络采用不同的网段,因此所有节点必须有2块网卡。

一、系统配置

准备yum源, 添加阿里云的源

curl http://mirrors.aliyun.com/repo/Centos-7.repo -o /etc/yum.repos.d/CentOS-Base.repo 
curl http://mirrors.aliyun.com/repo/epel-7.repo -o /etc/yum.repos.d/epel.repo

添加ceph源

[root@ceph01 ~]# 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
priority=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
priority=1

设置主机的/etc/hosts文件

# Ceph Public Network
192.168.11.134 ceph01
192.168.11.135 ceph02
192.168.11.136 ceph03

# Ceph Cluster Network
10.10.10.2 ceph01
10.10.10.3 ceph02
10.10.10.4 ceph03

配置管理节点到其他server免密登录

[root@ceph01 ~]# ssh-keygen -t rsa
[root@ceph01 ~]# ssh-copy-id root@ceph01
[root@ceph01 ~]# ssh-copy-id root@ceph02
[root@ceph01 ~]# ssh-copy-id root@ceph03

安装chrony时间同步服务

# yum install -y chrony

配置chrony,  ceph02, ceph03节点添加到ceph01的同步信息

# vim /etc/chrony.conf

server 192.168.11.134 iburst

启动chrony服务

# systemctl enable chronyd
# systemctl start chronyd

禁用selinux

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld

二、部署ceph

2.1 安装ceph-deploy

在ceph01节点执行

yum update -y
yum install -y yum-plugin-priorities
yum install -y python-setuptools
yum install -y ceph-deploy

校验版本

[root@ceph01 ~]#  ceph-deploy --version
2.0.1

2.2 初始化Ceph集群

初次运行先使用一个Ceph Monitor和三个Ceph OSD守护进程创建一个Ceph存储集群。集群达到 active + clean状态后,通过添加另外两个Ceph Monitors和其它的Ceph OSD守护程序对其进行扩展。

如果想要重新部署,请执行以下操作清除Ceph软件包,并清除其所有数据和配置:

ceph-deploy purge {ceph-node} [{ceph-node}]
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
rm ceph.*

如果执行purge,则必须重新安装Ceph。最后一个rm命令删除在先前安装过程中由ceph-deploy在本地写出的所有文件。

2.3 使用ceph-deploy创建集群

执行下面的命令创建一个Ceph Cluster集群,指定initial-monitor-node为ceph01:

[root@ceph01 ~]# ceph-deploy new --public-network 192.168.11.0/24 --cluster-network 10.10.10.0/24 ceph01

这里直接指定cluster-network(集群内部通讯)和public-network(外部访问Ceph集群),也可以在执行命令后修改配置文件方式指定。

检查当前目录中的输出。应该看到一个Ceph配置文件(ceph.conf),一个monitor secret keyring (ceph.mon.keyring)和新集群的日志文件。有关更多详细信息,请参见ceph-deploy new -h。

[root@ceph01 ~]# ls -l
-rw-r--r--  1 root root    262 Jun 26 04:40 ceph.conf
-rw-r--r--  1 root root 216397 Jun 26 18:49 ceph-deploy-ceph.log
-rw-------  1 root root     73 Jun 26 04:34 ceph.mon.keyring

查看ceph配置文件

[root@ceph01 ~]# cat ceph.conf

[global]
fsid = 31f1c698-726e-4e04-9dc3-111d0cda3bbd
public_network = 192.168.11.0/24
cluster_network = 10.10.10.0/24
mon_initial_members = ceph01
mon_host = 192.168.11.134
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

安装Ceph包到指定节点

[root@ceph01 ~]# ceph-deploy install --no-adjust-repos ceph01 ceph02 ceph03

注:

1. --no-adjust-repos安装不会修改源软件库的软件包,直接使用本地源,不生成官方源

2. ceph-deploy默认会安装ceph-release-*.el7.noarch,从官网ceph.com上去下载安装包了,不同的 ceph-deploy 去 install 的时候会安装不同的版本,如果想安装指定的 ceph 版本,并通过国内的源进行加速下载,必段指定 --repo-url

例:

ceph-deploy install ceph01 --repo-url=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/ --gpg-url=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

3. 参考http://docs.ceph.org.cn/man/8/ceph-deploy/#id4

2.4 创建第一个monitor

创建监视器,初始化monitor并收集所有密钥,官方介绍:为了获得高可用性,您应该运行带有至少三个监视器的生产Ceph集群。

[root@ceph01 ~]# ceph-deploy mon create-initial

初始化完毕后会自动生成以下几个文件,这些文件用于后续和Ceph认证交互使用:

[root@ceph01 ~]# ls -l *.keyring
-rw------- 1 root root 113 Jun 26 20:45 ceph.bootstrap-mds.keyring
-rw------- 1 root root 113 Jun 26 20:45 ceph.bootstrap-mgr.keyring
-rw------- 1 root root 113 Jun 26 20:45 ceph.bootstrap-osd.keyring
-rw------- 1 root root 113 Jun 26 20:45 ceph.bootstrap-rgw.keyring
-rw------- 1 root root 151 Jun 26 20:45 ceph.client.admin.keyring
-rw------- 1 root root  77 Jun 26 20:45 ceph.mon.keyring

使用ceph-deploy命令将配置文件和admin key复制到管理节点和Ceph节点,以便每次执行ceph CLI命令无需指定monitor地址和 ceph.client.admin.keyring。

[root@ceph01 ~]# ceph-deploy admin ceph01 ceph02 ceph03

查看复制的包

[root@ceph01/02/03 ~]# ls -l /etc/ceph/
total 12
-rw------- 1 root root 151 Jun 26 12:52 ceph.client.admin.keyring
-rw-r--r-- 1 root root 263 Jun 26 12:52 ceph.conf
-rw-r--r-- 1 root root  92 Apr 10 01:28 rbdmap
-rw------- 1 root root   0 Jun 26 12:52 tmpEKevC1

创建其它2个mon

[root@ceph01 ~]# ceph-deploy mon create ceph02 ceph03

2.5 创建第一个manager

[root@ceph01 ~]# ceph-deploy mgr create ceph01

2.6 添加3个OSD盘

添加3个osd, 假设每个节点中都有未使用的磁盘/dev/sdb, /dev/sdc, /dev/sdd,确保该设备当前未使用并且不包含任何重要数据。

[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdb ceph01
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdc ceph01
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdd ceph01

可以看到ceph将磁盘创建为lvm格式然后加入ceph集群

[root@ceph01 ~]# pvs |grep ceph
  /dev/sdb   ceph-6b65ae09-4e34-42f2-8766-37cc59350967 lvm2 a--  <5.00g    0 
  /dev/sdc   ceph-963d66a0-2d17-44df-9f8a-1365125a5bb7 lvm2 a--  <5.00g    0 
  /dev/sdd   ceph-41796c1f-4ed3-477f-99a6-753678a27c31 lvm2 a--  <5.00g    0 

[root@ceph01 ~]# vgs |grep ceph
  ceph-41796c1f-4ed3-477f-99a6-753678a27c31   1   1   0 wz--n- <5.00g    0 
  ceph-6b65ae09-4e34-42f2-8766-37cc59350967   1   1   0 wz--n- <5.00g    0 
  ceph-963d66a0-2d17-44df-9f8a-1365125a5bb7   1   1   0 wz--n- <5.00g    0 

[root@ceph01 ~]# lvs |grep ceph
  osd-block-3610684e-189b-43a9-b4df-c91e77924247 ceph-41796c1f-4ed3-477f-99a6-753678a27c31 -wi-ao---- <5.00g                                                    
  osd-block-65f2c4d3-3ac9-45af-8009-eb4cd2ef9866 ceph-6b65ae09-4e34-42f2-8766-37cc59350967 -wi-ao---- <5.00g                                                    
  osd-block-b37b6259-6ea1-48d0-b4aa-9a2f06b9da0a ceph-963d66a0-2d17-44df-9f8a-1365125a5bb7 -wi-ao---- <5.00g

如果直接使用lvm创建OSD,其中–data参数必须为volume_group/lv_name格式,而不是块设备的路径。

2.7 检查集群健康状态

[root@ceph01 ~]# ceph health
HEALTH_OK

集群正常应该显示HEALTH_OK,查看集群状态详细信息:

[root@ceph01 ~]# ceph -s
  cluster:
    id:     31f1c698-726e-4e04-9dc3-111d0cda3bbd
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph01 (age 3h)
    mgr: ceph01(active, since 4m)
    osd: 3 osds: 3 up (since 2m), 3 in (since 2m)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 12 GiB / 15 GiB avail
    pgs:     

2.8 扩展群集

基本集群启动并运行后,下一步就是扩展集群。然后将Ceph Monitor和Ceph Manager添加到ceph02,ceph03以提高可靠性和可用性。

2.8.1 添加Monitors

一个Ceph存储集群至少需要一个Ceph Monitor和Ceph Manager才能运行。为了获得高可用性,Ceph存储群集通常运行多个Ceph Monitor,这样单个Ceph Monitor的故障不会使Ceph存储群集停机。Ceph使用Paxos算法,该算法需要大多数Monitor(即,大于N / 2,其中N是Monitor的数量)才能形成仲裁。Monitor的奇数往往会更好,尽管这不是必需的。

将两个Ceph Monitor添加到集群中:

[root@ceph01 ~]# ceph-deploy mon add ceph02
[root@ceph01 ~]# ceph-deploy mon add ceph03

一旦添加了新的Ceph Monitor,Ceph将开始同步Monitor并形成仲裁。可以通过执行以下命令检查仲裁状态:

[root@ceph01 ~]# ceph quorum_status --format json-pretty

说明:当使用多台Monitor运行Ceph时,应在每台Monitor主机上安装和配置NTP。确保Monitor之间时间同步。

2.8.2 添加其他osd盘

继续添加节点上新的osd磁盘

[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdb ceph02
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdc ceph02
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdd ceph02

[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdb ceph03
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdc ceph03
[root@ceph01 ~]# ceph-deploy osd create --data /dev/sdd ceph03

通过ceph osd tree查看osd的列表情况,可以清晰看到osd在对应node节点,以及当前状态:

[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       0.04408 root default                            
-3       0.01469     host ceph01                         
 0   hdd 0.00490         osd.0       up  1.00000 1.00000 
 1   hdd 0.00490         osd.1       up  1.00000 1.00000 
 2   hdd 0.00490         osd.2       up  1.00000 1.00000 
-5       0.01469     host ceph02                         
 3   hdd 0.00490         osd.3       up  1.00000 1.00000 
 4   hdd 0.00490         osd.4       up  1.00000 1.00000 
 5   hdd 0.00490         osd.5       up  1.00000 1.00000 
-7       0.01469     host ceph03                         
 6   hdd 0.00490         osd.6       up  1.00000 1.00000 
 7   hdd 0.00490         osd.7       up  1.00000 1.00000 
 8   hdd 0.00490         osd.8       up  1.00000 1.00000

更新配置到所有节点

[root@ceph01 ~]# ceph-deploy --overwrite-conf admin ceph01 ceph02 ceph03

重启monitor服务

[root@ceph01 ~]# systemctl restart ceph-mon.target

2.8.3 添加Managers

Ceph Manager守护程序以 active/standby模式运行。部署其他manager daemons可确保如果一个守护程序或主机发生故障,另一守护程序或主机可以接管而不会中断服务。

执行以下命令添加要部署其他Manager守护程序:

[root@ceph01 ~]# ceph-deploy mgr create ceph02 ceph03

在以下输出中可以看到standby Manager:

[root@ceph01 ~]# ceph -s
  cluster:
    id:     31f1c698-726e-4e04-9dc3-111d0cda3bbd
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 62m)
    mgr: ceph01(active, since 61m), standbys: ceph02, ceph03
    osd: 9 osds: 9 up (since 62m), 9 in (since 6d)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:

2.8.4 Dashboard

1. 每个mgr节点安装ceph-mgr-dashboard

# yum install ceph-mgr-dashboard

2. 开启mgr功能

[root@ceph01 ~]# ceph mgr module enable dashboard

3、生成并安装自签名的证书

[root@ceph01 ~]# ceph dashboard create-self-signed-cert

4、创建一个dashboard登录用户名密码

[root@ceph01 ~]# ceph dashboard ac-user-create admin 123456 administrator

5、查看服务访问方式

[root@ceph01 ~]# ceph mgr services
{
    "dashboard": "https://ceph01:8443/"
}

(1). 修改集群dashboard的访问端口

[root@ceph01 ~]# ceph config-key set mgr/dashboard/server_port 7000

(2). 修改集群 dashboard的访问IP

[root@ceph01 ~]# ceph config-key set mgr/dashboard/server_addr 192.168.11.134    # ceph01

2.9 创建rgw实例

要使用 Ceph Object Gateway对象网关组件,必须部署RGW的实例。执行以下操作以创建RGW的新实例:

[root@ceph01 ~]# ceph-deploy rgw create ceph01

默认情况下,RGW实例将侦听7480端口。可以通过在运行RGW的节点上编辑ceph.conf来更改此端口,如下所示:

[client]
rgw frontends = civetweb port=80

验证rgw,浏览器访问http://192.168.11.134:7480/,输出以下内容

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListAllMyBucketsResult>
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

Dashboard中启用rgw

1创建rgw用户

[root@ceph01 ~]# radosgw-admin user create --uid=admin --display-name="admin"  --system
{
    "user_id": "admin",
    "display_name": "admin",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "admin",
            "access_key": "8MGKBO8AD2NG26HXFBBX",
            "secret_key": "CZ6UWlNq5T7hpPhKOCaKiPKNRsNDgnNT8HmdRGQR"
        }
    ],
    .....
}

注: 要使用Dashboard的对象网关管理功能,需要启用了“ --system”标志的用户登录凭据。

2、设置Dashboard证书

[root@ceph01 ~]# ceph dashboard set-rgw-api-access-key 8MGKBO8AD2NG26HXFBBX                    # access_key
[root@ceph01 ~]# ceph dashboard set-rgw-api-secret-key CZ6UWlNq5T7hpPhKOCaKiPKNRsNDgnNT8HmdRGQR                      # secret_key

3、配置rgw访问协议、主机和端口

[root@ceph01 ~]# ceph dashboard set-rgw-api-ssl-verify False
[root@ceph01 ~]# ceph dashboard set-rgw-api-scheme http
[root@ceph01 ~]# ceph dashboard set-rgw-api-host 192.168.11.134
[root@ceph01 ~]# ceph dashboard set-rgw-api-port 7480

4、刷新Dashboard web页面

2.10 创建mds实例

在ceph01节点执行

[root@ceph01 ~]# ceph-deploy mds create ceph01

查看集群状态

[root@ceph01 ~]# ceph -s
  cluster:
    id:     31f1c698-726e-4e04-9dc3-111d0cda3bbd
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 4h)
    mgr: ceph01(active, since 48m), standbys: ceph02, ceph03
    mds:  1 up:standby
    osd: 9 osds: 9 up (since 5m), 9 in (since 5m)
    rgw: 1 daemon active (ceph01)
 
  data:
    pools:   4 pools, 128 pgs
    objects: 187 objects, 1.2 KiB
    usage:   9.1 GiB used, 36 GiB / 45 GiB avail
    pgs:     128 active+clean

查看mds状态

[root@ceph01 ~]# ceph mds stat
 1 up:standby

2.11 安装Cephfs

创建池

[root@ceph01 ~]# ceph osd pool create cephfs_data 32
[root@ceph01 ~]# ceph osd pool create cephfs_metadata 32

查看池

[root@ceph01 ~]# ceph osd pool ls
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
cephfs_data
cephfs_metadata

创建文件系统

[root@ceph01 ~]# ceph fs new cephfs cephfs_metadata cephfs_data

查看mds状态

[root@ceph01 ~]# ceph mds stat
cephfs:1 {0=ceph01=up:active}

挂载cephfs

要挂载启用了 cephx 认证的 Ceph 文件系统,你必须指定用户名、密钥

查看密钥

[root@ceph01 ~]# ceph auth print-key client.admin
AQCLCPZepvFVDhAAzZ8DLuJu4bZOXfJHJ8yYFQ==

挂载

[root@ceph01 ceph]# mount -t ceph 192.168.11.134:6789:/ /mnt/ -o name=admin,secret=AQCLCPZepvFVDhAAzZ8DLuJu4bZOXfJHJ8yYFQ==

上述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码

[root@ceph01 ~]# echo "AQCLCPZepvFVDhAAzZ8DLuJu4bZOXfJHJ8yYFQ==" > client.secret
[root@ceph01 ~]# mount -t ceph 192.168.11.134:6789:/ /mnt/ -o name=admin,secretfile=client.secret

2.12 安装NFS服务

nfs-ganesha是NFS 2-4服务器,在用户地址空间中运行,而不是作为操作系统内核的一部分运行。许多Linux发行版中Linux内核对FUSE的支持不允许您通过NFS导出FUSE。 nfs-ganesha使您可以通过NFS公开FUSE,而无需修补内核。

nfs-ganesha支持两种方式将Ceph导出为NFS,一种通过CephFS,一种通过RGW,通过FSAL模块连接到CephFS或者RGW, 其中,FSAL_CEPH 调用libcephfs1将NFS转义为Cephfs协议再存入到Ceph 中,FSAL_RGW调用librgw2将NFS协议转义为S3协议再通过RGW存入到Ceph中。所以需要额外安装这两个包。

1. 安装nfs-ganesha

[root@ceph01 ~]# yum install -y centos-release-nfs-ganesha28.noarch
[root@ceph01 ~]# yum install -y nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rgw

2. 创建池

新建一个池ganesha_data,此pool专门用来存放一些配置文件,Dashboard管理NFS需要有些配置文件存放在Rados pool中。

[root@ceph01 ~]# ceph osd pool create ganesha_data 32 32

3. 将 pool 关联到应用程序

[root@ceph01 ~]# ceph osd pool application enable ganesha_data cephfs

4. 要在Dashboard中启用NFS-Ganesha管理,需要设置Dashboard要管理的池

[root@ceph01 ~]# ceph dashboard set-ganesha-clusters-rados-pool-namespace ganesha_data

注:想要在Dashbaord中显示NFS配置,需要有部分配置文件存储在Rados对象存储中:

  • 在ganesha配置文件中的EXPORT部分内容需要存放在rados文件中,这部分是直接通过Dashboard中配置生成以export-id并存放在rados中。
  • Dashboard中需要有选择"add deamon“菜单内容,这里正常是能显示对应的主机名称,要想显示这内容,需要部分配置的内容是需要存放在rados的pool中,也就是pool中存放conf-xxx这样的对象,同时需要导出的目录也是存放conf-xxx的目录,否者Dashboard NFS配置中“add deamon”功能中显示为空,不能正常选择要导出节点名称。

(1). 新建空的daemon.txt文本文件

[root@ceph01 ~]# touch daemon.txt

(2). 导入daemon文件到ganesha_data pool中。

[root@ceph01 ~]# rados -p ganesha_data put conf-ceph01 daemon.txt
  • 存入rados的文件名必须要是conf-xxxx,原因是要Ceph Dashboard支持NFS Ganesha管理功能,需要遵循关于每个服务守护进程的RADOS对象名称的约定。对象的名称必须是conf-<daemon_id>格式,其中<daemon_id>对应于运行此服务的节点名称。<daemon_id>是一个任意字符串,应唯一地标识该守护程序实例(例如,运行守护程序的主机名)。
  • 当然我们创建这个文件现在是空的,后续通过Dashboard创建导出后,conf-<daemon_id>会有内容,每个conf-<daemon_id>都包含指向NFS-Ganesha守护程序应服务的导出的RADOS URL。这些URL的格式为:%url rados://<pool_name>[/<namespace>]/export-<id>,在创建新的导出时也同时会创建export-id的文件,这个文件内容存放实际的导出的配置内容,也就是之前没有配置Dashboard时,直接配置在ganesha配置文件中的EXPORT{}的内容。
  • conf-<daemon_id>和export-<id>对象必须存储在同一个RADOS池/命名空间,当然如果是通过Dashboard配置的这两个文件肯定是在同个pool,如果手工创建的话就需要注意这点。

(3).查看ganesha_data池中的内容

[root@ceph01 ~]# rados -p ganesha_data ls

5. 配置nfs-ganesha服务

5.1 查看当前Ceph节点的rgw认证信息

[root@ceph01 ~]# ceph auth list

client.rgw.ceph01
    key: AQALhfZe2ga8FxAAXDOesDT/+AlL4vfGHCJn1A==
    caps: [mon] allow rw
    caps: [osd] allow rwx

5.2 创建一个S3用户专门服务于nfs-ganesha

[root@ceph01 ~]# radosgw-admin user create --uid=nfs_ganesha --display-name="NFS-Ganesha"

{
    "user_id": "nfs_ganesha",
    "display_name": "NFS-Ganesha",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "nfs_ganesha",
            "access_key": "27YA2Y9WEYETUYZD6LG2",
            "secret_key": "RfFQTdaaZ7wLjqPwNx0v9MQOcZgig1VfuTABCVdb"
        }
    ],
    .....
}

5.3 为nfs_ganesha用户添加权限

[root@ceph01 ~]# radosgw-admin caps add --uid=nfs_ganesha --caps="buckets=*;zone=*"

5.4 编辑Ganesha 服务配置文件

[root@ceph01 ganesha]# cat ganesha.conf

EXPORT
{
        Export_ID=1;
        Path = "/";
        Pseudo = /cephfs;
        Access_Type = RW;
        Protocols = 4;
        Transports = TCP;
	Squash = no_root_squash;
        FSAL {
                Name = CEPH;
		#User_Id = "rgw.ceph01";
		#Secret_Access_Key = "AQALhfZe2ga8FxAAXDOesDT/+AlL4vfGHCJn1A==";
        }
}

EXPORT
{
    Export_ID=2;
    Path = "/";
    Pseudo = "/rgw";
    Access_Type = RW;
    Protocols = 4;
    Transports = TCP;
    FSAL {
        Name = RGW;
        User_Id = "nfs_ganesha";
        Access_Key_Id ="27YA2Y9WEYETUYZD6LG2";
        Secret_Access_Key = "RfFQTdaaZ7wLjqPwNx0v9MQOcZgig1VfuTABCVdb";
    }
}

RGW {
    ceph_conf = "/etc/ceph/ceph.conf";
    # for vstart cluster, name = "client.admin"
    name = "client.rgw.ceph01";
    cluster = "ceph";
#    init_args = "-d --debug-rgw=16";
}

RGW部分

  • cluster 设置一个Ceph集群名称(必须与正在导出的集群匹配,默认使用ceph-deploy部署的ceph群集名称为ceph)
  • name 设置RGW实例名称(必须与正在导出的集群中的rgw节点的认证信息匹配,使用ceph auth list可以查看以client.rgw.开头的信息)
  • ceph_conf 给出了要使用的非默认ceph.conf文件的路径,默认路径可以省略此行

5.5 启动 NFS-Ganesha 服务:

[root@ceph01 ~]# systemctl start nfs-ganesha

# 服务调试
ganesha.nfsd -f /etc/ganesha/ganesha.conf -F -L /var/log/ganesha.log -N DEBUG

5.6 NFS 客户端挂载

在 NFS 客户端服务器上挂载 CephFS 到 /cephfs:

[root@ceph03 ~]# mount -t nfs4 -o nfsvers=4.1,proto=tcp,rw,noatime 192.168.11.134:/ /mnt

这样用户就可以通过 NFS 协议访问 CephFS 了

5.7 ceph-fuse 和 nfsd 挂载 CephFS

Ceph 提供了 ceph-fuse 来挂载和访问 CephFS;在 NFS 服务器上通过 ceph-fuse 挂载 CephFS 后,我们可以通过 nfsd 将其发布出去。

(1) NFS 服务端设置

    在 NFS 服务器上挂载 CephFS
    在 /etc/exports 中添加如下内容:

/cephfs * (rw,sync,no_root_squash,fsid=87761f6e-f839-4597-bfe2-fd850d9a03cf)

(2) 运行 exportfs,并启动 rpcbind 和 nfs-server 服务,将 该节点变成 NFS 服务器。

[root@ceph01 ~]# exportfs
[root@ceph01 ~]# systemctl enable --now nfs-server
[root@ceph01 ~]# systemctl enable --now rpcbind

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部