GossNet.Discovery.Azure
0.10.0
dotnet add package GossNet.Discovery.Azure --version 0.10.0
NuGet\Install-Package GossNet.Discovery.Azure -Version 0.10.0
<PackageReference Include="GossNet.Discovery.Azure" Version="0.10.0" />
<PackageVersion Include="GossNet.Discovery.Azure" Version="0.10.0" />
<PackageReference Include="GossNet.Discovery.Azure" />
paket add GossNet.Discovery.Azure --version 0.10.0
#r "nuget: GossNet.Discovery.Azure, 0.10.0"
#:package GossNet.Discovery.Azure@0.10.0
#addin nuget:?package=GossNet.Discovery.Azure&version=0.10.0
#tool nuget:?package=GossNet.Discovery.Azure&version=0.10.0
GossNet.Discovery.Azure
Azure tag-based node discovery for GossNet.Protocol.
Virtual machines are found by a tag they already carry, so nothing registers or deregisters
itself — the same shape as GossNet.Discovery.Aws. A machine that goes away simply stops
matching.
Installation
dotnet add package GossNet.Discovery.Azure
Usage
Tag every cluster member, then point discovery at that tag:
using GossNet.Discovery.Azure;
using GossNet.Protocol;
var azureOptions = new AzureDiscoveryOptions
{
ResourceGroup = "gossnet-rg",
TagKey = "gossnet-cluster",
TagValue = "production",
Port = 9055
};
var configuration = new GossNetConfiguration
{
Hostname = "10.0.1.23",
Port = 9055,
DiscoveryProviderFactory = cfg => new AzureTagNodeDiscovery(cfg, azureOptions)
};
await using var node = new GossNetNode<MyMessage>(configuration);
node.Start();
Hostname must be the address other nodes reach this machine on — normally its private IP.
Discovery excludes the node from its own results by comparing against it, so a mismatch makes
a node gossip to itself.
Credentials and permissions
Credentials come from DefaultAzureCredential: managed identity on a VM, environment
variables, or a developer sign-in. The identity needs Reader on the resource group —
enough to list machines and read their network interfaces.
Discovery is scoped to a resource group rather than a whole subscription, which keeps the lookup cheap and the role assignment narrow.
Options
| Option | Default | Description |
|---|---|---|
ResourceGroup |
required | Resource group to search |
TagKey |
required | Tag key identifying cluster members |
TagValue |
required | The value that tag must have |
Port |
9055 |
Gossip port, uniform across the cluster |
SubscriptionId |
ambient | Falls back to the credential's default subscription |
CacheDuration |
30 seconds | How long a resolved instance list is reused |
Azure describes machines, not services, so the port cannot be discovered and must be the same on every node.
A machine's address lives on its network interface rather than the machine resource, so resolving it takes a second lookup per machine. Machines with no usable private address — one still provisioning, say — are skipped rather than returned as unreachable neighbours.
A failed ARM call — throttling, missing role assignment, no credentials — throws
NodeDiscoveryException rather than returning an empty list, so an API problem is never
mistaken for a cluster of one.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Azure.Identity (>= 1.21.0)
- Azure.ResourceManager.Compute (>= 1.16.0)
- Azure.ResourceManager.Network (>= 1.16.1)
- GossNet.Protocol (>= 0.10.0)
-
net10.0
- Azure.Identity (>= 1.21.0)
- Azure.ResourceManager.Compute (>= 1.16.0)
- Azure.ResourceManager.Network (>= 1.16.1)
- GossNet.Protocol (>= 0.10.0)
-
net8.0
- Azure.Identity (>= 1.21.0)
- Azure.ResourceManager.Compute (>= 1.16.0)
- Azure.ResourceManager.Network (>= 1.16.1)
- GossNet.Protocol (>= 0.10.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.