ceph对象存储搭建

最低限度机器:

1.osd1 192.168.1.2

2.osd2 192.168.1.3

3.monitor + radosgw 192.168.1.4

4.admin 192.168.1.5

前期准备:

0.所有机器初始化完毕,更改hostname,ntp校验时间,关闭selinux,关闭防火墙

1.所有机器创建普通用户 ceph_deploy (ceph新版必须使用普通用户启动)并确保所有机器的新建用户都有sudo权限

useradd ceph_deploy

echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}

sudo chmod 0440 /etc/sudoers.d/{username}

2.所有机器hosts解析相互添加上

vim /etc/hosts
osd1 192.168.1.2
osd2 192.168.1.3
monitor 192.168.1.4
admin 192.168.1.5

3.所有机器ceph_deploy用户秘钥相互免密

ssh-keygen && ssh-copy-id ceph_deploy@{hostname}

4.admin机器 下载安装ceph-deploy程序

sudo subscription-manager repos --enable=rhel-7-server-extras-rpms

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

cat >/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

sudo yum update

sudo yum install ceph-deploy

5.修改admin节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录其他 节点,而无需每次执行 ceph-deploy 都要指定 –username {username} 。

Host node1
   Hostname node1
   User {username}
Host node2
   Hostname node2
   User {username}
Host node3
   Hostname node3
   User {username}

创建集群

在admin节点上创建一个目录作为管理目录

mkdir ceph

创建集群

ceph-deploy new monitor

完成后会在当前路径下应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。

更改ceph.conf

 vim ceph.conf

 osd pool default size = 2

 如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下。详情见网络配置参考。

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

安装 Ceph

ceph-deploy install osd1 osd2 monitor admin

到各个node去执行ceph –version 检查ceph安装结果

ceph --version  

配置初始 monitor(s)、并收集所有密钥:

ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环:

{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring

配置osd 节点

给osd1,osd2 分别添加一块硬盘,创建分区/dev/sdb1,格式化为xfs 文件系统

添加osd 节点

ceph-deploy osd prepare osd1:/dev/sdb1 osd2:/dev/sdb1

激活osd 节点

ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1

查看/dev/sdb1 分区是否挂载成功

分别在两个osd 节点中,把/dev/sdb1分区加入到/etc/fstab 中开机自动挂载

搭建对象存储网关

安装rgw

ceph-deploy install --rgw monitor

ceph-deploy rgw create monitor

在monitor 节点ceph.conf追加如下配置

vim /etc/ceph/ceph.conf 
[client.rgw.client-node]
rgw_dns_name = ceph.closeli.cn  请填写主域名,解析时采用泛解析
rgw_frontends = "civetweb port=80"

生成一个 Ceph 对象网关用户名和key

sudo ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring

为 S3 访问新建一个 RADOSGW 用户

sudo radosgw-admin user create --uid="testuser" --display-name="First User"

python 测试代码:


import boto.s3.connection

access_key = '1GB703PJH538VUE6H1AS'
secret_key = '2mAsFWEuVFV5ixqkOZ3XAtZvjpC7UbT7gtxChaCU'

conn = boto.connect_s3(
        aws_access_key_id = access_key,
        aws_secret_access_key = secret_key,
        host = 'ceph.closeli.cn',
        is_secure=False,
        calling_format = boto.s3.connection.OrdinaryCallingFormat(),
        )

conn.create_bucket('my-new-bucket') #创建bucket

for bucket in conn.get_all_buckets():  #显示该用户下所有bucket
        print(f"{ bucket.name}\t{bucket.creation_date}")

a=conn.get_bucket('my-new-bucket') 获取指定bucket

key = a.new_key('hello.txt')  #创建一个文件

key.set_contents_from_string('Hello World!') #写入一个文件

for key in a: #获取文件内容
  print(f"{key.name}\t{key.size}\t{key.last_modified}")

key = a.get_key('hello.txt') #获取文件并下载

key.get_contents_to_filename('/Users/yeshaobin/Downloads/hello.txt')

key.generate_url(3600, query_auth=True, force_http=True) #获取文件url下载地址

print(plans_url)

猜你喜欢

转载自blog.csdn.net/dearmark/article/details/78863397