在这篇文章中,我记录在fedora-28 虚拟机上创建最小 CEPH RGW 集群的粗略的笔记和命令。

操作系统版本:

# cat /etc/redhat-release

Fedora release 28 (Twenty Eight)

系统要求:

  • >25 GB storage space where ceph source code needs to be built
  • preferably >8GB ram
从源代码手动安装:

To build ceph code:

Source: ​​http://docs.ceph.com/docs/mimic/install/build-ceph/​

  • git clone ​​https://github.com/ceph/ceph.git​
  • cd ceph/
  • git status
  • git submodule update –force –init –recursive
  • ./install-deps.sh  #安装依赖
  • ./do_cmake.sh
  • cd build/
  • make
  • make install
  • ln -s /usr/local/lib64/librado* /usr/lib64/

在虚拟机上本地启动 ceph 集群:

  • cd /../ceph/build
  • MON=1 OSD=1 MDS=1 MGR=1 RGW=1 ..//src/vstart.sh -n -d
  • 所列的每项服务都创建一个
  • ps aux | grep ceph

现在创建 rgw 用户/子用户 users/sub-users:

Source:- (​​http://docs.ceph.com/docs/mimic/radosgw/admin/​​)

我们需要为 S3 访问创建用户和为 SWIFT 创建子用户。

radosgw-admin user create –uid=rgwuser –display-name=”RGW user”

#默认情况下生成访问密钥和秘密密钥(access-key and secret key)。检查用户信息

  • radosgw-admin subuser create –uid=rgwuser –subuser=rgwuser:swift –access=full
  • radosgw-admin caps add –uid=rgwuser –caps=”users=*;buckets=*”
  • (增加能力)
  • radosgw-admin 用户信息 –uid=rgwuser
  • 检查用户/子用户信息

测试 s3 访问:(使用 python-boto)

Source: ​​http://docs.ceph.com/docs/mimic/radosgw/s3/python/​

  • dnf 安装 python-boto
  • 以下是各种功能的示例脚本 -
import boto
import boto.s3.connection

access_key = "ZGX5BVGID059T7DJLM0S"
secret_key = "koe8DFgGwNk5sQTRVxHaDiEgYQDVj8XVXMdZ4ULd"

boto.config.add_section('s3')
boto.config.set('s3', 'use-sigv4', 'True')

#create connection
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 's3.localhost',
port = 8000,
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)

#create bucket
bucket = conn.create_bucket('my-new-bucket')

#list buckets created
for bucket in conn.get_all_buckets():
print "{name}\t{created}".format(
name = bucket.name,
created = bucket.creation_date,
)

#insert file "hello.txt" as object into the bucket
key = bucket.new_key('hello.txt')
key.set_contents_from_string('Hello World!') #write contents

#list objects
for key in bucket.list():
print "{name}\t{size}\t{modified}".format(
name = key.name,
size = key.size,
modified = key.last_modified,
)

#connect to specific bucket and object
my_bucket = conn.get_bucket('my-new-bucket')
hello_key = my_bucket.get_key('hello.txt')

# make hello.txt object public
hello_key.set_canned_acl('public-read')

#generate web-url for the file hello.txt
hello_url = hello_key.generate_url(0, query_auth=False, force_http=True)
print hello_url

#copy hello.txt to local filesystem
key.get_contents_to_filename('/workspace/scripts/sample_hello.txt')

通过 SWIFT 访问进行测试:

Source: ​​https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html/object_gateway_guide_for_red_hat_enterprise_linux/rgw-configuration-rgw#test-swift-access​

  • dnf 安装 python-setuptools
  • easy_install pip
  • pip install – 升级安装工具
  • pip install –upgrade python-swiftclient
  • 列出已经创建的容器:
  • swift -A ​​http://​​{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K ‘{swift_secret_key}’ list
  • eg: #swift -A http://localhost:8000/auth/1.0 -U rgwuser:swift -K '5euZSGD4ikdo4ppVYNiQ1czRXSACHkuO367S41Po' list my-new-bucket
  • 将对象插入容器:
# echo " swift access " > swift_file
# swift -A http://localhost:8000/auth/1.0 -U rgwuser:swift -K '5euZSGD4ikdo4ppVYNiQ1czRXSACHkuO367S41Po' upload my-new-bucket swift_file
swift_file
# swift -A http://localhost:8000/auth/1.0 -U rgwuser:swift -K '5euZSGD4ikdo4ppVYNiQ1czRXSACHkuO367S41Po' list my-new-bucket
hello.txt
swift_file

  • 下载一个对象:
#  swift -A http://localhost:8000/auth/1.0 -U rgwuser:swift -K '5euZSGD4ikdo4ppVYNiQ1czRXSACHkuO367S41Po' download my-new-bucket hello.txt 
hello.txt [auth 0.003s, headers 0.008s, total 0.008s, 0.002 MB/s]
# cat hello.txt
Hello World!

 使用 Ceph-nano:

Source: ​​http://docs.ceph.com/docs/mimic/install/build-ceph/​

  • 确保 docker 已安装并正在运行。

#systemctl start docker

  • 运行示例泊坞窗图像以检查其是否正常工作

#docker run hello-world

对我来说,它起初在 VM 上工作..然后更新包“dnf update”并重新启动 VM..它工作了。

  • ./cn cluster start -d /root/tmp my-first-cluster
  • ./cn cluster status my-first-cluster
  • docker ps
  • docker image ls
  • ./cn cluster ls
  • ./cn cluster enter my-first-cluster
  • 创建 S3 存储桶:
  • ./cn s3 mb my-first-cluster my-buc
  • ./cn s3 put my-first-cluster /etc/passwd my-buc