zoukankan      html  css  js  c++  java
  • 安装ceph (快速) 步骤三: Ceph 客户端

    大多数 Ceph 用户不会直接往 Ceph 存储集群里存储对象,他们通常会使用 Ceph 块设备、 Ceph 文件系统、或 Ceph 对象存储这三大功能中的一个或多个。

    前提条件

    先完成存储集群快速入门 ,并确保 Ceph 存储集群处于 active + clean 状态,这样才能使用 Ceph 块设备。

    块设备快速入门

    Ceph 块设备也叫 RBD 或 RADOS 块设备。

    可以在虚拟机上运行 ceph-client 节点,但是不能在与 Ceph 存储集群(除非它们也用 VM )相同的物理节点上执行下列步骤。

    这里采用新添加一台主机来操作,还需要进行预检工作,具体查看网址:https://www.cnblogs.com/sanduzxcvbnm/p/15080342.html
    添加hosts解析,ntp时间同步,升级内核版本,普通用户免登录,关闭卸载firewalld,关闭selinux

    主机名是:ceph-clinet,ip是:10.16.16.114

    安装 Ceph

    1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations),查看ceph-client主机

    lsb_release -a
    uname -r
    

    2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

    $ cd my_cluster
    $ ceph-deploy install ceph-client
    

    3.在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client (ceph-deploy主机上操作)

    $ ceph-deploy admin ceph-client
    

    ceph-deploy 工具会把密钥环复制到ceph-client主机的 /etc/ceph 目录,要确保此密钥环文件有读权限(如 sudo chmod +r /etc/ceph/ceph.client.admin.keyring )。

    # 在ceph-client主机上操作
    
    $ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
    

    配置块设备

    1.在 ceph-client 节点上创建一个块设备 image (ceph-client主机上操作)

    # 前提条件,已经创建名为rbd的pool,具体查看:https://www.cnblogs.com/sanduzxcvbnm/p/15625374.html
    # 命令示例: rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
    
    $ rbd create foo --size 4096 -m node1 -k /etc/ceph/ceph.client.admin.keyring
    

    2.在 ceph-client 节点上,把 image 映射为块设备 (ceph-client主机上操作)

    # 命令示例: sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
    
    $ sudo rbd map foo --name client.admin -m node1 -k /etc/ceph/ceph.client.admin.keyring
    /dev/rbd0
    

    3.在 ceph-client 节点上,创建文件系统后就可以使用块设备了,此命令可能耗时较长 (ceph-client主机上操作)

    # 命令示例: sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
    
    $ sudo mkfs.ext4 -m0 /dev/rbd0
    mke2fs 1.42.9 (28-Dec-2013)
    Discarding device blocks: 完成                            
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=16 blocks, Stripe width=16 blocks
    262144 inodes, 1048576 blocks
    0 blocks (0.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=1073741824
    32 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376, 294912, 819200, 884736
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 
    

    4.在 ceph-client 节点上挂载此文件系统 (ceph-client主机上操作)

    $ sudo mkdir /mnt/ceph-block-device
    $ sudo mount /dev/rbd0 /mnt/ceph-block-device
    $ cd /mnt/ceph-block-device
    
    $ lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    rbd0            251:0    0    4G  0 disk /mnt/ceph-block-device
    

    有个疑问,使用的pool,创建命令是:ceph osd pool create rbd 128 128
    这里创建块设备后的大小是4G,有待进一步研究。

    问题

    此时查看ceph状态,会发现有提示:application not enabled on 1 pool(s)

    $ ceph -s
      cluster:
        id:     cbbcd33f-95c1-438b-90b7-d57f9ca5835f
        health: HEALTH_WARN
                application not enabled on 1 pool(s)
     
      services:
        mon: 3 daemons, quorum node1,node2,node3
        mgr: node1(active)
        osd: 3 osds: 3 up, 3 in
        rgw: 1 daemon active
     
      data:
        pools:   5 pools, 160 pgs
        objects: 267  objects, 138 MiB
        usage:   3.4 GiB used, 57 GiB / 60 GiB avail
        pgs:     160 active+clean
    

    查看错误详情

    $ ceph health detail
    HEALTH_WARN application not enabled on 1 pool(s)
    POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)
        application not enabled on pool 'rbd'
        use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.
    

    通过查看错误详情,可知解决办法如下:

    # 第一个rbd是pool-name,第二个rbd是app-name,其中app-name只能是'cephfs', 'rbd', 'rgw'中的一个
    $ ceph osd pool application enable rbd rbd
    enabled application 'rbd' on pool 'rbd'
    
    $ ceph -s
      cluster:
        id:     cbbcd33f-95c1-438b-90b7-d57f9ca5835f
        health: HEALTH_OK
     
      services:
        mon: 3 daemons, quorum node1,node2,node3
        mgr: node1(active)
        osd: 3 osds: 3 up, 3 in
        rgw: 1 daemon active
     
      data:
        pools:   5 pools, 160 pgs
        objects: 267  objects, 138 MiB
        usage:   3.4 GiB used, 57 GiB / 60 GiB avail
        pgs:     160 active+clean
    

    Ceph 文件系统快速入门

    准备工作

    1.确认你使用了合适的内核版本,详情见操作系统推荐(http://docs.ceph.org.cn/start/os-recommendations) (ceph-client主机上操作)

    lsb_release -a
    uname -r
    

    2.在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点 (ceph-deploy主机上操作)

    $ cd my_cluster
    $ ceph-deploy install ceph-client
    

    3.确保 Ceph 存储集群在运行,且处于 active + clean 状态。同时,确保至少有一个 Ceph 元数据服务器在运行

    # 命令示例:ceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]
    
    # 因为元数据服务器mds在node1主机上  (ceph-client主机上操作)
    $ ceph -s -m node1 -k /etc/ceph/ceph.client.admin.keyring
      cluster:
        id:     cbbcd33f-95c1-438b-90b7-d57f9ca5835f
        health: HEALTH_OK
     
      services:
        mon: 3 daemons, quorum node1,node2,node3
        mgr: node1(active)
        osd: 3 osds: 3 up, 3 in
        rgw: 1 daemon active
     
      data:
        pools:   5 pools, 160 pgs
        objects: 267  objects, 138 MiB
        usage:   3.4 GiB used, 57 GiB / 60 GiB avail
        pgs:     160 active+clean
    

    创建文件系统

    虽然已创建了元数据服务器,但如果你没有创建存储池和文件系统,它是不会变为活动状态的。(http://docs.ceph.org.cn/cephfs/createfs/)

    # 命令示例:ceph osd pool create cephfs_data <pg_num>
    # 命令示例:ceph osd pool create cephfs_metadata <pg_num>
    # 命令示例:ceph fs new <fs_name> cephfs_metadata cephfs_data
    
    # 一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据 (ceph-client主机上操作)
    
    $ ceph osd pool create cephfs_data 32 32
    pool 'cephfs_data' created
    
    $ ceph osd pool create cephfs_metadata 32 32
    pool 'cephfs_metadata' created
    
    $ ceph fs new cephfs cephfs_metadata cephfs_data
    new fs with metadata pool 8 and data pool 9
    

    文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:(ceph-client主机上操作)

    $ ceph mds stat
    cephfs-1/1/1 up  {0=node1=up:active}
    

    建好文件系统且 MDS 活跃后,你就可以挂载此文件系统了.

    创建密钥文件

    Ceph 存储集群默认启用认证,你应该有个包含密钥的配置文件(但不是密钥环本身)。用下述方法获取某一用户的密钥: (ceph-client主机上操作)

    1.在密钥环文件中找到与某用户对应的密钥,例如:
    $ cat /etc/ceph/ceph.client.admin.keyring
    
    2.找到用于挂载 Ceph 文件系统的用户,复制其密钥。大概看起来如下所示:
    [client.admin]
       key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
    
    3.打开文本编辑器
    4.把密钥粘帖进去,大概像这样:
      AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
    
    5.保存文件,并把其用户名 name 作为一个属性(如 admin.secret )。
    $ echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >> admin.secret
    6.确保此文件对用户有合适的权限,但对其他用户不可见。
    

    内核驱动

    把 Ceph FS 挂载为内核驱动。

    # 命令示例:sudo mkdir /mnt/mycephfs
    # 命令示例:sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs
    

    Ceph 存储集群默认需要认证,所以挂载时需要指定用户名 name 和创建密钥文件一节中创建的密钥文件 secretfile ,例如:(ceph-client主机上操作)

    # 命令示例:sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
    
    $ sudo mount -t ceph node1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
    $ mount -l
    10.16.16.111:6789:/ on /mnt/mycephfs type ceph (rw,relatime,name=admin,secret=<hidden>,acl)
    

    从管理节点而非服务器节点挂载 Ceph FS 文件系统

    用户空间文件系统( FUSE )

    注:找不到ceph-fuse命令,这一步暂时不做

    把 Ceph FS 挂载为用户空间文件系统( FUSE )

    # 命令示例:sudo mkdir ~/mycephfs
    # 命令示例:ceph-fuse -m node1:6789 ~/mycephfs
    
    # Ceph 存储集群默认要求认证,需指定相应的密钥环文件,除非它在默认位置(即 /etc/ceph ):
    # 命令示例:sudo ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 ~/mycephfs
    

    Ceph 对象存储快速入门

    从 firefly(v0.80)起,Ceph 存储集群显著地简化了 Ceph 对象网关的安装和配置。网关守护进程内嵌了 Civetweb,无需额外安装 web 服务器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 来安装网关软件包、生成密钥、配置数据目录以及创建一个网关实例。

    Civetweb 默认使用 7480 端口。要么直接打开 7480 端口,要么在你的 Ceph 配置文件中设置首选端口(例如 80 端口)。

    安装 Ceph 对象网关

    1.在 client-node 上执行预安装步骤。如果你打算使用 Civetweb 的默认端口 7480 ,必须通过 firewall-cmd 或 iptables 来打开它.
    2.从管理节点的工作目录,在 client-node 上安装 Ceph 对象网关软件包。例如:

    # 命令示例:ceph-deploy install --rgw <client-node> [<client-node> ...]
    $ ceph-deploy install --rgw ceph-client
    

    新建 Ceph 对象网关实例

    从管理节点的工作目录,在 client-node 上新建一个 Ceph 对象网关实例。例如:

    $ ceph-deploy rgw create ceph-client
    

    一旦网关开始运行,你就可以通过 7480 端口来访问它(比如 http://ceph-client:7480 )。

    配置 Ceph 对象网关实例

    这一步相当于是修改访问的端口号,从默认的7480换成80

    1.通过修改 Ceph 配置文件可以更改默认端口(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:

    # 命令示例
    [client.rgw.client-node]
    rgw_frontends = "civetweb port=80"
    
    实际情况
    [client.rgw.ceph-client]
    rgw_frontends = "civetweb port=80"
    

    确保在 rgw_frontends 键值对的 port= 中没有空格。
    如果你打算使用 80 端口,确保 Apache 服务器没有在使用该端口,否则会和 Civetweb 冲突。出现这种情况时我们建议移除 Apache 服务。

    $ ceph-deploy --overwrite-conf config push node1 node2 node3
    

    2.为了使新端口的设置生效,需要重启 Ceph 对象网关。在 RHEL 7 和 Fedora 上 ,执行:

    # 示例命令:sudo systemctl restart ceph-radosgw.service
    
    $ sudo systemctl restart ceph-radosgw.service
    

    3.最后,检查节点的防火墙,确保你所选用的端口(例如 80 端口)处于开放状态。如果没有,把该端口加入放行规则并重载防火墙的配置。例如:

    sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port
    80/tcp --permanent
    sudo firewall-cmd --reload
    

    你应该可以生成一个未授权的请求,并收到应答。例如,一个如下不带参数的请求:

    http://<client-node>:80
    

    应该收到这样的应答:

    <ListAllMyBucketsResult>
    <Owner>
    <ID>anonymous</ID>
    <DisplayName/>
    </Owner>
    <Buckets/>
    </ListAllMyBucketsResult>
    
  • 相关阅读:
    [其他]JAVA与C#的Socket通信
    Ext 向Ext.form.ComboBox()中添加列表的分类
    Extjs tree 过滤查询功能
    Extjs TreePanel API详解
    JVM虚拟机21: 1.8中废弃永久代(PermGen)迎来元空间(Metaspace)
    JVM虚拟机20:内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
    Java虚拟机19:再谈四种引用状态
    Java虚拟机18:Java对象大小、对象内存布局及锁状态变化
    Java虚拟机17:互斥同步、锁优化及synchronized和volatile
    Java虚拟机16:Java内存模型
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15633702.html
Copyright © 2011-2022 走看看