Descriptionprovider/azure: enable load-balancing/availability
This change is required to enable Availability Set
support for Azure. The existing implementation was
fundamentally incompatible with Availability Sets,
so the implementation has been significantly altered,
while maintaining backwards compatibility.
In the old implementation, instances are associated
one-to-one with Cloud Services. In the new
implementation, instances are associated with Roles
within a Cloud Service; there may be multiple Roles
within a single Cloud Service.
If a service is exposed, then its ports will be load-
balanced across each instance within the cloud service
which opens that port. We currently open ports 22 for
all instances, and the Mongo and API server ports for
state server instances. State server instances are
allocated to a single Cloud Service.
There are a number of incidental improvements, e.g.
using an updated version of DeleteHostedService which
destroys associated disks/blobs server side.
All instances are now allocated to an Availability Set
called "juju", which is scoped to the Cloud Service.
We do not currently group units into Cloud Services
automatically, however the ground work is laid to do
this. A follow-up will implement this work.
When we enable grouping, the same time we will have to
make changes to how we connect to machines via SSH,
either by proxying through an arbitrary machine in the
Cloud Service, or by not load balancing port 22 and
connecting to the machine's auto-allocated public port.
https://code.launchpad.net/~axwalk/juju-core/azure-provider-roleisinstance/+merge/210353
(do not edit description out of merge proposal)
Patch Set 1 #Patch Set 2 : provider/azure: enable load-balancing/availability #
Total comments: 15
Patch Set 3 : provider/azure: enable load-balancing/availability #
Total comments: 16
Patch Set 4 : provider/azure: enable load-balancing/availability #
Total comments: 3
Patch Set 5 : provider/azure: enable load-balancing/availability #
MessagesTotal messages: 10
|