[Backgroundrb-devel] Question about acls
Stephen Weiss
sweiss at stylesight.com
Mon Dec 4 14:35:14 EST 2006
Hi,
I'm not much of a developer but I've been using backgroundrb for a
while now and with the release of 0.2.1 it looks like I can finally
upgrade from the old version (0.2.0 had some weird issues when jobs
just wouldn't run, seems to have cleared up now - Thanks!).
Anyhow, while I'm doing this, I would like to tackle this problem.
Most tasks I run in the background involve image processing so
they're rather processor-intensive, and it's not very good to have
them running on the same machine that's running rails - it slows
things down a lot. I would like to keep running rails on my main
server (server1) but move backgroundrb to a secondary server (server2).
I looked through the source trying to figure out how to do this and I
pieced together this configuration file:
--
:port: 22222
:timer_sleep: 60
:pool_size: 15
:load_rails: true
:rails_env: development
:environment: development
:host: localhost
:uri: druby://localhost:22222/
:database_yml: config/database.yml
:protocol: druby
:acl:
:deny: all
:allow: localhost 127.0.0.1 server1
:order: deny,allow
autostart:
1:
job_key: chat_notifier
class: chat_notification_worker
Which runs on server2. (I know, some of the options probably don't
belong there but when it's set up on a standalone server it works,
so...)
I'm using the druby protocol, which I'm pretty sure works over TCP
instead of UDP, which seems to be what I want.
This all runs fine, except that it seems like my acl is completely
ignored or maybe it's just not written properly. If I try to connect
just using telnet to test whether or not the port is open, I can
connect to the IPv6 localhost (::1) port 22222 from server2 just
fine. However, I can't connect to IPv4 localhost (127.0.0.1) port
22222 from server2, and I definitely can't connect to server2 port
22222 from server1.
I can run `script/backgroundrb console` OK from server2 as long
as :uri is set to "druby://localhost:22222/" and :host is set to
"localhost". If I set :host to "server2" then backgroundrb runs, but
the console fails with:
/usr/local/lib/ruby/1.8/drb/drb.rb:736:in `open': druby://localhost:
22222 - #<Errno::ECONNREFUSED: Connection refused - connect(2)>
(DRb::DRbConnError)
from /usr/local/lib/ruby/1.8/drb/drb.rb:729:in `each'
from /usr/local/lib/ruby/1.8/drb/drb.rb:729:in `open'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1189:in `initialize'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1169:in `new'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1169:in `open'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1085:in
`method_missing'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1103:in `with_friend'
from /usr/local/lib/ruby/1.8/drb/drb.rb:1084:in
`method_missing'
... 8 levels...
from /web/trunk/vendor/plugins/backgroundrb/server/lib/
backgroundrb/console.rb:9:in `backgroundrb_console_start'
from /web/trunk/vendor/plugins/backgroundrb/server/lib/
backgroundrb/console.rb:39:in `init'
from /web/trunk/vendor/plugins/backgroundrb/server/lib/
backgroundrb_server.rb:296:in `run'
from script/backgroundrb:29
I thought maybe since it was pointing to localhost, and Mac OS X
(this is running on OS X Server 10.4, both machines) has ::1 set up
as the first resolved address for localhost, maybe backgroundrb was
being confused into going only over IPv6, but using the IPv4 address
completely doesn't work? I've tried various combinations of
localhost, server2, and server2's ip address in both the :host
and :uri options with no success, unless both point to localhost, and
no matter what I do, I can only connect via IPv6 localhost, despite
the fact that my ACL allows connections from 127.0.0.1 and from
server1 as well. Setting the acl to :allow => "all" did not change a
thing.
I know next to nothing about drb so if I'm missing something
blatantly obvious I apologize. Would really like to get this set up
soon, even a cheap hack that'll work for the next week or so would be
a godsend. TIA for any help!
--
Steve
More information about the Backgroundrb-devel
mailing list