首页 > 其他 > 详细

三 Ceph集群搭建

时间:2020-08-03 18:34:59      阅读:95      评论:0      收藏:0      [点我收藏+]

  Ceph集群

  集群组件

  Ceph集群包括Ceph OSD,Ceph Monitor两种守护进程。
  Ceph OSD(Object Storage Device): 功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。
  Ceph Monitor: 是一个监视器,监视Ceph集群状态和维护集群中的各种关系。
  Ceph存储集群至少需要一个Ceph Monitor和两个 OSD 守护进程。

  集群环境准备

  集群图

技术分享图片

 

 

   准备工作

  准备四台服务器,需要可以上外网,其中三台作为ceph集群 一台作为cehp客户端,除了client外每台加一个磁盘(/dev/sdb),无需分区

  环境查看

技术分享图片

 

 

 

  配置主机名及hosts(四台主机主机名不一样hosts一样)

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
192.168.1.104 client

   关闭防火墙及selinux

  设置ntpdate时间同步并设置在crontab内

ntpdate time1.aliyun.com

   配置ceph的yum源

yum install epel-release -y

 

  四台主机均设置,如果需要设置其他颁布的yum源可以打开页面选择

  http://mirrors.aliyun.com/ceph

# cat /etc/yum.repos.d/ceph.repo 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=0
priority=1

   配置ssh免密登录

  以node1位部署节点在node1配置使node1可以免密登录四台主机

ssh-keygen -t rsa
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id client

    在node1上ssh其他主机无需输入密码代表配置ssh成功

   在node1上安装部署工具(其他节点不用安装)

yum install ceph-deploy -y

   建立一个集群配置目录

  注意:后面大部分操作在此目录进行

mkdir /etc/ceph
cd /etc/ceph

   创建集群

[root@node1 ~]# ceph-deploy new node1

   会在当前配置文件目录生成以下配置文件

#ls
 ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring 

 

   说明

说明:
ceph.conf  				集群配置文件
ceph-deploy-ceph.log  	使用ceph-deploy部署的日志记录
ceph.mon.keyring		mon的验证key文件 监控需要的令牌

 

  集群节点安装ceph

  node1 node2 node3 client都需要安装

yum install ceph ceph-radosgw -y

   查看版本

# ceph -v
ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)

   注意: 如果公网OK,并且网速好的话,可以用`ceph-deploy install node1 node2 node3`命令来安装,但网速不好的话会比较坑
       所以这里我们选择直接用准备好的本地ceph源,然后`yum install ceph ceph-radosgw -y`安装即可。

  客户端安装ceph-common

[root@client ~]# yum install ceph-common -y

   创建mon监控

  解决public网络用于监控

  修改配置文件在[global]配置端添加下面一句

public network = 192.168.1.0/24

   监控节点初始化,并同步配置到所有节点(node1,node2,node3,不包括client)

ceph-deploy mon create-initial

   查看监控状态

[root@node1 ceph]# ceph health
HEALTH_OK

   将配置信息同步到所有节点

ceph-deploy admin node1 node2 node3

   在node2 node3多了几个配置文件

[root@node2 ceph]# ll
总用量 12
-rw------- 1 root root 151 8月   3 14:46 ceph.client.admin.keyring
-rw-r--r-- 1 root root 322 8月   3 14:46 ceph.conf
-rw-r--r-- 1 root root  92 4月  24 01:07 rbdmap
-rw------- 1 root root   0 8月   1 16:46 tmpDX_w1Z

 

  查看状态

# ceph health
HEALTH_OK
[root@node1 ceph]# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK #健康状态为OK
 
  services:
    mon: 1 daemons, quorum node1
    mgr: node1(active
    osd: 1 osds: 1 up, 1 in
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail
    pgs:     32 active+clean

   为了防止mon单点故障,你可以加多个mon节点(建议奇数个,因为有quorum仲裁投票)

ceph-deploy mon add node2
ceph-deploy mon add node3

   再次查看

# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 3 osds: 3 up, 3 in
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail
    pgs:     32 active+clean

   #### 监控到时间不同步的解决方法

**ceph集群对时间同步要求非常高, 即使你已经将ntpd服务开启,但仍然可能有`clock skew deteted`相关警告**

![1546521667118](ceph图片/ntpd没启动造成集群不健康.png)

请做如下尝试:

1, 在ceph集群所有节点上(`node1`,`node2`,`node3`)不使用ntpd服务,直接使用crontab同步

~~~powershell
# systemctl stop ntpd
# systemctl disable ntpd

# crontab -e
*/10 * * * * ntpdate ntp1.aliyun.com                每5或10分钟同步1次公网的任意时间服务器
~~~

2, 调大时间警告的阈值

~~~powershell
[root@node1 ceph]# vim ceph.conf
[global]                                在global参数组里添加以下两行                        
......
mon clock drift allowed = 2                # monitor间的时钟滴答数(默认0.5秒)
mon clock drift warn backoff = 30        # 调大时钟允许的偏移量(默认为5)

  修改了ceph.conf配置需要同步到所有节点

 ceph-deploy --overwrite-conf admin node1 node2 node3

   前面第1次同步不需要加--overwrite-conf参数
  这次修改ceph.conf再同步就需要加--overwrite-conf参数覆盖

  所有ceph集群节点上重启ceph-mon.target服务

systemctl restart ceph-mon.target

   创建mgr(管理)

  eph luminous版本中新增加了一个组件:Ceph Manager Daemon,简称ceph-mgr。

   该组件的主要作用是分担和扩展monitor的部分功能,减轻monitor的负担,让更好地管理ceph存储系统。

ceph-deploy mgr create node1

   查看

# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 3 osds: 3 up, 3 in
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail
    pgs:     32 active+clean

   添加多个mgr可以实现HA

ceph-deploy mgr create node2
ceph-deploy mgr create node3

   查看

[root@node1 ceph]# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 3 osds: 3 up, 3 in
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail
    pgs:     32 active+clean

   创建OSD(存储盘)

  查看帮助

[root@node1 ceph]# ceph-deploy disk --help

[root@node1 ceph]# ceph-deploy osd --help

   zap表示干掉磁盘上的数据,相当于格式化

[root@node1 ceph]# ceph-deploy disk zap node1 /dev/sdb
[root@node1 ceph]# ceph-deploy disk zap node2 /dev/sdb
[root@node1 ceph]# ceph-deploy disk zap node3 /dev/sdb

   将磁盘创建为osd

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

   查看

# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 3 osds: 3 up, 3 in #生成3个OSD
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail #大小为3个磁盘大小总和
    pgs:     32 active+clean
 

    集群节点的扩容方法

  假设再加一个新的集群节点node4

  1, 主机名配置和绑定

  2, 在node4上`yum install ceph ceph-radosgw -y`安装软件

  3, 在部署节点node1上同步配置文件给node4. `ceph-deploy admin node4`

  4, 按需求选择在node4上添加mon或mgr或osd等
  

  ceph dashboard

  查看集群状态确认mgr的active节点

[root@node1 ceph]# ceph -s
  cluster:
    id:     134c6247-2fd4-4669-8c19-d0c9200d90c8
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3 #确认mgr active节点为node1
    osd: 3 osds: 3 up, 3 in
    rgw: 1 daemon active
 
  data:
    pools:   4 pools, 32 pgs
    objects: 189  objects, 1.5 KiB
    usage:   3.0 GiB used, 45 GiB / 48 GiB avail
    pgs:     32 active+clean

   查看开启及关闭的模块

[root@node1 mgr-dashboard]# ceph mgr module ls
{
    "enabled_modules": [
        "balancer",
        "crash",
        "dashboard",
        "iostat",
        "restful",
        "status"
    ],
    "disabled_modules": [
        {
            "name": "hello",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "influx",
            "can_run": false,
            "error_string": "influxdb python module not found"
        },
        {
            "name": "localpool",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "prometheus",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "selftest",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "smart",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "telegraf",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "telemetry",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "zabbix",
            "can_run": true,
            "error_string": ""
        }
    ]
}

 

  开启dashboard模块

ceph mgr module enable dashboard

   创建自签名证书

[root@node1 ceph]# ceph dashboard create-self-signed-cert
Self-signed certificate created

   生成密钥对,并配置给ceph mgr

[root@node1 ceph]#  mkdir /etc/mgr-dashboard
[root@node1 ceph]#  cd /etc/mgr-dashboard/

   

 openssl req -new -nodes -x509 -subj "/O=IT-ceph/CN=cn" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca

 

[root@node1 mgr-dashboard]# ls
dashboard.crt  dashboard.key

   在ceph集群的active mgr节点上(我这里为node1)配置mgr services

[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_addr 192.168.1.101
[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_port 8080

   重启dashboard模块,并查看访问地址

  注意:需要重启不重启查看的端口是默认的8443端口无法访问

     重启就是先关disable再开启enable

[root@node1 mgr-dashboard]# ceph mgr module disable dashboard
[root@node1 mgr-dashboard]# ceph mgr module enable dashboard

   查看mgr service

# ceph mgr services
{
    "dashboard": "https://192.168.1.101:8080/"
}

   设置访问web页面用户名和密码

ceph dashboard set-login-credentials admin admin

   通过本机或其它主机访问 https://ip:8080

技术分享图片

 

 

   

  Ceph文件存储

  要运行Ceph文件系统,你必须先装只是带一个mds的Ceph存储集群

  Ceph.MDS:为Ceph文件存储类型存放元数据metadata(也就是说Ceph块存储和Ceph对象存储不使用MDS)

  创建文件存储并使用

  第1步 在node1部署节点上修改配置/etc/ceph/ceph.conf 增加配置

mon_allow_pool_delete = true

 技术分享图片

 

 

   同步配置文件

  注意:修改了配置文件才需要同步,没有修改不需要同步配置文件

ceph-deploy --overwrite-conf admin node1 node2 node3

   创建3个mds

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

 

  第2步:  一个Ceph文件系统需要至少两个RADOS存储池,一个用于数据,一个用于元数据。所以我们创建它们

[root@node1 ceph]# ceph osd pool create cephfs_pool 128
pool ‘cephfs_pool‘ created
[root@node1 ceph]# ceph osd pool create cephfs_metadata 64
pool ‘cephfs_metadata‘ created

   查看

[root@node1 ceph]# ceph osd pool ls |grep cephfs
cephfs_pool
cephfs_metadata

   第3步: 创建Ceph文件系统,并确认客户端访问的节点

[root@node1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_pool
new fs with metadata pool 10 and data pool 9

   查看

[root@node1 ceph]# ceph osd pool ls
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
cephfs_pool
cephfs_metadata

   

[root@node1 ceph]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_pool ]

 技术分享图片

 

 

[root@node1 ceph]# ceph mds stat
cephfs-1/1/1 up  {0=node3=up:active}, 2 up:standby #这里看到node3为up状态

 技术分享图片

 

   metadata保存在node3上

  客户端准备验证key文件

  说明: ceph默认启用了cephx认证, 所以客户端的挂载必须要验证(ceph.conf默认配置文件开启)

  在集群节点(node1,node2,node3)上任意一台查看密钥字符串

cat /etc/ceph/ceph.client.admin.keyring

   输出

 ceph-authtool -p /etc/ceph/ceph.client.admin.keyring >admin.key

   把这个文件放在客户端client /root/admin.key

  注意:直接把key复制编辑admin.key文档可能会在挂载时报错

  客户端client安装

yum -y install ceph-fuse

 

  客户端挂载

  可以使用其他node主机名进行挂载,例如node3

 mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=/root/admin.key

  查看

技术分享图片

 

   注意:如果使用文件挂载报错可以使用参数secret=秘钥进行挂载

  可以使用两个客户端, 同时挂载此文件存储,可实现同读同写

  往挂载的硬盘写数据可以在dashboard查看读写监控状态

dd if=/dev/zero of=/mnt/file1 bs=10M count=1000

 技术分享图片

 

 



三 Ceph集群搭建

原文:https://www.cnblogs.com/minseo/p/13427715.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!