{"action":"created","issue":{"url":"https://api.github.com/repos/airbnb/synapse/issues/100","labels_url":"https://api.github.com/repos/airbnb/synapse/issues/100/labels{/name}","comments_url":"https://api.github.com/repos/airbnb/synapse/issues/100/comments","events_url":"https://api.github.com/repos/airbnb/synapse/issues/100/events","html_url":"https://github.com/airbnb/synapse/pull/100","id":49843184,"number":100,"title":"Backup nodes + httpchk","user":{"login":"Jaykah","id":5440172,"avatar_url":"https://avatars.githubusercontent.com/u/5440172?v=3","gravatar_id":"","url":"https://api.github.com/users/Jaykah","html_url":"https://github.com/Jaykah","followers_url":"https://api.github.com/users/Jaykah/followers","following_url":"https://api.github.com/users/Jaykah/following{/other_user}","gists_url":"https://api.github.com/users/Jaykah/gists{/gist_id}","starred_url":"https://api.github.com/users/Jaykah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jaykah/subscriptions","organizations_url":"https://api.github.com/users/Jaykah/orgs","repos_url":"https://api.github.com/users/Jaykah/repos","events_url":"https://api.github.com/users/Jaykah/events{/privacy}","received_events_url":"https://api.github.com/users/Jaykah/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2014-11-23T22:57:33Z","updated_at":"2015-08-28T01:24:46Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/airbnb/synapse/pulls/100","html_url":"https://github.com/airbnb/synapse/pull/100","diff_url":"https://github.com/airbnb/synapse/pull/100.diff","patch_url":"https://github.com/airbnb/synapse/pull/100.patch"},"body":"This patch allows to set stub backends as `backup` and adds the ability to use the Haproxy `httpchk` option with custom check ports for those nodes."},"comment":{"url":"https://api.github.com/repos/airbnb/synapse/issues/comments/135597685","html_url":"https://github.com/airbnb/synapse/pull/100#issuecomment-135597685","issue_url":"https://api.github.com/repos/airbnb/synapse/issues/100","id":135597685,"user":{"login":"Jaykah","id":5440172,"avatar_url":"https://avatars.githubusercontent.com/u/5440172?v=3","gravatar_id":"","url":"https://api.github.com/users/Jaykah","html_url":"https://github.com/Jaykah","followers_url":"https://api.github.com/users/Jaykah/followers","following_url":"https://api.github.com/users/Jaykah/following{/other_user}","gists_url":"https://api.github.com/users/Jaykah/gists{/gist_id}","starred_url":"https://api.github.com/users/Jaykah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jaykah/subscriptions","organizations_url":"https://api.github.com/users/Jaykah/orgs","repos_url":"https://api.github.com/users/Jaykah/repos","events_url":"https://api.github.com/users/Jaykah/events{/privacy}","received_events_url":"https://api.github.com/users/Jaykah/received_events","type":"User","site_admin":false},"created_at":"2015-08-28T01:24:46Z","updated_at":"2015-08-28T01:24:46Z","body":">We've been relying on the implicit backend name for a bit but I opened #135 to make it explicit so you can reference backends in acls. \r\n\r\nSo if I understand correctly, in that case we would define two (or more) backends (main and backup) in frontend's Synapse and failover to that backup using ACL? If so, that seems to solve a part of what I am trying to achieve, since your example shows ZK discovery for the backup node, which can be done from a different ZK path.\r\n\r\nAre there any limitations to such approach?\r\n\r\n\r\n>That being said the HAProxy guys recommend combining multiple backends + acl with backups so we should probably support it. \r\n\r\nThat's what I meant by\r\n\r\n```A better option would be to discover backup nodes from another Zookeeper\r\npath, but that's a different discussion (we would still need default\r\nservers if ZK fails).``` \r\n\r\nHaving the backup option available on a per-node basis for stub watcher is complementary to #135 \r\n\r\n> I feel like adding a bunch of HAProxy specific keys (like httpchk) is the wrong way going forward, especially if we ever want to be able to add more outputs than HAProxy/file output. I'm not sure the right abstraction though, what do you think?\r\n\r\nSure, having more flexibility is always great, but we should not forget that even per Synapse's readme, \"The heart of synapse is actually HAProxy, a stable and proven routing component.\"\r\n\r\n> Also just FYI you can use the state cache as an additional guard (it's the only guard we use) against zookeeper flakiness.\r\n\r\nWhat cache are you referring to? We are not using Curator, if you are talking about the patch cache."}}