Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniżej przedstawiono przykłady typowych konfiguracji, których można użyć na potrzeby wdrożeń programistycznych i produkcyjnych.
Rozwój lokalny
Aby uzyskać więcej informacji, zobacz Konfiguracja programowania lokalnego.
Niezawodne wdrażanie produkcyjne przy użyciu platformy Azure
Aby uzyskać niezawodne wdrożenie produkcyjne przy użyciu platformy Azure, użyj opcji Tabela platformy Azure dla członkostwa w klastrze. Ta konfiguracja jest typowa dla wdrożeń na serwerach lokalnych, kontenerach lub wystąpieniach maszyn wirtualnych platformy Azure.
Format DataConnection ciągu jest rozdzieloną średnikami listą Key=Value par. Obsługiwane są następujące opcje:
| Klawisz | Wartość |
|---|---|
DefaultEndpointsProtocol |
https |
AccountName |
<Azure storage account> |
AccountKey |
<Azure table storage account key> |
Poniżej przedstawiono przykład DataConnection ciągu dla usługi Azure Table Storage:
"DefaultEndpointsProtocol=https;AccountName=<Azure storage account>;AccountKey=<Azure table storage account key>"
Konfiguracja silosu:
const string connectionString = "YOUR_CONNECTION_STRING_HERE";
var silo = new HostBuilder()
.UseOrleans(builder =>
{
builder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
})
.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(connectionString))
.ConfigureEndpoints(siloPort: 11_111, gatewayPort: 30_000)
.ConfigureLogging(builder => builder.SetMinimumLevel(LogLevel.Warning).AddConsole())
})
.Build();
Konfiguracja klienta:
const string connectionString = "YOUR_CONNECTION_STRING_HERE";
using var host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(clientBuilder =>
clientBuilder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
})
.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(connectionString)))
.Build();
Niezawodne wdrażanie produkcyjne przy użyciu programu SQL Server
W przypadku niezawodnego wdrożenia produkcyjnego przy użyciu programu SQL Server podaj parametry połączenia programu SQL Server.
Konfiguracja silosu:
const string connectionString = "YOUR_CONNECTION_STRING_HERE";
var silo = new HostBuilder()
.UseOrleans(builder =>
{
builder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
})
.UseAdoNetClustering(options =>
{
options.ConnectionString = connectionString;
options.Invariant = "System.Data.SqlClient";
})
.ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000)
.ConfigureLogging(builder => builder.SetMinimumLevel(LogLevel.Warning).AddConsole())
})
.Build();
Konfiguracja klienta:
const string connectionString = "YOUR_CONNECTION_STRING_HERE";
using var host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(clientBuilder =>
clientBuilder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
})
.UseAdoNetClustering(options =>
{
options.ConnectionString = connectionString;
options.Invariant = "System.Data.SqlClient";
}))
.Build();
Zawodne wdrożenie w klastrze dedykowanych serwerów
W przypadku testowania w klastrze dedykowanych serwerów, w których niezawodność nie jest problemem, można wykorzystać MembershipTableGrain i uniknąć zależności od tabeli platformy Azure. Wystarczy wyznaczyć jeden z węzłów jako podstawowy.
Na silosach:
var primarySiloEndpoint = new IPEndpoint(PRIMARY_SILO_IP_ADDRESS, 11_111);
var silo = new HostBuilder()
.UseOrleans(builder =>
{
builder
.UseDevelopmentClustering(primarySiloEndpoint)
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
})
.ConfigureEndpoints(siloPort: 11_111, gatewayPort: 30_000)
.ConfigureLogging(logging => logging.AddConsole())
})
.Build();
Na klientach:
var gateways = new IPEndPoint[]
{
new IPEndPoint(PRIMARY_SILO_IP_ADDRESS, 30_000),
new IPEndPoint(OTHER_SILO__IP_ADDRESS_1, 30_000),
// ...
new IPEndPoint(OTHER_SILO__IP_ADDRESS_N, 30_000),
};
using var host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(clientBuilder =>
clientBuilder.UseStaticClustering(gateways)
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "Cluster42";
options.ServiceId = "MyAwesomeService";
}))
.Build();