Hi everyone,

Getting multi-master to work has only gone so far.

I can set up a database and have masters talk to it just fine. And the masters can mostly function correctly. I'm using mostly master.cfg.sample instead of our own because I want something smaller. I have 2 masters that are mostly the same except for various names, and only 1 is running a UI.

I don't seem to be able to have them talk to crossbar. And there's not many log messages giving me a clue as to what's going on. I suspect my crossbar configuration. But the default configuration with a changed realm and port doesn't seem to work, either.

My first attempt had this:
c['mq'] = {
    'type' : 'wamp',
    'router_url': 'ws://ws/buildbot',
    'realm': 'buildbot',
    'debug' : True,
    'debug_websockets' : True,
    'debug_lowlevel' : True,
}

Obviously incorrect, as there's no host:port in there. Using my handwritten config.json on the crossbar side, here's what happens. Crossbar starts, and since I'm not putting the log in a file, I can see it on my terminal, and it looks fine enough. Then I start buildbot, and the only entries I see that might be relevant are: 2016-09-02 12:34:50-0400 [-] Starting wamp with config: %r {'realm': 'buildbot', 'debug_lowlevel': True, 'router_url': 'ws://ws/buildbot', 'debug': True, 'debug_websockets': True, 'type': 'wamp'} 2016-09-02 12:34:50-0400 [-] Starting factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7fb21ffd3ed0> 2016-09-02 12:35:20-0400 [-] Stopping factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7fb21ffd3ed0>

and that's it. OK, so I put in the host:port into master.cfg:
c['mq'] = {
    'type' : 'wamp',
    'router_url': 'ws://127.0.0.1:8020/ws/buildbot',
    'realm': 'buildbot',
    'debug' : True,
    'debug_websockets' : True,
    'debug_lowlevel' : True,
}

and my config.json looks like the one in the crossbar defaults, except for the transport, which looks like this:
            "transports": [
                {
                    "type": "websocket",
                    "endpoint": {
                        "type": "tcp",
                        "port": 8020
                    },
                    "url": "ws://ws/buildbot",
                    "auth": {
                        "anonymous": {
                            "type": "static",
                            "role": "public"
                        }
                    }
                }
            ]

and try again. This time, I get a crossbar log entry:
2016-09-02T12:38:48-0400 [Router 31742] failing WebSocket opening handshake ('port 8020 in HTTP Host header '127.0.0.1:8020' does not match server listening port 80')
and on buildbot:
2016-09-02 12:38:48-0400 [-] Starting wamp with config: %r {'realm': 'buildbot' , 'debug_lowlevel': True, 'router_url': 'ws://127.0.0.1:8020/ws/buildbot', 'deb ug': True, 'debug_websockets': True, 'type': 'wamp'} 2016-09-02 12:38:48-0400 [-] Starting factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7f89de379950> 2016-09-02 12:38:48-0400 [-] failing WebSocket opening handshake ('WebSocket connection upgrade failed (400 - port8020inHTTPHostheader'127.0.0.1:8020'doesnotmatchserverlisteningport80)') 2016-09-02 12:38:48-0400 [-] Stopping factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7f89de379950>

Betterm I think. At least I get an error, and both sides agree. But why is my crossbar listening on 80 when I told it 8020? OK, we'll try port 80 then...

(same mq, just change the port)

No messages from crossbar. From buildbot:
2016-09-02 12:42:07-0400 [-] Starting wamp with config: %r {'realm': 'buildbot', 'debug_lowlevel': True, 'router_url': 'ws://127.0.0.1:80/ws/buildbot', 'debug': True, 'debug_websockets': True, 'type': 'wamp'} 2016-09-02 12:42:07-0400 [-] Starting factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7f33e87d7650> 2016-09-02 12:42:07-0400 [-] failing WebSocket opening handshake ('WebSocket connection upgrade failed (404 - NotFound)') 2016-09-02 12:42:07-0400 [-] Stopping factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7f33e87d7650>

So no connection there, either.

OK, we'll try the default config.json, and only change the port. It's transports look like this:
            "transports": [
                {
                    "type": "universal",
                    "endpoint": {
                        "type": "tcp",
                        "port": 8020
                    },
                    "websocket": {
                        "ws": {
                            "type": "websocket"
                        }
                    }
                }
            ]

We'll also have to change master.cfg to match urls:
c['mq'] = {
    'type' : 'wamp',
    'router_url': 'ws://127.0.0.1:8020/ws',
    'realm': 'buildbot',
    'debug' : True,
    'debug_websockets' : True,
    'debug_lowlevel' : True,
}

Crossbar starts fine. Buildbot excepts:
2016-09-02 12:52:46-0400 [-] Starting wamp with config: %r {'realm': 'buildbot', 'debug_lowlevel': True, 'router_url': 'ws://127.0.0.1:8020/ws', 'debug': True, 'debug_websockets': True, 'type': 'wamp'} 2016-09-02 12:52:46-0400 [-] Starting factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7fdd9d381890>
2016-09-02 12:52:46-0400 [-] Traceback (most recent call last):
File "/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/wamp/websocket.py", line 60, in onOpen
            self._session = self.factory._factory()
File "/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/twisted/wamp.py", line 639, in create
            cfg = ComponentConfig(self.realm, self.extra)
File "/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/wamp/types.py", line 84, in __init__
            assert(realm is None or type(realm) == six.text_type)
        AssertionError

2016-09-02 12:52:46-0400 [-] Stopping factory <autobahn.twisted.websocket.WampWebSocketClientFactory object at 0x7fdd9d381890>

Any idea where I'm going wrong?

Neil Gilmore
grammatech.com
_______________________________________________
users mailing list
[email protected]
https://lists.buildbot.net/mailman/listinfo/users

Reply via email to