owncloud对接Ceph对象存储

owncloud对接Ceph对象存储

1.搭建owncloud

owncloud软件包

PHP72

apache

1.安装httpd服务

yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service

2.安装PHP7.2

1.手动更新rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm    
2. 安装PHP7.2
yum -y install php72w
3. 安装PHP其他库
yum -y install php72w-cli php72w-common php72w-devel php72w-mysql php72w-xml php72w-odbc

3.上线owncloud代码

1.下载软件包
wget https://download.owncloud.org/community/owncloud-10.2.0.zip
2.解压使用
unzip owncloud-10.2.0.zip
修改权限
chown -R apache.apache /var/www/html/

创建数据存放目录
mkdir /data
chown -R apache.apache /data
可将/data挂载至磁盘

重启httpd
systemctl restart httpd

2.搭建ceph集群对象存储

概述

Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。可以作为k8s的存储类,来方便容器持久化存储。

支持格式

对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。
文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。
块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储

优势

统一存储:虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口
高扩展性:扩容方便、容量大。能够管理上千台服务器、EB级的容量。
高可靠性:支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。
高性能:因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。

1.基础环境配置

1.环境准备

主机名 操作系统 IP规划 用户名:密码
ceph-node1 CentOS 7.7.1908 10.0.0.101 root:123456
ceph-node2 CentOS 7.7.1908 10.0.0.102 root:123456
ceph-node3 CentOS 7.7.1908 10.0.0.103 root:123456

hostnamectl set-hostname ceph-node1
hostnamectl set-hostname ceph-node2
hostnamectl set-hostname ceph-node3

这三台虚拟机各需要有 20G 的空闲硬盘。可以使用 lsblk 命令进行验证。
[root@ceph-node1 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0    2G  0 part [SWAP]
└─sda2   8:2    0   48G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom 

[root@ceph-node2 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0    2G  0 part [SWAP]
└─sda2   8:2    0   48G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

[root@ceph-node3 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0    2G  0 part [SWAP]
└─sda2   8:2    0   48G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  
2.配置hosts解析
[root@ceph-node1 ~]# cat /etc/hosts
10.0.0.101	ceph-node1
10.0.0.102	ceph-node2
10.0.0.103	ceph-node3
3.配置免密登录
[root@ceph-node1 ~]# ssh-keygen
[root@ceph-node1 ~]# ssh-copy-id root@ceph-node2
[root@ceph-node1 ~]# ssh-copy-id root@ceph-node3
复制密钥到 ceph-node2 和 ceph-node3 之后,ceph-node1 就可以免密登录到另外两台虚拟机上了。
4.配置时间同步
yum install -y chrony
配置省略
5.配源
1.配置aliyun base与epel源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.各节点均更新ceph的yum源
cat /etc/yum.repos.d/ceph.repo 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1

2.安装配置ceph

1.创建ceph集群

在 ceph-node1 上安装 ceph-deploy

[root@ceph-node1 ~]# yum install ceph-deploy -y

通过在 cep-node1 上执行以下命令,用 ceph-deploy 创建一个 Ceph 集群

[root@ceph-node1 ~]# mkdir /etc/ceph && cd /etc/ceph

ceph-deploy 的 的 new 子命令能够部署一个默认名称为 为 Ceph 的新集群,并且它到能生成集群配置文件和密钥文件。列出当前的工作目录,可以查看到 ceph.conf 和 ceph.mon.keying 文件

在 ceph-node1 用 上执行以下命令,使用 ceph-deploy 工具在所有节点上安装Ceph 二进制软件包

[root@ceph-node1 ceph]# ceph-deploy install ceph-node1 ceph-node2 ceph-node3

检查所有节点上 Ceph 的版本信息

ceph -V

在 ceph-node1 上创建第一个 Ceph monitor

[root@ceph-node1 ceph]# ceph-deploy --overwrite-conf mon create-initial

Monitor 创建成功后,检查集群的状态,这个时候 Ceph 集群并不处于健康状态

owncloud对接Ceph对象存储_第1张图片

2.创建OSD

格式化磁盘并挂载

[root@ceph-node1 ceph]# mkfs.xfs /dev/sdb
[root@ceph-node1 ceph]# mkdir /opt/osd
[root@ceph-node1 ceph]# mount /dev/sdb /opt/osd1/
[root@ceph-node1 ceph]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        48G  2.0G   47G   5% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.5M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb        50G   33M   50G   1% /opt/osd

[root@ceph-node1 ceph]# chmod 777 /opt/osd1/
在另外两个节点做相同的操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJZ0Xozd-1585751251980)(C:\Users\海龙\AppData\Roaming\Typora\typora-user-images\1584884605629.png)]

在 node1 节点使用 ceph-deploy 工具创建 OSD

[root@ceph-node1 ceph]# ceph-deploy osd prepare ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3
-----------------------osd1 、osd2 、osd3 目录中的文件权限改为 777

接下来开始激活 osd 节点

[root@ceph-node1 ceph]# ceph-deploy osd activate ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3

因为在初始化osd时,我们需要使用集群配置文件ceph.conf,所以我们要首先切换到/etc/ceph目录下

检查 Ceph 集群的状态。此时,集群是 HEALTH_OK 状态

owncloud对接Ceph对象存储_第2张图片

开放权限给其他节点,进行灾备处理

[root@ceph-node1 ceph]# ceph-deploy admin ceph-node{1,2,3}

3.Ceph 集群运维

检查Ceph的安装状态                  	   ceph -w
检查 Ceph monitor 仲裁状态               ceph quorum_status --format jsom-pretty
导出ceph monitor信息					   ceph mon dump
检查集群使用状态						   ceph df
检查ceph monitor  OSD 和配置组状态  	   ceph mon stat     ceph pg stat
列表PG 								   ceph  pg  dump
列出ceph存储池 						   ceph osd lspools
检查集群秘钥 							   ceph auth list

4.ceph对象存储(RGW)搭建

1.安装软件包

在管理节点的工作目录下,给 Ceph 对象网关节点安装Ceph对象所需的软件包

ceph-deploy install --rgw ceph-node1 ceph-node2 ceph-node3
2.管理RGW节点

安装RGW实例

ceph-deploy rgw create ceph-node1
3.查看服务
 curl http://ceph-xxx-osd03.gz01:7480 -v
4.S3用户

创建S3用户

radosgw-admin user create --uid="testuser" --display-name="First User"
    "keys": [
        {
            "user": "testuser",
            "access_key": "XV3A9SA8MEB8IYE984J6",
            "secret_key": "9HSlzSxJRrrre8WwEBStsA7kDQjUmlbTWG3k6J7F"
        }
    ],
需要记住返回结果中keys->access_key和keys->secret_key的值,用于S3接口访问确认

测试S3接口

安装依赖库
yum install python-boto

创建测试DEMO
cat s3_test.py
import boto.s3.connection
access_key = 'GI1GHD6ZOTIVF2R24GQ6'
secret_key = 'UeEubdXgOegAqgzYRsDNPycFLE98ninUN3fFgbia'
conn = boto.connect_s3(
        aws_access_key_id=access_key,
        aws_secret_access_key=secret_key,
        host='ceph-xxx-osd03.gz01', port=7480,
        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} {created}".format(
        name=bucket.name,
        created=bucket.creation_date,
    )
    
执行测试
python s3_test.py
my-new-bucket 
5.Swift用户

创建swift用户

radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full
    "swift_keys": [
        {
            "user": "testuser:swift",
            "secret_key": "KhhCSAWGvwPmcjQhfg4h6N4wliRYdsC2ovrT8Mfe"
        }
#ps:需要记住返回结果中swift_keys->secret_key的值,用于Swift接口访问确认

测试Swift接口

安装依赖包
sudo yum install python-setuptools
sudo easy_install pip
sudo pip install python-swiftclient

执行测试
swift -A http://ceph-node1:7480/auth/1.0 -U testuser:swift -K 'KhhCSAWGvwPmcjQhfg4h6N4wliRYdsC2ovrT8Mfe' list
my-new-bucket

3.对接

owncloud对接Ceph对象存储_第3张图片

你可能感兴趣的:(日常运维)