I have two Symmetric DS nodes running against MySQL databases:
source -- this is behind a firewall that allows only outbound traffic
target -- this is running on an AWS instance
I want to push data from source to target.
The source is the registration server and is, as far as I can tell, set up correctly. The "target" successfully connects to its local database as well, but is not registered yet.
From what I understand, the normal method is to provide the registration node's URL as registration.url in the target's .properties file. Then the child node goes to that URL to register itself. But in my case, source is behind a firewall and can't be accessed.
The Symmetric DS documentation says that Push Registration will allow source to push the registration info for target out to target. I used symadmin open-registration with the correct values for the node id and group id of target, plus its URL, as directed.
Lo and behold, the logs on source now show that it's hitting target every two seconds attempting to push the registration. But each time, it fails with RegistrationNotOpenException and no further explanation. No logs appear on target during this time.
What I've done:
open-registration on target and gotten a log message that the registration on target is in fact openregistration_enabled is set in sym_node_security on targetsource is in fact hitting target -- if I shut down target then source just hangs trying to hit it instead of throwing the exception.target is alivetarget, but this only makes target insist that it's a registration server and refuse to open registrationregistration.allow.push=true to the .properties file on target (found in some old version of the doc, not sure if actually needed)sync.url (localhost, target's URL, https://example.com, etc.) in the .properties file of source, even though this parameter shouldn't even be required because source is firewalled on a private network and doesn't have a URLHow do I get a non-registered SymmetricDS client to accept an incoming push registration?
After more hours than I care to admit:
Even though it's completely irrelevant to my setup, apparently registration.url on the target needs to be identical to sync.url on source for push registration to work. Since source is firewalled it doesn't even have a URL, so I just made something up that ends in /sync/<source engine name>.