共计 2836 个字符,预计需要花费 8 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下如何实现单机部署多 CEPH-RGW,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1.nginx Radosgw 联合使用
Ceph 官网说明了如何使用 Apache 作为前端 Web 服务器,后官方又退出 Civetweb 作为自带的 web 服务器。不过考虑实际并发性能,我们采用 Nginx 作为前端 web 服务器,和 radosgw 联合使用。
1.1 nginx 配置
server {
listen 80 default;
#server_name .com .com.cn .net .cn .org .tv .cc .hk .tw;
server_name ceph-21;
location / {
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_LENGTH $content_length;
if ($request_method = PUT) {
rewrite ^ /PUT$request_uri;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway1.sock;
}
location /PUT/ {
internal;
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway1.sock;
}
}
这边需要详细注意的是 fastcgi_pass 参数,注意配置 gateway.sock。在参数需要和 ceph.conf 一一对应。在下文中的 rgw 配置中,rgw_socket_path 需要与 nginx fastcgi_pass 一致,从而可以使得两个进程基于 fastcgi 进行通信。
1.2 Ceph rgw 配置方法
[client.radosgw.gateway1]
host = ceph-21
rgw frontends = fastcgi
log file = /var/log/radosgw/client.radosgw.gateway1.log
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw_socket_path = /var/run/ceph/ceph.radosgw.gateway1.sock
秦牧羊的博客,详细说明了配置方法
2 单机多 radosgw 配置 2.1 nginx 负载均衡设计
Nginx0 采用 upstream 进行负载均衡
upstream nginx-upstream-rgw{
#ip_hash;
server 10.71.21.31:81;
server 10.71.21.31:82;
server 10.71.21.31:83;
server 10.71.21.31:84;
server 10.71.21.31:85;
}
server {
listen 80 default;
server_name demo.ceph.work;
location / {
proxy_pass http://nginx-upstream-rgw;
}
}
负载均衡参考文档
每个 Nginx 对应一个 rgw,对应的配置方法参考章节 1。
3 启动各进程 3.1 启动 nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx1.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx2.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx3.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx4.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx5.conf
3.2 启动 radosgw
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway1
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway2
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway3
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway4
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway5
4. 结果测试
我对上述结构进行了测试,libs3 的 read, write, list 等操作可以正常访问,后续进一步测试并发能力。在相同配置下,原来单 RGW 测试 500K 并发是 200;现在采用 10 个实例,现在并发 2000. 还是要增强单 rgw 的并发能力。搞这个多实例也不是个事~~~
在该种模式下,RGW 会表现出不稳定的情况,主要体现在当压力过载时,即便停止压力测试,一段时间后再访问,NGINX 会爆大量的 502 错误。我会进一步跟进这个错误。
以上是“如何实现单机部署多 CEPH-RGW”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!