zoukankan      html  css  js  c++  java
  • CEPH之对象存储

    一、官方文档

    http://docs.ceph.org.cn/
    http://docs.ceph.org.cn/radosgw/
    

    二、安装 CEPH 对象网关

    自从 firefly (v0.80) 版本开始,Ceph 对象网关运行在 Civetweb 上(已经集成进守护进程 ceph-radosgw ),而不再是 Apache 和 FastCGI 之上。使用 Civetweb简化了Ceph对象网关的安装和配置。
    # 操作文档
    http://docs.ceph.org.cn/install/install-ceph-gateway/
    

    2.1、部署

    # 1、在管理节点的工作目录下,给 Ceph 对象网关节点安装Ceph对象所需的软件包
    [root@node1 ~]# yum install -y ceph-radosgw  # 之前在三个节点都安装过了
    
    # 2、部署rgw
    [root@node1 ~]# cd /app/ceph-deploy/ceph-deploy/
    [root@node1 ceph-deploy]# ceph-deploy rgw create node1
    
    # 3、报错解决(查看日志)
    [root@node1 ceph-deploy]# tail -f /var/log/ceph/ceph-client.rgw.node1.log 
    ###
    ceph.conf 配置文件加上
    mon_max_pg_per_osd = 1000
    ###
    
    # 4、推送配置文件,然后重启
    [root@node1 ceph-deploy]# ceph-deploy  --overwrite-conf  admin node1 node2 node3  # (node1执行)
    [root@node1 ceph-deploy]# sudo systemctl restart ceph.target      # (这个三个节点都重启)
    
    # 5、端口检查
    [root@node1 ceph-deploy]# ss -ntl | grep 7480 
    LISTEN     0      128          *:7480                     *:*                  
    LISTEN     0      128         :::7480                    :::*  
    
    # 6、curl一下(出现一下情况是正常的了)
    [root@node1 ceph-deploy]# curl http://node1:7480
    <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult
    

    2.2、在任何时候如果你遇到麻烦,而你也想重新来一次,执行下面的命令来清除配置

    ceph-deploy purge <gateway-node1> [<gateway-node2>]
    ceph-deploy purgedata <gateway-node1> [<gateway-node2>]
    

    2.3、修改网关默认端口

    # 1、在ceph.conf 末尾加上
    [root@node1 ceph-deploy]# vim ceph.conf 
    [client.rgw.node1]
    rgw_frontends = "civetweb port=80"
    
    # 2、推送文件
    [root@node1 ceph-deploy]# ceph-deploy --overwrite-conf config push node1 node2 node3 
    
    # 3、重启
    [root@node1 ceph-deploy]# systemctl restart ceph.target      # (这个三个节点都重启)
    
    # 4、测试是否更改成功
    [root@node1 ceph-deploy]# curl http://node1:80
    <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>[root@node1
    

    2.4、使用对象存储

    为了使用 REST 接口,首先需要为S3接口创建一个初始 Ceph 对象网关用户。然后,为 Swift 接口创建一个子用户。然后你需要验证创建的用户是否能够访问网关。
    2.4.1、创建用户,在 gateway host 上执行下面的命令
    [root@node3 ~]# radosgw-admin user create --uid="ceph-s3-user" --display-name="Ceph S3 User Demo"        
    {
        "user_id": "ceph-s3-user",
        "display_name": "Ceph S3 User Demo",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [
            {    # 这三个信息后面会要,很重要
                "user": "ceph-s3-user",
                "access_key": "7W1JL897CI54324HN4GH",
                "secret_key": "pBqTKmOTBOPaCulchBzusudlIFJrlKqpH7L0mKcE"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw",
        "mfa_ids": []
    }
    
    # 其他命令
    [root@node3 ~]# radosgw-admin user list
    [
        "ceph-s3-user"
    ]
    [root@node3 ~]# radosgw-admin user info  --uid   ceph-s3-user
    
    2.4.3、测试 S3 访问

    为了验证 S3 访问,你需要编写并运行一个 Python 测试脚本。S3 访问测试脚本将连接 radosgw, 新建一个新的 bucket 并列出所有的 buckets。 aws_access_key_idaws_secret_access_key 的值来自于命令radosgw_admin 的返回值 access_keysecret_key

    执行下面的步骤:

    1. 你需要安装 python-boto 包:

      sudo yum install python-boto
      
    2. 新建 Python 脚本文件:

      vi s3test.py
      
    3. 将下面的内容添加到文件中:

      import boto
      import boto.s3.connection
      
      access_key = '7W1JL897CI54324HN4GH'
      secret_key = 'pBqTKmOTBOPaCulchBzusudlIFJrlKqpH7L0mKcE+ZDA'
      conn = boto.connect_s3(
              aws_access_key_id = access_key,
              aws_secret_access_key = secret_key,
              host = '{hostname}', port = {port},
              is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),
              )
      
      bucket = conn.create_bucket('my-new-bucket')
          for bucket in conn.get_all_buckets():
                  print "{name}".format(
                          name = bucket.name,
                          created = bucket.creation_date,
       )
      

      {hostname} 替换为你配置了网关服务的节点的主机名。比如 gateway host. 将 {port} 替换为 Civetweb 所使用的端口。

    4. 运行脚本:

      python s3test.py
      

      输出类似下面的内容:

      my-new-bucket 2015-02-16T17:09:10.000Z
      
  • 相关阅读:
    数据库内外连接以及自然连接
    Mybatis的一级二级缓存
    彻底弄懂CAS单点登录
    Tomcat部署项目的方式
    redis集群脑裂以及解决方案
    AOP分析--代理方式的选择
    线程池
    数据结构--结构体
    Python程序--选择判断
    C语言--密码问题
  • 原文地址:https://www.cnblogs.com/hsyw/p/14541028.html
Copyright © 2011-2022 走看看