rgw前端替换civetweb为beast

前言

ceph的rgw现在提供了两种前端, civetweb和beast

配置

修改配置文件

1
rgw_frontends = civetweb port=7481

1
rgw frontends = beast  port=7481

然后重启rgw进程,查看日志

1
2
3
4
5
6
7
8
9
2020-09-11 10:23:52.117738 7f90b45f8000  0 ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable), process radosgw, pid 235781
2020-09-11 10:23:52.204891 7f90b45f8000 -1 *** experimental feature 'rgw-beast-frontend' is not enabled ***
This feature is marked as experimental, which means it
- is untested
- is unsupported
- may corrupt your data
- may break your cluster is an unrecoverable fashion
To enable this feature, add this to your ceph.conf:
enable experimental unrecoverable data corrupting features = rgw-beast-frontend

这个在 ceph version 12.2.13还是这个提示,后面的版本里面就没这个了

增加配置文件

enable experimental unrecoverable data corrupting features = rgw-beast-frontend
到global里面

在这个https://github.com/ceph/ceph/pull/21272/commits/f1e826ad7f074195b87b7bbd37fcb74d4ca626cb提交之后去掉实验性质的

1
master (#21272)  v16.0.0  v15.2.4 v15.2.3 v15.2.2 v15.2.1 v15.2.0 v15.1.1 v15.1.0 v15.0.0 v14.2.11 v14.2.10 v14.2.9 v14.2.8 v14.2.7 v14.2.6 v14.2.5 v14.2.4 v14.2.3 v14.2.2 v14.2.1 v14.2.0 v14.1.1 v14.1.0 v14.0.1 v14.0.0 v13.2.10 v13.2.9 v13.2.8 v13.2.7 v13.2.6 v13.2.5 v13.2.4 v13.2.3 v13.2.2 v13.2.1 v13.2.0 v13.1.1 v13.1.0

在这些版本里面去掉了这个标记的

重启rgw进程

再次查看日志

1
2
3
2020-09-11 10:35:18.189630 7fe5891bf000  0 starting handler: beast
2020-09-11 10:35:18.192804 7fe5891bf000 0 set uid:gid to 167:167 (ceph:ceph)
2020-09-11 10:35:18.205123 7fe5891bf000 1 mgrc service_daemon_register rgw.radosgw1 metadata {arch=x86_64,ceph_version=ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable),cpu=Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz,distro=centos,distro_description=CentOS Linux 7 (Core),distro_version=7,frontend_config#0=beast port=7481,frontend_type#0=beast,hostname=lab201,kernel_description=#1 SMP Thu Nov 8 23:39:32 UTC 2018,kernel_version=3.10.0-957.el7.x86_64,mem_swap_kb=0,mem_total_kb=3861512,num_handles=1,os=Linux,pid=236518,zone_id=80576aa5-448e-470d-aee4-ac8662d35e62,zone_name=default,zonegroup_id=5eced993-d226-4e15-9a4f-5362a3da3c19,zonegroup_name=default}

没有问题了,然后直接访问即可

待确认问题

  • 性能的变化
  • 稳定性的变化
  • 资源占用的变化

使用前需要看下是不是有这个问题(周期性的崩溃)

1
https://tracker.ceph.com/issues/39660

已经解决了的问题

1
2
https://github.com/ceph/ceph/pull/30746
https://github.com/ceph/ceph/pull/30746/files

这个问题应该是14.2.4这个版本还存在,14.2.5以及之后的版本就解决这个崩溃的问题

beast增加参数来控制并发请求的

1
rgw max concurrent requests

默认1024,最开始出来的适合8192后面调整了,这个可以控制一下高负债下的内存占用,相当于qos的作用
civetweb是通过前端的线程来控制的

1
max_connection_backlog

这个参数也是后面增加来控制连接数的,12的版本还没有这个功能

luminous版本

从测试来看,ab压3000的连接的时候,开始通过rgw上面的ss查询连接数目稳定在500作用,过一会就增加了,然后到1000左右就崩掉了,这个应该跟beast使用的boost库有关系,上面提到了后面的版本增加了参数的配置,默认的就是boost自己自带的参数的

变更记录

Why Who When
创建 武汉-运维-磨渣 2020-09-11