本文分两部分分别介绍Ceph Luminous版集群的安装以及配置ISCSI服务。

一、部署ceph集群

[root@ceph01 ~]# yum -y install ceph

1.1 Ceph Monitor部署

[root@ceph01 ~]# mkdir ceph;cd ceph
[root@ceph01 ceph]# ceph-deploy new ceph01 ceph02 ceph03
[root@ceph01 ceph]# ceph-deploy mon create  ceph01 ceph02 ceph03

1.2 节点认证

[root@ceph01 ceph]# ceph-deploy gatherkeys ceph01 ceph02 ceph03

1.3 分发ceph配置到其他节点

[root@ceph01 ceph]# ceph-deploy admin ceph01 ceph02 ceph03
[root@ceph01 ceph]# ceph -s
  cluster:
    id:     97291641-fb19-49c5-9fd2-d42fe7d78243
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   0 kB used, 0 kB / 0 kB avail
    pgs:  

1.4 Ceph manager部署

[root@ceph01 ceph]# ceph-deploy mgr create ceph01 ceph02 ceph03
[root@ceph01 ceph]# ceph -s
  cluster:
    id:     97291641-fb19-49c5-9fd2-d42fe7d78243
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph01(active), standbys: ceph02, ceph03
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   0 kB used, 0 kB / 0 kB avail
    pgs:     

--启用dashboard

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

Dashboard的port默认为7000,可以执行ceph config-key set mgr/dashboard/server_port $PORT修改port。也可以执行ceph config-key set mgr/dashboard/server_addr $IP指定dashboard的访问IP。

1.5 Ceph OSD部署

[root@ceph01 ceph]# ceph-deploy disk zap ceph01:sdb ceph02:sdb ceph03:sdb
[root@ceph01 ceph]# ceph-deploy disk zap ceph01:sdc ceph02:sdc ceph03:sdc
[root@ceph01 ceph]# ceph-deploy osd create ceph01:sdb ceph02:sdb ceph03:sdb
[root@ceph01 ceph]# ceph-deploy osd create ceph01:sdc ceph02:sdc ceph03:sdc
[root@ceph01 ceph]# ceph -s
  cluster:
    id:     97291641-fb19-49c5-9fd2-d42fe7d78243
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph01(active), standbys: ceph02, ceph03
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 bytes
    usage:   6162 MB used, 1193 GB / 1199 GB avail
    pgs:     

1.6 官方建议调整的参数

[root@ceph01 ~]# ceph tell osd.* injectargs '--osd_client_watch_timeout 15'
[root@ceph01 ~]# ceph tell osd.* injectargs '--osd_heartbeat_grace 20'
[root@ceph01 ~]# ceph tell osd.* injectargs '--osd_heartbeat_interval 5'

二、部署ISCSI服务

2.1 安装软件

ceph相关的ISCSI软件包可以从redhat通过的源代码进行编译或者下载centos已经编译好的。

[root@ceph01 ~]# yum install ceph-iscsi-cli tcmu-runner ceph-iscsi-tools 
[root@ceph01 ceph]# ceph osd pool create rbd 150 150
[root@ceph01 ceph]# ceph osd pool application enable rbd rbd --yes-i-really-mean-it

2.2 创建配置文件

创建iscsi-gateway.cfg,此文件主要设置iscsi服务的网关。

[root@ceph01 ~]# vi /etc/ceph/iscsi-gateway.cfg 
[config]
# Name of the Ceph storage cluster. A suitable Ceph configuration file allowing
# access to the Ceph storage cluster from the gateway node is required, if not
# colocated on an OSD node.
cluster_name = ceph

# Place a copy of the ceph cluster's admin keyring in the gateway's /etc/ceph
# drectory and reference the filename here
gateway_keyring = ceph.client.admin.keyring

# API settings.
# The API supports a number of options that allow you to tailor it to your
# local environment. If you want to run the API under https, you will need to
# create cert/key files that are compatible for each iSCSI gateway node, that is
# not locked to a specific node. SSL cert and key files *must* be called
# 'iscsi-gateway.crt' and 'iscsi-gateway.key' and placed in the '/etc/ceph/' directory
# on *each* gateway node. With the SSL files in place, you can use 'api_secure = true'
# to switch to https mode.

# To support the API, the bear minimum settings are:
api_secure = false

# Additional API configuration options are as follows, defaults shown.
# api_user = admin
# api_password = admin
# api_port = 5001
trusted_ip_list = 192.168.120.81,192.168.120.82,192.168.120.83

2.3 同步文件到其他节点

[root@ceph01 ~]# scp /etc/ceph/iscsi-gateway.cfg ceph02:/etc/ceph
[root@ceph01 ~]# scp /etc/ceph/iscsi-gateway.cfg ceph03:/etc/ceph

2.4 启动API服务

[root@ceph01 ~]# systemctl daemon-reload
[root@ceph01 ~]# systemctl enable rbd-target-api
[root@ceph01 ~]# systemctl start rbd-target-api
[root@ceph01 ~]# systemctl status rbd-target-api
● rbd-target-api.service - Ceph iscsi target configuration API
   Loaded: loaded (/usr/lib/systemd/system/rbd-target-api.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-05-31 11:35:04 CST; 4s ago
 Main PID: 25372 (rbd-target-api)
   CGroup: /system.slice/rbd-target-api.service
           └─25372 /usr/bin/python /usr/bin/rbd-target-api

May 31 11:35:04 ceph01 systemd[1]: Started Ceph iscsi target configuration API.
May 31 11:35:04 ceph01 systemd[1]: Starting Ceph iscsi target configuration API...
May 31 11:35:05 ceph01 rbd-target-api[25372]: Started the configuration object watcher
May 31 11:35:05 ceph01 rbd-target-api[25372]: Checking for config object changes every 1s
May 31 11:35:05 ceph01 rbd-target-api[25372]:  * Running on http://0.0.0.0:5000/

三、配置ISCSI服务

3.1 创建target

[root@ceph01 ~]# gwcli
/> cd iscsi-target
/iscsi-target> create iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw

3.2 创建ISCSI网关

/iscsi-target...-igw/gateways> create ceph01 192.168.120.81 skipchecks=true
OS version/package checks have been bypassed
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target...-igw/gateways> create ceph02 192.168.120.82 skipchecks=true
OS version/package checks have been bypassed
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target...-igw/gateways> create ceph03 192.168.120.83 skipchecks=true
OS version/package checks have been bypassed
Adding gateway, sync'ing 0 disk(s) and 0 client(s)
ok
/iscsi-target...-igw/gateways> ls
o- gateways .................................................................................................. [Up: 3/3, Portals: 3]
  o- ceph01 .................................................................................................. [192.168.120.81 (UP)]
  o- ceph02 .................................................................................................. [192.168.120.82 (UP)]
  o- ceph03 .................................................................................................. [192.168.120.83 (UP)]

如果操作系统非Centos或redhat,则需要加skipchecks=true参数。

3.3 创建RBD image

/iscsi-target...-igw/gateways> cd /disks
/disks> create Oracle vol01 100G
ok
/disks> create Oracle vol02 300G
ok

3.4 创建客户端名称

Linux平台可以查看/etc/iscsi/initiatorname.iscsi文件获取InitiatorName。如果修改了默认的名称,必须重启iscsid服务,否则在登录iscsi服务端的时候会报错。

/disks> cd /iscsi-target/iqn.2003-01.com.redhat.iscsi-gw:iscsi-igw/hosts 
/iscsi-target...csi-igw/hosts>create iqn.1988-12.com.oracle:3d93d2aa7f1:odb03
ok
/iscsi-target...csi-igw/hosts>create iqn.1988-12.com.oracle:ccd061606e1:odb04
ok

3.5 设置客户端认证

/iscsi-target...csi-igw/hosts> cd  iqn.1988-12.com.oracle:3d93d2aa7f1:odb03
/iscsi-target...odb03> auth chap=admin/redhat
/iscsi-target...odb04> auth chap=admin/redhat

3.6 客户端映射磁盘

/iscsi-target...odb03> disk add vol01
ok
/iscsi-target...odb03> disk add vol02
ok
/iscsi-target...odb04> disk add vol01
ok
/iscsi-target...odb04> disk add vol02
ok

最后的结果如下图所示: