ubuntu系统中ceph rgw 、dashboard和监控 

八:对象存储网关RadosGW

  对象是对象存储系统中数据存储的基本单位,每个 Object 是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等每个对象自我维护其属性,从而简化了存储系统的管理任务,对象的大小可以不同,对象存储(Object Storage)是

无层次结构的数据存储方法,通常用于云计算环境中,不同于其他数据存储方法,基于对象的存储不使用目录树:

 

数据作为单独的对象进行存储
数据并不放置在目录层次结构中,而是存在于平面地址空间内的同一级别
应用通过唯一地址来识别每个单独的数据对象
每个对象可包含有助于检索的元数据
专为使用 API 在应用级别(而非用户级别)进行访问而设计

8.1:RadosGW 对象存储简介:

RadosGW 是对象存储(OSS,Object Storage Service)的一种实现方式,RADOS 网关也称为 Ceph对象网关、RADOSGW、RGW,是一种服务,使客户端能够利用标准对象存储 API 来访问 Ceph集群,它支持AWS S3和Swift API,rgw运行于librados之上,在ceph 0.8版本之后使用Civetweb的 web 服务器来响应 api 请求,可以使用 nginx 或或者 apache 替代,客户端基于 http/https协议通过 RESTful API 与 rgw 通信,而 rgw 则使用 librados 与 ceph 集群通信,rgw 客户端通过 s3 或者 swift api 使用 rgw 用户进行身份验证,然后 rgw 网关代表用户利用 cephx 与 ceph存储进行身份验证。

S3 由 Amazon 于 2006 年推出,全称为 Simple Storage Service,S3 定义了对象存储,是对象存储事实上的标准,从某种意义上说,S3 就是对象存储,对象存储就是 S3,它对象存储市场的霸主,后续的对象存储都是对 S3 的模仿

 

8.2:对象存储特点:

通过对象存储将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据。对象通过 Object ID 来检索,无法通过普通文件系统的方式通过文件路径及文件名称操作来直接访问对象,只能通过 API 来访问,或者第三方客户端(实际上也是对 API 的封装)。对象存储中的对象不整理到目录树中,而是存储在扁平的命名空间中,Amazon S3 将这个扁平命名空间称为 bucket,而 swift 则将其称为容器。无论是 bucket 还是容器,都不能嵌套。bucket 需要被授权才能访问到,一个帐户可以对多个 bucket 授权,而权限可以不同。方便横向扩展、快速检索数据 不支持客户端挂载,且需要客户端在访问的时候指定文件名称。不是很适用于文件过于频繁修改及删除的场景。

 

ceph 使用 bucket 作为存储桶(存储空间),实现对象数据的存储和多用户隔离,数据存储在bucket 中,用户的权限也是针对 bucket 进行授权,可以设置用户对不同的 bucket 拥有不通的权限,以实现权限管理。

 

bucket 特性:

存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间,可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。

同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。

每个用户可以拥有多个存储空间

存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。

存储空间内部的对象数目没有限制。

 

bucket 命名规范:

 

只能包括小写字母、数字和短横线(-)。
必须以小写字母或者数字开头和结尾。
长度必须在 3-63 字节之间

 

 

radosgw 架构图:

 

 

 

 

radosgw 逻辑图:

 

 

 

8.3:对象存储访问对比:

Amazon S3:提供了 user、bucket 和 object 分别表示用户、存储桶和对象,其中 bucket 隶属于 user,可以针对 user 设置不同 bucket 的名称空间的访问权限,而且不同用户允许访问相同的 bucket。

OpenStack Swift:提供了 user、container 和 object 分别对应于用户、存储桶和对象,不过它还额外为 user 提供了父级组件 account,用于表示一个项目或租户,因此一个 account 中可包含一到多个 user,它们可共享使用同一组 container,并为 container 提供名称空间。

RadosGW:提供了 user、subuser、bucket 和 object,其中的 user 对应于 S3 的 user,而 subuser则对应于 Swift 的 user,不过 user 和 subuser 都不支持为 bucket 提供名称空间,因此,不同用户的存储桶也不允许同名;不过,自 Jewel 版本起,RadosGW 引入了 tenant(租户)用于为 user 和 bucket 提供名称空间,但它是个可选组件,RadosGW 基于 ACL 为不同的用户设置

不同的权限控制,如:

 

     Read 读加执行权限
     Write 写权限
     Readwrite 只读
     full-control 全部控制权限

 

8.5:部署 RadosGW 服务:

     将 ceph-mgr1、ceph-mgr2 服务器部署为高可用的 radosGW 服务

8.5.1:安装 radosgw服务并初始化:

 

root@ceph-mgr-node1:~# apt install radosgw

root@ceph-mgr-node2:~# apt install radosgw

在 ceph deploy 服务器将 ceph-mgr1 ceph-mgr2 初始化为 radosGW 服务 加入集群:

lmttrade@ceph-deploy:~/ceph-cluster$ ceph-deploy rgw create ceph-mgr-node1

lmttrade@ceph-deploy:~/ceph-cluster$ ceph-deploy rgw create ceph-mgr-node2

 

8.5.2:验证radosgw 服务状态:

 

 

 

 

 

 

 

8.5.4:访问 radosgw 服务 

 

 

 

 

 

 

8.6:radosgw 服务配置:

8.6.1:radosgw 高可用架构

 

 

 8.6.2:自定 义 端 口 

配置文件可以在 ceph deploy 服务器修改然后统一推送,或者单独修改每个 radosgw 服务器的配置为同一配置。

在deploy节点上操作添加配置:

 

[client.rgw.ceph-mgr-node1]
rgw_host = ceph-mgr-node1
rgw_frontends = civetweb port=9900

[client.rgw.ceph-mgr-node2]
rgw_host = ceph-mgr-node2
rgw_frontends = civetweb port=9900

 

 

 

mgr1

 

 

 

mgr2

 

 

登入到 mgr1 mgr2 机器上重启服务 

root@ceph-mgr-node1:~# systemctl restart ceph-radosgw@rgw.ceph-mgr-node1.service

root@ceph-mgr-node2:~# systemctl restart ceph-radosgw@rgw.ceph-mgr-node2.service

 

 

 8.6.3:创建RGW账户:

    在deploy节点上创建用户授权

     lmttrade@ceph-deploy:~/ceph-cluster$ radosgw-admin user create --uid="user1" --display-name="magedu user1"

 

{
"user_id": "user1",
"display_name": "magedu user1",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "user1",
"access_key": "SHUUD8DRRFMCPTROC04K",
"secret_key": "Y5D1QEoUvUFT7XuhkfHmd1OY0J8cCg5SIOcacTIW"
}
],

 

 

 

 8.6.4:安装s3cmd 客户端:

s3cmd 是一个通过命令访问ceph RGW 实现创建存储同捅、上传、下载以及管理数据到对象存储的命令行客户端工具。

这里我们以 mgr2 为客户端进行测试 

1、首先 由于本地没有dns 解析我们这用 192.168.0.182 rgw.magedu.net  deloy节点和mgr2 相互指定

2、在deploy节点上用telnet rgw.magedu.net 9900 端口是否通

3、在deploy节点上安装 root@ceph-deploy:~# apt install s3cmd 

 

 8.6.4.2:配置命令执行环境:

root@ceph-deploy:~# s3cmd --configure

 

 

8.5.6.2:创建Bucket 以验证权限 :

root@ceph-deploy:~# s3cmd mb s3://magedu
Bucket 's3://magedu/' created

 

8.5.6.3:验证上传数据:

由于没有较大的文件只能找较大的log文件 做上传测试

root@ceph-deploy:~# s3cmd put /var/log/journal/e0d263c0783643268410e23a608043fa/system.journal s3://magedu/log/
upload: '/var/log/journal/e0d263c0783643268410e23a608043fa/system.journal' -> 's3://magedu/log/system.journal' [part 1 of 2, 15MB] [1 of 1]
15728640 of 15728640 100% in 4s 3.51 MB/s done
upload: '/var/log/journal/e0d263c0783643268410e23a608043fa/system.journal' -> 's3://magedu/log/system.journal' [part 2 of 2, 1024kB] [1 of 1]
1048576 of 1048576 100% in 0s 8.10 MB/s done

 

查看所存储文件:

root@ceph-deploy:~# s3cmd ls
2021-08-31 11:02 s3://magedu
root@ceph-deploy:~# s3cmd ls s3://magedu/log/
2021-08-31 11:16 16777216 s3://magedu/log/system.journal

 

 查看数据存储池:

root@ceph-deploy:~# ceph osd lspools

 

 

 

8.5.6.4:验证下载文件:

root@ceph-deploy:~# s3cmd get s3://magedu/log/system.journal /opt/
download: 's3://magedu/log/system.journal' -> '/opt/system.journal' [1 of 1]
16777216 of 16777216 100% in 0s 60.99 MB/s done

root@ceph-deploy:~# ls /opt/
2.txt my.txt system.journal

 

8.5.6.5:删除文件:

删除文件

root@ceph-deploy:~# s3cmd rm s3://magedu/log/system.journal
delete: 's3://magedu/log/system.journal'

 

验证是否被删除 空为删除

root@ceph-deploy:~# s3cmd ls s3://magedu/log/

 

九:ceph dashboard 及监控 

Ceph dashboard 是通过一个 web 界面,对已经运行的 ceph 集群进行状态查看及功能配置等功能,早期 ceph 使用的是第三方的 dashboard 组件,如:

Calamari:

    Calamari 对外提供了十分漂亮的 Web 管理和监控界面,以及一套改进的 REST API 接口(不同于 Ceph 自身的 REST API),在一定程度上简化了 Ceph 的管理。最初 Calamari 是作为 Inktank公司的 Ceph 企业级商业产品来销售,红帽 2015 年收购 Inktank 后为了更好地推动 Ceph 的发展,对外宣布 Calamari 开源

优点:
管理功能好
界面友好
可以利用它来部署 Ceph 和监控 Ceph

缺点:
非官方
依赖 OpenStack 某些包

 

VSM:

  Virtual Storage Manager (VSM)是 Intel 公司研发并且开源的一款 Ceph 集群管理和监控软件,简化了一些 Ceph 集群部署的一些步骤,可以简单的通过 WEB 页面来操作。

 

优点:
易部署
轻量级
灵活(可以自定义开发功能)


缺点:
监控选项少
缺乏 Ceph 管理功能

 

Inkscope:

 Inkscope 是一个 Ceph 的管理和监控系统,依赖于 Ceph 提供的 API,使用 MongoDB 来存储实时的监控数据和历史信息。

 

优点:
易部署
轻量级
灵活(可以自定义开发功能)


缺点:
监控选项少
缺乏 Ceph 管理功能

 

 

 

 

Ceph-Dash:

Ceph-Dash 是用 Python 开发的一个 Ceph 的监控面板,用来监控 Ceph 的运行状态。同时提供 REST API 来访问状态数据。

优点:
易部署
轻量级
灵活(可以自定义开发功能)


缺点:
功能相对简单

 

 

 

9.1:启用 dashboard 插件:

  Ceph mgr 是一个多插件(模块化)的组件,其组件可以单独的启用或关闭,以下为在ceph-deploy 服务器操作:

新版本需要安装 dashboard 安保,而且必须安装在 mgr 节点,否则报错如下: 

root@ceph-mgr-node1:~# apt install ceph-mgr-dashboard -y

列出所有模块:

root@ceph-deploy:~# ceph mgr module ls

查看dashboard模块:

root@ceph-deploy:~# ceph mgr module ls | grep dash

config_dashboard": {
"name": "config_dashboard",
"name": "dashboard",
"default_value": "osd,host,dashboard,pool,block,nfs,ceph,monitors,gateway,logs,crush,maps",

 

 

9.1.2:启用 dashboard模块

root@ceph-deploy:~# ceph mgr module enable dashboard

Ceph dashboard 在 mgr 节点进行开启设置,并且可以配置开启或者关闭 SSL,如下:

关闭 SSL

root@ceph-deploy:~# ceph config set mgr mgr/dashboard/ssl false

指定 dashboard 监听地址和端口:

 

root@ceph-deploy:~# ceph config set mgr mgr/dashboard/ceph-mgr-node1/server_addr 192.168.0.181
root@ceph-deploy:~# ceph config set mgr mgr/dashboard/ceph-mgr-node1/server_port 9009

登入到 mgr1  指定哪台 mgr 就在哪台上重启一下 mgr

root@ceph-mgr-node1:~# systemctl restart ceph-mgr@ceph-mgr-node1.service

9.1.4:dashboard 访问 验 证

1、首先创建一个文件用来存放密码

root@ceph-deploy:~# touch pass.txt

2、文件里写入密码

root@ceph-deploy:~# echo "12345678" > pass.txt

3、创建用户并指定密码 用户名为 jack

root@ceph-deploy:~# ceph dashboard set-login-credentials jack -i pass.txt
******************************************************************
*** WARNING: this command is deprecated. ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated

 

登入web 界面:

 

 

 

 

 

9.2:通过 prometheus 监控 ceph node 节点:

在mgr2 上面部署 

root@ceph-mgr-node2:~# mkdir /apps
root@ceph-mgr-node2:~# cd /apps/

root@ceph-mgr-node2:/apps# tar xf prometheus-2.23.0.linux-amd64.tar.gz

root@ceph-mgr-node2:~# ln -sv /apps/prometheus-2.23.0.linux-amd64 /apps/prometheus
'/apps/prometheus' -> '/apps/prometheus-2.23.0.linux-amd64'

编译启动脚本

root@ceph-mgr-node2:~# cat /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/apps/prometheus/
ExecStart=/apps/prometheus/prometheus --config.file=/apps/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target

 

root@ceph-mgr-node2:~# systemctl daemon-reload
root@ceph-mgr-node2:~# systemctl restart prometheus
root@ceph-mgr-node2:~# systemctl enable prometheus
Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /etc/systemd/system/prometheus.service.
root@ceph-mgr-node2:~# systemctl enable prometheus
root@ceph-mgr-node2:~# systemctl status prometheus

 

 

 

 上传 node-export 到osd 机器上

root@ceph-osd-node1:~# mkdir /apps/

root@ceph-osd-node2:~# mkdir /apps/

root@ceph-osd-node3:~# mkdir /apps/

root@ceph-osd-node4:~# mkdir /apps/

root@ceph-osd-node1:/apps# tar xf node_exporter-1.0.1.linux-amd64.tar.gz 

root@ceph-osd-node2:/apps# tar xf node_exporter-1.0.1.linux-amd64.tar.gz 

root@ceph-osd-node3:/apps# tar xf node_exporter-1.0.1.linux-amd64.tar.gz 

root@ceph-osd-node4:/apps# tar xf node_exporter-1.0.1.linux-amd64.tar.gz 

root@ceph-osd-node1:/apps# ln -sv /apps/node_exporter-1.0.1.linux-amd64 /apps/node_exporter

root@ceph-osd-node2:/apps# ln -sv /apps/node_exporter-1.0.1.linux-amd64 /apps/node_exporter

root@ceph-osd-node3:/apps# ln -sv /apps/node_exporter-1.0.1.linux-amd64 /apps/node_exporter

root@ceph-osd-node4:/apps# ln -sv /apps/node_exporter-1.0.1.linux-amd64 /apps/node_exporter

启动脚本:

root@ceph-osd-node1:/apps# cat /etc/systemd/system/node-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/apps/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target

 

root@ceph-osd-node1:/apps# systemctl daemon-reload
root@ceph-osd-node1:/apps# systemctl restart node-exporter
root@ceph-osd-node1:/apps# systemctl enable node-exporter
Created symlink /etc/systemd/system/multi-user.target.wants/node-exporter.service → /etc/systemd/system/node-exporter.service.
root@ceph-osd-node1:/apps# systemctl enable node-exporter
root@ceph-osd-node1:/apps# systemctl status node-exporter

 

 

 

 

 

 9.3.3:配置 prometheus 采集 数 据

 

 

 

 root@ceph-mgr-node2:~# systemctl restart prometheus

 

 

 

9.3:通过 prometheus 监控 ceph 服务:

Ceph manager 内部的模块中包含了 prometheus 的监控模块,并监听在每个 manager 节点的9283 端口,该端口用于将采集到的信息通过 http 接口向 prometheus 提供数据。

 

9.3.1:启用 prometheus 监控 模 块

在deploy 节点上启动模板

root@ceph-deploy:~# ceph mgr module enable prometheus

在mgr 机器上查看9283端口 是否启动监听成功 成功了 可以直接访问

 

 

 

 

 

 

 

 

 

root@ceph-mgr-node2:~# systemctl restart prometheus
root@ceph-mgr-node2:~# systemctl status prometheus

 

 

 

 

 

9.4:通过 grafana 显示监控数据:

通过 granfana 显示对 ceph 的集群监控数据及 node 数据

 

9.4.1:安装 grafana:

root@ceph-deploy:/usr/local/src# apt-get install -y adduser libfontconfig1

root@ceph-deploy:/usr/local/src# wget https://dl.grafana.com/enterprise/release/grafana-enterprise_8.1.2_amd64.deb

root@ceph-deploy:/usr/local/src# sudo dpkg -i grafana-enterprise_8.1.2_amd64.deb

root@ceph-deploy:/usr/local/src# systemctl restart grafana-server.service

 

9.4.2:登录 grafana: 

 

 

 

 

配置数据源:

 

 

 

 

9.4.4:导模板 导入2842 模板

 

 

 

 

导入5342 存储池的监控模板:

 

 

 

 

以上就是暂时ceph 内容

 

posted @ 2021-08-31 00:33  南非酋长  阅读(248)  评论(1)    收藏  举报