All,
I am trying to setup an EventStore.ClusterNode.exe in three geographically disperse regions (i.e. East US, West US, Northern Europe) with in Azure but I am having problems.
Has anyone been able to get something like this to work?
I am able to get a cluster to work if I setup a VPN with in Azure, but that ties them all to the same datacenter & affinity group.
I think the issue is around how ES does gossip? I am assuming that gossip will look at the --int-ip (or is it --ext-ip ?) and put that in the gossip message. If there was a way that I could set the “gossip” IP address to be something that isn’t a local ip address (bindable), I think I could get it to work. When Azure provisions a virtual machine. Azure provisions it with a local IP address and then on an external IP address. For instance, one of my virtual machines has a local/bindable IP address of: 100.67.x.x and a public IP address (not bindable) of: 23.96.x.x
Here is the configuration that I have setup [extra line breaks for readability]:
Virtual Machine: xxxxx-east.cloudapp.net -> internal: 100.67.118.x, external: 23.96.55.x
EventStore.ClusterNode.exe --db c:\data\es\db --log c:\data\es\log
–int-ip 100.67.118.x
–ext-ip 100.67.118.x
–int-tcp-port=1000
–ext-tcp-port=2000
–int-http-port=1001
–ext-http-port=2001
–nodes-count 3
–use-dns-discovery-
–gossip-seed 23.99.16.x:1001
–gossip-seed 191.235.133.x:1001
Virtual Machine: xxxxx-west.cloudapp.net -> internal: 100.71.172.x, external: 23.99.16.x
EventStore.ClusterNode.exe --db c:\data\es\db --log c:\data\es\log
–ext-ip 100.71.172.x
–ext-ip 100.71.172.x
–int-tcp-port=1000
–ext-tcp-port=2000
–int-http-port=1001
–ext-http-port=2001
–nodes-count 3
–use-dns-discovery-
–gossip-seed 23.96.55.x:1001
–gossip-seed 191.235.133.x:1001
Virtual Machine: xxxxx-northeurope.cloudapp.net -> internal: 100.92.38.x, external: 191.235.133.x
EventStore.ClusterNode.exe --db c:\data\es\db --log c:\data\es\log
–ext-ip 100.92.38.x
–ext-ip 100.92.38.x
–int-tcp-port=1000
–ext-tcp-port=2000
–int-http-port=1001
–ext-http-port=2001
–nodes-count 3
–use-dns-discovery-
–gossip-seed 23.96.55.x:1001
–gossip-seed 23.99.16.x:1001
Here is an example of what I am seeing in the console on all of the virtual machines (over and over again):
[02216,11,22:37:12.048] ELECTIONS: (V=0) TIMED OUT! (S=ElectingLeader, M=).
[02216,11,22:37:12.048] ELECTIONS: (V=1) SHIFT TO LEADER ELECTION.
[02216,11,22:37:12.048] ELECTIONS: (V=1) VIEWCHANGE FROM [100.92.38.57:1001, {6c
184f7c-fce4-40ff-a7f0-e7f59b011d31}].
[02216,11,22:37:13.064] ELECTIONS: (V=1) TIMED OUT! (S=ElectingLeader, M=).
[02216,11,22:37:13.064] ELECTIONS: (V=2) SHIFT TO LEADER ELECTION.
[02216,11,22:37:13.064] ELECTIONS: (V=2) VIEWCHANGE FROM [100.92.38.57:1001, {6c
184f7c-fce4-40ff-a7f0-e7f59b011d31}].
[02216,11,22:37:14.079] ELECTIONS: (V=2) TIMED OUT! (S=ElectingLeader, M=).
[02216,11,22:37:14.079] ELECTIONS: (V=3) SHIFT TO LEADER ELECTION.
[02216,11,22:37:14.079] ELECTIONS: (V=3) VIEWCHANGE FROM [100.92.38.57:1001, {6c
184f7c-fce4-40ff-a7f0-e7f59b011d31}].
[02216,11,22:37:15.079] ELECTIONS: (V=3) TIMED OUT! (S=ElectingLeader, M=).
[02216,11,22:37:15.079] ELECTIONS: (V=4) SHIFT TO LEADER ELECTION.
[02216,11,22:37:15.079] ELECTIONS: (V=4) VIEWCHANGE FROM [100.92.38.57:1001, {6c
184f7c-fce4-40ff-a7f0-e7f59b011d31}].
Thanks,
Ryan