写点什么

运维训练营第十一课作业

作者:好吃不贵
  • 2023-01-07
    浙江
  • 本文字数:1724 字

    阅读完需:约 6 分钟

1.掌握对象存储的特点及使用场景

通常存储分为对象存储,文件存储和块存储。对象存储可以通过用户的权限,加上黑白名单,来对访问进行限制。

  1. 块存储最简单,启用挂载,就可以给外部使用了。缺点是只能给一个服务器挂载。

  2. 文件存储走 cephFS,谁使用,谁挂载即可。可以给多个服务器同时使用。

  3. 对象存储适合不经常变化的数据,比如视频、照片等数据。通过 URL,以及 key 就可以访问了,不需要额外的挂载了。缺点是不适合频繁修改的数据。

对象存储由 gateway 来管理。对象存储 RGW 提供的是 REST 风格的 API 接口,客户端通过 http 与其进行交互,完成数据的增删改查等管理操作。radosgw 用在需要使用 RESTful API 接口访问 ceph 数据的场合,因此在使用 RBD 即块存储的场合,或者使用 cephFS 的场合,可以不启用 radosgw 功能。

亚马逊的 s3(simple storage service,简单存储服务)是对象存储的鼻祖。

2.在两台主机部署 radowsgw 存储网关以实现高可用环境

脚本见:https://github.com/jianywu/cloud_learn/blob/main/ceph/ceph_install/14_mds.sh

rgw 的配置写在/etc/ceph/ceph.conf 里。

3.基于 s3cmd 实现 bucket 的管理及数据的上传和下载

脚本见:https://github.com/jianywu/cloud_learn/blob/main/ceph/ceph_install/16_ceph_crush.sh

创建 s3cmd 的存储地址:

s3cmd mb s3://magedu

服务器地址变了,也可以修改 cfg,把后端指向新的就可以了。

推荐写域名,而不是 IP。

vi ~/.s3cfg 修改配置文件。

内容是:

把 host_base 和 host_bucket 修改为 rgw.magedu.net:80 的地址即可。然后修改/etc/hosts,把 rgw.magedu.net 解析为本机的 IP 地址。

上传和下载的测试:

完全删除这个 pool 里的内容:

再删除整个库。

注意需要先保证里面是空的,再执行 rb 命令。

这里写 ACL 为 FULL_CONTROL,表示把 key 给开发,开发就已经有最大权限了。

如果不配置访问的 policy,会出现 AccessDenied 的错误。

配置 policy:

{

"Version": "2012-10-17",

"Statement":[

{

"Effect":"Allow",

"Principal":"*",

"Action":"s3:GetObject",

"Resource":"arn:aws:s3:::images/*"

}

]

}

注意最后一个没有逗号。Resources 一般按 bucket 来授权,前面 arn:aws:s3 是固定的,images 是其中一个 bucket。

s3cmd setpolicy image-single_policy s3://images

配置后,就可以访问了,不会出现 access denied 的错误了。

4.基于 Nginx+RGW 的动静分离及短视频案例

脚本见:https://github.com/jianywu/cloud_learn/tree/main/ceph/rgw_nginx

流程是:

  1. 用户,比如使用 Java app 的用户先通过 dns 把域名转为 nginx 的服务器 IP 地址。

  2. nginx 会转到 RGW 服务器。其中 nginx 也可以用 haproxy 代替,作为动静分离的后端入口。

  3. 用户就可以在 RGW 上访问到静态的图片或者短视频数据了。

配置 upstream 和 server 在 http 里即可。

其中 upstream 的 server 是用在后续的 server 里的。

vi /etc/nginx/nginx.conf

nginx -s reload

systemctl restart nginx

修改配置之后,重新加载,启动 nginx 即可。

nginx 可以识别 URI 的后缀,这里会判断,如果是 mp4 或者 avi,就转到 http://videos 里去处理。

也可以通过 nginx 转发到 rgw 的服务器。

nginx 转发到 tomcat 服务器的例子。

搭建 tomcat 服务器:

先在 webapps/app1/index.jsp 里写"java app1"。

通过 bin/catalina.sh run 就可以把 tomcat 服务器运行起来了。

直接访问 tomcat 服务器:

通过 nginx 访问 tomcat 服务器:

这样就实现了动静分离。

静态的是网址 URI 带/app1 的,访问 114.115.221.236 服务器。

动态的是网址 URI 带 mp4,或 avi 的,访问 114.115.144.163:9900 的 rgw 服务器。

如果遇到 nginx 没有转发的情况,可以看错误日志和访问日志。/var/log/nginx/error.log 和/var/log/nginx/access.log。通常可以知道原因,比如目录不存在等错误。

5.启用 ceph dashboard 并基于 prometheus 监控 ceph 集群运行状态

脚本见:https://github.com/jianywu/cloud_learn/tree/main/ceph/ceph_dashboard

ceph dash board:

配置好 ceph mgr 之后,就可以看到 dashboard 了。

登录网页后,可以看到 ceph 的情况。

搭建 Prometheus。

导出后,会显示 ceph-exporter。

安装好 node-exporter 后,就可以通过 Prometheus 看到 ceph-node-data 了。

装 grafana,然后导入模板。在网页https://grafana.com/grafana/dashboards/?plcmt=footer可以搜索模板,数字越大的越新。

OSD 的显示:

POOL 的显示:


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
运维训练营第十一课作业_好吃不贵_InfoQ写作社区