owncloud软件包
PHP72
apache
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
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
yum -y install php72w
yum -y install php72w-cli php72w-common php72w-devel php72w-mysql php72w-xml php72w-odbc
wget https://download.owncloud.org/community/owncloud-10.2.0.zip
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
概述
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) 交互。
主机名 操作系统 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
[root@ceph-node1 ~]# cat /etc/hosts
10.0.0.101 ceph-node1
10.0.0.102 ceph-node2
10.0.0.103 ceph-node3
[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 就可以免密登录到另外两台虚拟机上了。
yum install -y chrony
配置省略
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
在 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 集群并不处于健康状态
格式化磁盘并挂载
[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/
在另外两个节点做相同的操作
在 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 状态
开放权限给其他节点,进行灾备处理
[root@ceph-node1 ceph]# ceph-deploy admin ceph-node{1,2,3}
检查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
在管理节点的工作目录下,给 Ceph 对象网关节点安装Ceph对象所需的软件包
ceph-deploy install --rgw ceph-node1 ceph-node2 ceph-node3
安装RGW实例
ceph-deploy rgw create ceph-node1
curl http://ceph-xxx-osd03.gz01:7480 -v
创建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
创建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