ceph存储应用--owncloud

目录

框架​

节点规划

部署环境准备

ceph集群部署

在master1上创建集群

创建mon监控组件

监控节点master1初始化

创建mgr管理组件

创建osd磁盘

添加其他节点到ceph集群中

对象存储搭建

创建对象存储网关

创建owncloud应用

ceph对象存储对接owncloud

安装s3工具


框架

 节点规划

节点名字ipceph
owncloud192.168.64.128xxxx
master1192.168.64.150mon,mgr
master2 192.168.64.151osd
master3192.168.64.152osd

部署环境准备

所有节点更改hosts文件,关闭防火墙,关闭selinux,时间同步,添加ceph源和docker源,这个就不演示了,搭建过k8s集群必做的操作。

关于ceph源

centos7

[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
priority=1

centos8

[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el8/x86_64/
enabled=1
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el8/noarch/
enabled=1
gpgcheck=0
priority=1

ceph集群部署

根据节点规划首先配置master1到所有节点免密功能

[root@master1 ceph-install]# ssh-keygen
[root@master1 ceph-install]# ssh-copy-id master2
[root@master1 ceph-install]# ssh-copy-id master3
[root@master1 ceph-install]# ssh-copy-id owncloud

在master1节点安装ceph部署工具

注意: 只在ceph_node1上安装,因为它是部署节点,其它节点不用安装

[root@master1 ceph-install]# yum install ceph-deploy -y

在master1上创建集群

必须建立一个集群配文件

[root@master1 ceph-install]# pwd 
/root/ceph-install
[root@master1 ceph-install]# ls -al 
总用量 8
drwxr-xr-x   2 root root    6 10月 17 14:37 .
dr-xr-x---. 31 root root 4096 10月 17 14:21 ..
[root@master1 ceph-install]# 

在管理节点master1上创建集群

[root@master1 ceph-install]# ceph-deploy new master1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy new master1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0x7fef452f9de8>
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fef44a717a0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ceph_deploy.cli][INFO  ]  mon                           : ['master1']
[ceph_deploy.cli][INFO  ]  public_network                : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  cluster_network               : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  fsid                          : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
[master1][DEBUG ] connected to host: master1 
[master1][DEBUG ] detect platform information from remote host
[master1][DEBUG ] detect machine type
[master1][DEBUG ] find the location of an executable
[master1][INFO  ] Running command: /usr/sbin/ip link show
[master1][INFO  ] Running command: /usr/sbin/ip addr show
[master1][DEBUG ] IP addresses found: [u'172.21.0.1', u'172.20.0.1', u'172.18.0.1', u'172.19.0.1', u'192.168.64.150', u'172.17.0.1']
[ceph_deploy.new][DEBUG ] Resolving host master1
[ceph_deploy.new][DEBUG ] Monitor master1 at 192.168.64.150
[ceph_deploy.new][DEBUG ] Monitor initial members are ['master1']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.64.150']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...
[root@master1 ceph-install]# ls -al 
总用量 20
drwxr-xr-x   2 root root   75 10月 17 14:39 .
dr-xr-x---. 31 root root 4096 10月 17 14:39 ..
-rw-r--r--   1 root root  199 10月 17 14:39 ceph.conf
-rw-r--r--   1 root root 3021 10月 17 14:39 ceph-deploy-ceph.log
-rw-------   1 root root   73 10月 17 14:39 ceph.mon.keyring
[root@master1 ceph-install]# 

说明:

ceph.conf:集群配置文件

ceph-deploy-ceph.log:使用ceph-deploy部署的日志记录

ceph.mon.keyring:验证key文件

然后就是在所有ceph节点安装ceph软件

即在master1,master2,master3安装ceph和ceph-radosgw软件包

[root@master1 ceph-install]# yum install ceph ceph-radosgw -y
[root@master1 ceph-install]# ceph -v
ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)

注意:版本安装需要一致

方然也可以直接使用命令安装,网速好的话,可以用ceph-deploy install master1 master2 master3 命令来安装。ceph-deploy命令会自动通过公网官方的源安装(网速不给力就不要用这种)

在ceph客户端安装ceph-common软件

这里的客户端就是即将使用ceph这个集群的节点,即我们的owncloud节点

创建mon监控组件

创建配置文件目录,并创建一个配置文件,并手动创建一个集群的UUID,再增加监控网络,网段为试验集群的物理网络。

[root@master1 ceph-install]# touch /etc/ceph/ceph.conf
[root@master1 ceph-install]# uuidgen 
1c983db6-36a6-48a8-82b3-e9c32d10c27b
[root@master1 ceph-install]# cat /etc/ceph/ceph.conf 
[global]
fsid = 1c983db6-36a6-48a8-82b3-e9c32d10c27b     # 生成的UUID号
mon initial members = master1              # 主机名
mon host = 192.168.64.150                             # 对应的IP
public network = 192.168.64.0/24         
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
[root@master1 ceph-install]# 

监控节点master1初始化

[root@master1 ceph-install]# ceph-deploy mon create-initial

 这里由于之前在这台机器上搭建过ceph,所以报错了,此时使用命令

[root@master1 ceph-install]# ceph-deploy --overwrite-conf config push master1

然后使用ceph -s命令测试,报错如下:

 这是因为没有将配置信息同步到其他节点上,将配置文件信息同步到所有ceph集群节点

[root@master1 ceph-install]# ceph-deploy admin master2
[root@master1 ceph-install]# ceph-deploy admin master3

此时使用命令测试一下

[root@master1 ceph-install]# ceph health
HEALTH_OK
[root@master1 ceph-install]# ceph -s 
  cluster:
    id:     1d7c82b2-c526-4bf2-902b-3385629d51c8
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum master1
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
[root@master1 ceph-install]# 

创建mgr管理组件

该组件的主要作用是分担和扩展monitor的部分功能, 减轻monitor的负担,让更好地管理ceph存储系统ceph dashboard图形管理就需要用到mgr。

[root@master1 ceph-install]# ceph-deploy mgr create master1

补充:mgr也可以是多个节点,即主备模式,同一时刻只有一个mgr节点工作,其他节点处于standby状态。使用命令ceph-deploy mgr create master1 master2 master3即可。此时ceph -s 显示mgr字段应该是这样的    mgr: master1(active),standbys:master2,master3。。。

这个管理组件最明显的作用就是帮助我们管理osd,例如在添加完osd磁盘之后,装mgr和没有装mgr的区别如下图:

创建osd磁盘

Ceph OSD(Object Storage Device): 功能是存储与处理数据,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。

因为我是VMware虚拟机,添加完硬盘之后记得重启一下机器,我在master2,master3各添加了一个10G的硬盘

 加入之前先格式化一下,使用zap清理一下磁盘,zap的具体释义如下,但是如果是空闲磁盘,则无需格式化也行,像我这里是虚拟机专门为ceph添加的一块磁盘,可以不用执行zap命令,为了演示命令,还是执行一下。

[root@master1 ceph-install]# ceph-deploy disk zap master2 /dev/sdb
[root@master1 ceph-install]# ceph-deploy disk zap master3 /dev/sdb

 格式化完成之后就可以加入osd磁盘了

[root@master1 ceph-install]# ceph-deploy osd create --data /dev/sdb master2
[root@master1 ceph-install]# ceph-deploy osd create --data /dev/sdb master3

测试一下

添加其他节点到ceph集群中

其他节点只需要安装ceph和ceph-radosgw相关包,并同步相关配置信息到该加入节点,即ceph-deploy admin这个命令,最后使用ceph-deploy osd create把要加入的节点的硬盘加入进来即可。

至此,一个简单的ceph集群就搭建好了,当然,这里面还有很多的配置没有加上,有没有实现高可用,今天的主要目的就是如何使用。

对象存储搭建

ceph在最开始的时候就讲过,它有文件存储,块存储和对象存储三种方式,

 文件存储:类似一个大的目录,多个客户端都可以挂载过来使用

  • 优点: 利于数据共享
  • 缺点: 速度较慢

块存储:类似一个block设备,客户端可以格式化,挂载并使用,和用一个硬盘一样。

  • 优点: 和本地硬盘一样,直接使用
  • 缺点: 数据不共享

对象存储:看作是一个综合了文件存储和块存储优点的大硬盘,可以挂载,也可以通过URL来访问。

  • 优点: 速度快,数据共享
  • 缺点: 成本高,不兼容现有的模式

这里我们只暂且实验对象存储,其他的两种后期再学习

创建对象存储网关

rgw(对象存储网关): 为客户端访问对象存储的接口

即我们把我们ceph集群的可以使用osd硬盘作为一个接口提供给其他使用

rgw的创建非常简单,在任意的ceph集群节点上创建rgw即可,并验证一下7480端口

[root@master1 ceph-install]# ceph-deploy rgw  create master1
[root@master1 ceph-install]# lsof -i |grep 7480
radosgw   12141   ceph   39u  IPv4 212014      0t0  TCP *:7480 (LISTEN)

对象网关创建成功后,后面的项目中我们会通过master1的对象网关来连接就可以使用了。

创建owncloud应用

这里我们使用docker部署的方式

准备好docker-compose.yml和.env文件

详细介绍见官网:Installing with Docker :: ownCloud Documentation

[root@owncloud owncloud]# cat .env 
OWNCLOUD_VERSION=10.0
OWNCLOUD_DOMAIN=localhost
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=8080
[root@localhost owncloud]# cat docker-compose.yml 
version: "3"

volumes:
  files:
    driver: local
  mysql:
    driver: local
  redis:
    driver: local

services:
  owncloud:
    image: owncloud/server:${OWNCLOUD_VERSION}
    container_name: owncloud_server
    restart: always
    ports:
      - ${HTTP_PORT}:8080
    depends_on:
      - mariadb
      - redis
    environment:
      - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN}
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=owncloud
      - OWNCLOUD_DB_PASSWORD=owncloud
      - OWNCLOUD_DB_HOST=mariadb
      - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME}
      - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD}
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - files:/mnt/data

  mariadb:
    image: mariadb:10.5
    container_name: owncloud_mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=owncloud
      - MYSQL_USER=owncloud
      - MYSQL_PASSWORD=owncloud
      - MYSQL_DATABASE=owncloud
    command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - mysql:/var/lib/mysql

  redis:
    image: redis:6
    container_name: owncloud_redis
    restart: always
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - redis:/data
[root@owncloud owncloud]# 
[root@owncloud owncloud]# docker-compose up -d
[root@owncloud owncloud]# docker ps 
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                             PORTS                                       NAMES
f6ef3486939d   owncloud/server:10.0   "/usr/bin/entrypoint…"   14 seconds ago   Up 13 seconds (health: starting)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   owncloud_server
172c5cf0db76   mariadb:10.5           "docker-entrypoint.s…"   17 seconds ago   Up 14 seconds (healthy)            3306/tcp                                    owncloud_mariadb
2eb019b6be58   redis:6                "docker-entrypoint.s…"   17 seconds ago   Up 14 seconds (healthy)            6379/tcp                                    owncloud_redis
[root@owncloud owncloud]# 

 web界面输入:localhostip:8080,账号密码admin,最后界面如下

ceph对象存储对接owncloud

owncloud搭建好后,我们需要使用ceph分布式存储与其对接打造私有云盘. 我们选择ceph对象存储的原因:

  • 对象存储能实现数据共享, 可实现多人同时访问进行读写(块存储不能实现数 据共享)
  • 文件存储类型也能实现数据共享,但文件存储需要文件系统挂载
  • 对象存储比文件存储类型速度快

安装s3工具

通过s3对接

S3 (Simple Storage Service 简单存储服务): 可以把S3看作是一个超大的硬盘, 里面存放数据资源

  1. 资源包括文件,图片,视频等,这些资源统称为对象.
  2. 这些对象存放在存储段里,在S3里存储段叫做bucket.
[root@owncloud owncloud]# yum install s3cmd -y

创建连接ceph对象网关用户

[root@owncloud owncloud]# cat /root/.s3cfg 
[default]
access_key = 7523TDKY1R4BAOCUWD9A
secret_key = VZVuGP8KmMxt6Ej9NzTu67y1u0oEk7RkqJdrKKVN
host_base = 192.168.64.150:7480
host_bucket = 192.168.64.150:7480/%(bucket)
cloudfront_host = 192.168.64.150:7480
use_https = False

 说明:

access_key与secret_key的值对应上面创建用户时产生的

192.168 .64.150为ceph集群节点中mon监控的IP,有多个mon的话可以随 意写其中一个

use_https = False 代表我们使用http,不使用https,后面的web界面中ssl就不选择

创建用于owncloud的bucket

[root@owncloud owncloud]# s3cmd mb s3://owncloud
Bucket 's3://owncloud/' created
[root@owncloud owncloud]#
[root@owncloud owncloud]# s3cmd ls 
2021-10-17 09:16  s3://owncloud

注意: 多个用户连接同一个对象网关也不能创建同名的bucket, 因为一个对象存 储看作一个大硬盘, bucket就像里面的子目录,不能同名。

配置接口

接下来就可以去登录owncloud的web端进行配置

外部存储那里选择Amazon S3,然后就是配置

 我们的ceph存储就添加进来了

 我们添加一个文件

再去查看ceph集群状态,证明我们的文件已经存储到集群中 


参考文章:

Ceph 手工部署13.2版本【附源码】_酥心糖_51CTO博客

简单方便使用和管理对象存储服务-s3cmd_对象存储服务_存储服务_华为云论坛

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值