Ceph集群配置系列《三》部署Ceph集群

前期准备

部署的Ceph集群是基于mimic版。要安装Ceph和其它支持软件,需要从Ceph仓库中获取软件包。

在本系列中使用的Ceph仓库是在第一篇文章中制作的远程仓库。

Note:以下操作需在全部的节点执行;

  1. 添加密钥

    将密钥添加至系统的可信密钥列表中以避免出现安全警告。 对于主要版本(例如,hammer, jewel, luminous,mimic等),请使用release.asc密钥。

    要安装release.asc密钥,请执行以下命令:

    [root@node1~]# sudo rpm --import 'http://11.11.11.10/ceph/keys/release.asc'
    
  2. 修改ceph.repo

    修改每个节点的ceph.repo文件。 在下面的示例中,需将{ceph-release}替换为Ceph的主要发行版(例如,luminous,mimic等)和将{distro}替换为相应的Linux发行版(例如,el7等)。 可以通过查看http://11.11.11.10/ceph/rpm-{ceph-release}/目录以查看Ceph支持的发行版。 某些Ceph包(例如EPEL)必须优先于标准包,因此必须确保设置priority = 2。

    在此处{ceph-release}为mimic,{distro}为el7。

    [ceph]
    name=Ceph packages for $basearch
    baseurl=http://11.11.11.10/ceph/rpm-mimic/el7/$basearch
    enabled=1
    priority=2
    gpgcheck=0
    gpgkey=http://11.11.11.10/ceph//keys/release.asc
    
    [ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://11.11.11.10/ceph/rpm-mimic/el7/noarch
    enabled=1
    priority=2
    gpgcheck=0
    type=rpm-md
    gpgkey=http://11.11.11.10/ceph/keys/release.asc
    
  3. 增加extras.repo

    在每个节点新建/etc/yum.repo.d/ceph.repo文件,并增加以下内容。

    [extras]
    name=Extra packages
    baseurl=http:/11.11.11.10/extras
    enabled=1
    priority=2
    gpgcheck=0
    

部署Ceph集群

在管理节点上创建一个目录,用于保存ceph-deploy为集群生成的配置文件和密钥。

[root@node1~]# mkdir my-cluster && cd my-cluster
[root@node1 my-cluster]#

ceph-deploy会将文件输出到当前目录。 执行ceph-deploy时,请确保位于此目录中。

创建集群

如果遇到麻烦且想要重新开始,请执行以下操作以清除Ceph软件包,并清除其所有数据和配置:

[root@node1 my-cluster]# ceph-deploy purge {ceph-node} [{ceph-node}] 
[root@node1 my-cluster]# ceph-deploy purgedata {ceph-node} [{ceph-node}] 
[root@node1 my-cluster]# ceph-deploy forgetkeys 
[root@node1 my-cluster]# rm ceph.* 

如果执行purge,则必须重新安装Ceph。 最后一个rm命令删除在安装期间由本地ceph-deploy创建的所有文件。

在管理节点上,进入刚创建的放置配置文件的目录,使用 ceph-deploy 执行以下命令。

①创建集群。

[root@node1 my-cluster]# ceph-deploy new {initial-monitor-node(s)} 

将initial-monitor-node指定为hostname。 例如:

[root@node1 my-cluster]# ceph-deploy new node1 

在当前目录中使用ls和cat检查ceph-deploy的输出。 应该看到Ceph配置文件(ceph.conf),监视器密钥环(ceph.mon.keyring)以及集群的日志文件。 有关其它详细信息,请参阅ceph-deploy new -h。

若报错:

Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

解决办法:

第1步:解决python 版本问题 。注意检查操作系统的python版本,ceph-deploy通过执行python脚本来实现安装,

更改/usr/bin/ceph-deploy文件中 更改python2.6的部分为2.7(此处应当与系统python版本相同) 更改第一行文件为#!/usr/bin/python2.7

第2步:安装 python2-pip。yum -y install python2-pip

②如果有多个网口,需在Ceph配置文件的[global]部分下添加public network设置。

public network = {ip-address}/{bits} 

例如:

public network = 11.11.11.0/24 

以使用11.11.11.0/24(或11.11.11.0/255.255.255.0)网络中的IP。

同时也可以在[global]部分指定cluster network设置。

cluster network = {ip-address}/{bits} 

例如:

cluster network = 11.11.12.0/24 

以使用11.11.12.0/24(或11.11.12.0/255.255.255.0)网络中的IP。

③如果要在IPv6环境中部署,请将以下内容添加到本地目录中的ceph.conf:

[root@node1 my-cluster]# echo ms bind ipv6 = true >> ceph.conf 

④安装依赖包:

# yum install -y python-jinja2 python-werkzeug python-prettytable python-routes python-bcrypt python-cherrypy python-pecan
# yum install -y  selinux-policy-devel selinux-policy-doc selinux-policy-minimum  selinux-policy-mls selinux-policy-sandbox
# yum install -y lttng-modules-debuginfo lttng-tools lttng-tools-debuginfo lttng-tools-devel lttng-ust lttng-ust-debuginfo lttng-ust-devel lttng-ust-java lttng-ust-java-agent
# yum install -y leveldb libbabeltrace liboath

⑤安装Ceph包:

[root@node1 my-cluster]# ceph-deploy install {ceph-node} [...]  --repo-url=http://11.11.11.10/ceph/rpm-mimic/el7/ --gpg-url=http://11.11.11.10/ceph/keys/release.asc

例如:

[root@node1 my-cluster]# ceph-deploy install node1 node2 node3 node4 --repo-url=http://11.11.11.10/ceph/rpm-mimic/el7/ --gpg-url=http://11.11.11.10/ceph/keys/release.asc

如果设置了环境变量,即可让安装过程与常规一样,具体过程如下:

CentOS:

[root@node1 my-cluster]# export CEPH_DEPLOY_REPO_URL=http://11.11.11.10/ceph/rpm-nautilus/el7
[root@node1 my-cluster]# export CEPH_DEPLOY_GPG_URL=http://11.11.11.10/ceph/keys/release.asc

ceph-deploy将在每个节点上安装Ceph。

⑥部署初始监视器并收集密钥:

[root@node1 my-cluster]# ceph-deploy mon create-initial

完成此过程后,本地目录应包括以下密钥环:

  • ceph.client.admin.keyring
  • ceph.bootstrap-mgr.keyring
  • ceph.bootstrap-osd.keyring
  • ceph.bootstrap-mds.keyring
  • ceph.bootstrap-rgw.keyring
  • ceph.bootstrap-rbd.keyring
  • ceph.bootstrap-rbd-mirror.keyring

Note:如果此步失败并输出类似于如下信息 “Unable to find /etc/ceph/ceph.client.admin.keyring”,请确认 ceph.conf 中为 monitor 指定的 IP 是 Public IP,而不是 Private IP。

⑦在管理节点使用ceph-deploy将配置文件和管理密钥复制到个Ceph节点,这样无需在每次执行命令时指定监视器地址和ceph.client.admin.keyring就可以使用ceph CLI。

[root@node1 my-cluster]# ceph-deploy admin {ceph-node(s)} 

例如:

[root@node1 my-cluster]#ceph-deploy admin node1 node2 node3

⑧部署MGR。 (仅适用于Luminous及更高版本):

[root@node1 my-cluster]# ceph-deploy mgr create node1  # Required only for luminous+ builds, i.e >= 12.x builds

⑨添加OSD。出于说明目的,假设每个节点中都有两个个未使用的磁盘,名为/dev/sdb和/dev/sdc。确保设备当前未在使用,且不包含任何重要数据。

[root@node1 my-cluster]# ceph-deploy osd create --data {device} {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node1
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node1
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node2
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node2
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node3
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node3
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node4
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node4

⑩检查集群的健康状况。

# ssh node1 sudo ceph health 

集群应报告HEALTH_OK。 可以使用以下命令查看更完整的集群状态:

# ssh node1 sudo ceph -s

扩展集群

启动并运行基本集群后,下一步是扩展集群。 首将Ceph mds添加到node1、node2和node3。 然后将Ceph mon和Ceph mgr添加到node2和node3,以提高可靠性和可用性。

添加MDS

要使用CephFS,至少需要一个元数据服务器。 执行以下操作以创建元数据服务器:

[root@node1 my-cluster]# ceph-deploy mds create {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy mds create node1 node2 node3

注意:只有在新建文件池和文件系统后,ceph -s才会显示mds信息

添加Monitor

Ceph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。 为了实现高可用性,Ceph存储集群通常运行多个Ceph mon,单个Ceph mon的故障不会导致Ceph存储集群崩溃。 Ceph使用Paxos算法,该算法需要大多数监视器(即大于N / 2,其中N是监视器的数量)才能形成法定人数。 虽然这不是必需的,但奇数个监视器往往更好。

添加两个Ceph mon到集群:

[root@node1 my-cluster]# ceph-deploy mon add {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy mon add node2  
[root@node1 my-cluster]# ceph-deploy mon add node3

一旦添加了新的Ceph Monitor,Ceph将开始同步Monitor并形成一个法定人数。 可以通过执行以下操作来检查仲裁状态:

#ceph quorum_status --format json-pretty 

Tip:当 Ceph 集群运行多个Monitor时,各个Monitor主机都应该配置NTP,而且要确保这些 Monitor位于NTP服务的同一级。

添加Manager

Ceph Manager守护进程以active/standby模式运行。 部署额外的mgr守护进程可确保在一个守护进程或主机发生故障时,另一个守护进程或主机可以在不中断服务的情况下接管。

要部署额外的mgr守护进程:

[root@node1 my-cluster]# ceph-deploy mgr create node2 node3 

应该在以下输出中看到备用Manager:

#ssh node1 sudo ceph -s
cluster:
    id:   6ba14dc2-0261-4925-9a50-f90c94d544d2
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 8 osds: 8 up, 8 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   8.0 GiB used, 15 TiB / 15 TiB avail
    pgs:     

添加RGW实例

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

[root@node1 my-cluster]# ceph-deploy rgw create {gateway-node} 

例如:

[root@node1 my-cluster]# ceph-deploy rgw create node4

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

[.rgw.client-node] 
rgw frontends = civetweb port=80

要使新端口设置生效,请重启Ceph对象网关。 在CentOS7上,运行以下命令:

# sudo systemctl restart [email protected]

Tip:所有和ceph有关的服务,重启的最小间隔为30分钟;如果两次重启同一服务的间隔小于30分钟,则第二次重启会失败。

为固定和优化某些配置,暂时将本地目录的配置文件ceph.conf,修改为:

[root@node1 my-cluster]# vim ceph.conf
[global]
fsid = 6ba14dc2-0261-4925-9a50-f90c94d544d2
mon_initial_members = node1
mon_host =  node1,node2,node3
mon_addr = 11.11.11.20,11.11.11.21,11.11.11.22
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 11.11.11.0/24
cluster network = 11.11.12.0/24
osd crush update on start = false

[mon]
mon_allow_pool_delete = true

[mon.node1]
host = node1
mon_addr = 11.11.11.20
[mon.node2]
host = node2
mon_addr = 11.11.11.21
[mon.node3]
host = node3
mon_addr = 11.11.11.22

[osd]
osd heartbeat grace = 20
osd heartbeat interval = 5

[client.rgw.node4] 
rgw_frontends = "civetweb port=80"

然后使用ceph-deploy将配置文件复制到个Ceph节点。

[root@node1 my-cluster]# ceph-deploy --overwrite-conf admin node1 node2 node3

以后可以根据实际情况随时优化配置文件。

下节将Ceph 块设备(即RBD)的使用。

你可能感兴趣的:(分布式存储,#,Ceph)