I'm trying to figure out what's wrong with my radosgw setup. I am getting HTTP 400 responses when running some basic stat/upload tests, which work fine when using openstack (folsom) swift. Additionally, I get HTTP 400 responses when trying to use the openstack (folsom) dashboard to list or create containers. I'm using the ceph-modified mod_fastcgi, and apache 2.2.23 with the worker mpm. Here is a snip of the log which starts after I start apache and radosgw: Mar 4 16:32:48 node-172-17-0-13 fcgi-pm[28606]: [notice] FastCGI: process manager initialized (pid 28606) Mar 4 16:32:48 node-172-17-0-13 apache2[28605]: [notice] Apache/2.2.23 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141 configured -- resuming normal operations Mar 4 16:32:48 node-172-17-0-13 apache2[28605]: [info] Server built: Mar 2 2013 21:17:00 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.788234 7fd895016780 0 ceph version 0.56.3 (6eb7e15a4783b122e9b0c85ea9ba064145958aa5), process radosgw, pid 28746 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.788382 7fd895016780 0 ext_mime_map_init(): failed to open file=/etc/mime.types ret=-2 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.791035 7fd87f7fe700 2 garbage collection: start Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.811325 7fd87ebf9700 2 keystone revoke thread: start Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.811377 7fd87ebf9700 20 sending request to http://172.17.2.3:35357/v2.0/tokens/revoked Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.812816 7fd895016780 10 allocated request req=0x7fd8968df5f0 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.824017 7fd87ebf9700 10 request returned {"signed": "-----BEGIN CMS-----\nMIIBQwYJKoZIhvcNAQcCoIIBNDCCATACAQExCTAHBgUrDgMCGjAeBgkqhkiG9w0B\nBwGgEQQPeyJyZXZva2VkIjogW119MYH/MIH8AgEBMFwwVzELMAkGA1UEBhMCVVMx\nDjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQx\nGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0B\nAQEFAASBgC7gYTOTf9SQEZKrk82UJVUUnPHyecpEI2kHb3IZ3iTmnm/IVHMAlNs7\n9Kmz6S9z0jFDWMqHxlnLAVuqzjGJMZFChuDTe4f/lRnHqd3I/ZlckVmAUw0ECAX5\nDmsQ+uziQYqHOiUGxeV0rwOu+x+khrxlbPv9x+2GcnIuEkG11ytr\n-----END CMS-----\n"} Mar 4 16:32:53 node-172-17-0-13 keystone: wsgi DEBUG 172.17.2.3 - - [04/Mar/2013 16:32:53] "GET /v2.0/tokens/revoked HTTP/1.1" 200 633 0.011981 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: add_child: <- signed Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.824115 7fd87ebf9700 10 signed=-----BEGIN CMS----- Mar 4 16:32:53 node-172-17-0-13 radosgw.log: MIIBQwYJKoZIhvcNAQcCoIIBNDCCATACAQExCTAHBgUrDgMCGjAeBgkqhkiG9w0B Mar 4 16:32:53 node-172-17-0-13 radosgw.log: BwGgEQQPeyJyZXZva2VkIjogW119MYH/MIH8AgEBMFwwVzELMAkGA1UEBhMCVVMx Mar 4 16:32:53 node-172-17-0-13 radosgw.log: DjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQx Mar 4 16:32:53 node-172-17-0-13 radosgw.log: GDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0B Mar 4 16:32:53 node-172-17-0-13 radosgw.log: AQEFAASBgC7gYTOTf9SQEZKrk82UJVUUnPHyecpEI2kHb3IZ3iTmnm/IVHMAlNs7 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 9Kmz6S9z0jFDWMqHxlnLAVuqzjGJMZFChuDTe4f/lRnHqd3I/ZlckVmAUw0ECAX5 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: DmsQ+uziQYqHOiUGxeV0rwOu+x+khrxlbPv9x+2GcnIuEkG11ytr Mar 4 16:32:53 node-172-17-0-13 radosgw.log: -----END CMS----- Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.824124 7fd87ebf9700 10 content=MIIBQwYJKoZIhvcNAQcCoIIBNDCCATACAQExCTAHBgUrDgMCGjAeBgkqhkiG9w0BBwGgEQQPeyJyZXZva2VkIjogW119MYH/MIH8AgEBMFwwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQxGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0BAQEFAASBgC7gYTOTf9SQEZKrk82UJVUUnPHyecpEI2kHb3IZ3iTmnm/IVHMAlNs79Kmz6S9z0jFDWMqHxlnLAVuqzjGJMZFChuDTe4f/lRnHqd3I/ZlckVmAUw0ECAX5DmsQ+uziQYqHOiUGxeV0rwOu+x+khrxlbPv9x+2GcnIuEkG11ytr Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.824132 7fd87ebf9700 0 ceph_decode_cms returned -95 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.824138 7fd87ebf9700 0 ERROR: keystone revocation processing returned error r=-95 Mar 4 16:32:53 node-172-17-0-13 radosgw.log: 2013-03-04 16:32:53.906447 7fd87f7fe700 2 garbage collection: stop Mar 4 16:33:46 node-172-17-0-13 keystone: wsgi DEBUG 10.1.10.12 - - [04/Mar/2013 16:33:46] "POST /v2.0/tokens HTTP/1.1" 200 2711 0.084738 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891625 7fd895016780 20 enqueued request req=0x7fd8968df5f0 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891641 7fd895016780 20 RGWWQ: Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891643 7fd895016780 20 req: 0x7fd8968df5f0 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891646 7fd895016780 10 allocated request req=0x7fd8968e4a50 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891700 7fd8237be700 20 dequeued request req=0x7fd8968df5f0 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891709 7fd8237be700 20 RGWWQ: empty Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891716 7fd8237be700 1 ====== starting new request req=0x7fd8968df5f0 ===== Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891751 7fd8237be700 2 req 1:0.000035::::initializing Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891786 7fd8237be700 10 s->object=AUTH_2c5cfd34f2af41919847c0f4e0a28e04 s->bucket=v1 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891812 7fd8237be700 2 req 1:0.000096::HEAD /v1/AUTH_2c5cfd34f2af41919847c0f4e0a28e04::http status=400 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.891877 7fd8237be700 1 ====== req done req=0x7fd8968df5f0 http_status=400 ====== Mar 4 16:33:46 node-172-17-0-13 keystone: wsgi DEBUG 10.1.10.12 - - [04/Mar/2013 16:33:46] "POST /v2.0/tokens HTTP/1.1" 200 2711 0.078482 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978717 7fd895016780 20 enqueued request req=0x7fd8968e4a50 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978726 7fd895016780 20 RGWWQ: Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978727 7fd895016780 20 req: 0x7fd8968e4a50 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978730 7fd895016780 10 allocated request req=0x7fd8968e4e80 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978763 7fd8387e8700 20 dequeued request req=0x7fd8968e4a50 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978769 7fd8387e8700 20 RGWWQ: empty Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978773 7fd8387e8700 1 ====== starting new request req=0x7fd8968e4a50 ===== Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978800 7fd8387e8700 2 req 2:0.000028::::initializing Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978826 7fd8387e8700 10 s->object=AUTH_2c5cfd34f2af41919847c0f4e0a28e04/container-33771340493 s->bucket=v1 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978843 7fd8387e8700 2 req 2:0.000071::PUT /v1/AUTH_2c5cfd34f2af41919847c0f4e0a28e04/container-33771340493::http status=400 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.978880 7fd8387e8700 1 ====== req done req=0x7fd8968e4a50 http_status=400 ====== Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982832 7fd895016780 20 enqueued request req=0x7fd8968e4e80 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982839 7fd895016780 20 RGWWQ: Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982841 7fd895016780 20 req: 0x7fd8968e4e80 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982844 7fd895016780 10 allocated request req=0x7fd8968e22c0 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982881 7fd81cfb1700 20 dequeued request req=0x7fd8968e4e80 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982891 7fd81cfb1700 20 RGWWQ: empty Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982894 7fd81cfb1700 1 ====== starting new request req=0x7fd8968e4e80 ===== Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982923 7fd81cfb1700 2 req 3:0.000029::::initializing Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982941 7fd81cfb1700 10 s->object=AUTH_2c5cfd34f2af41919847c0f4e0a28e04/container-33771340493/file-43854197694 s->bucket=v1 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982960 7fd81cfb1700 2 req 3:0.000066::PUT /v1/AUTH_2c5cfd34f2af41919847c0f4e0a28e04/container-33771340493/file-43854197694::http status=400 Mar 4 16:33:46 node-172-17-0-13 radosgw.log: 2013-03-04 16:33:46.982995 7fd81cfb1700 1 ====== req done req=0x7fd8968e4e80 http_status=400 ====== Radosgw is started via upstart using this command: setuidgid apache radosgw -n client.radosgw.gateway -f -d Here is the relevant addition to ceph.conf: [client.radosgw.gateway] rgw socket path = /var/run/radosgw/radosgw.sock rgw keystone url = http://172.17.2.3:35357 rgw keystone admin token = vEPetvbcJl5V Here is the apache config: # Defaults. ServerRoot /usr/lib64/apache2 PidFile /var/run/apache/apache.pid HostnameLookups Off # This shouldn't need to be anything valid, if we get redirects here then there # is an error in our config, as we shouldn't be sending redirects with a # different hostname than was provided by the client ServerName localhost ServerSignature Off ServerTokens ProductOnly Timeout 60 KeepAlive On KeepAliveTimeout 5 StartServers 2 ServerLimit 2 ThreadsPerChild 64 MinSpareThreads 128 MaxSpareThreads 128 # For worker MPM, set MaxClients = ServerLimit * ThreadsPerChild MaxClients 128 MaxRequestsPerChild 10000 ErrorLog syslog:daemon TraceEnable Off LoadModule authz_host_module modules/mod_authz_host.so LoadModule rewrite_module modules/mod_rewrite.so DocumentRoot /var/www/empty LogLevel info <Directory /> Options None AllowOverride None Order deny,allow Deny from all </Directory> # Rados gateway. Listen 8888 LoadModule fastcgi_module modules/mod_fastcgi.so FastCgiIpcDir /var/run/fastcgi # Note: The fcgi file here doesn't have to exist since we start the application # externally, but the directory structure should or apache will complain about # the document root not existing. FastCgiExternalServer /var/www/empty/radosgw.fcgi -socket /var/run/radosgw/radosgw.sock <Directory /var/www/empty> Options +ExecCGI SetHandler fastcgi-script Order allow,deny Allow from all </Directory> <VirtualHost *:8888> RewriteEngine On #RewriteRule ^(.*) /radosgw.fcgi/$1 RewriteRule ^/([a-zA-Z0-9-_.]*)([/]?.*) /radosgw.fcgi?page=$1¶ms=$2&%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] #RewriteRule ^/(.*) /radosgw.fcgi?params=$1&%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] AllowEncodedSlashes On </VirtualHost> I've tried all the rewrite rules above. We would like to support both the swift and s3 APIs on this service, using separate ports if we have to. _______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com