一般的な構成
以下は、開発や運用展開に利用できる一般的な構成の例です。
ローカル開発
詳細については、「ローカル開発構成」を参照してください。
Azure を使用した信頼性の高い運用展開
Azure を利用して信頼性の高い運用展開を行うには、クラスター メンバーシップに Azure Table オプションを使用する必要があります。 これはオンプレミス サーバー、コンテナー、または Azure 仮想マシン インスタンスにデプロイする場合の一般的な構成です。
DataConnection
文字列の形式は Key=Value
のペアを ;
で区切った一覧になります。 次のオプションがサポートされています。
Key | 値 |
---|---|
DefaultEndpointsProtocol |
https |
AccountName |
<Azure storage account> |
AccountKey |
<Azure table storage account key> |
次は Azure Table ストレージの DataConnection
文字列の例です。
"DefaultEndpointsProtocol=https;AccountName=<Azure storage account>;AccountKey=<Azure table storage account key>"
サイロの構成:
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();
クライアント構成:
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();
SQL Server を使用した信頼性の高い運用展開
SQL Server を使用して信頼性の高い運用展開を行うには、SQL Server 接続文字列を指定する必要があります。
サイロの構成:
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();
クライアント構成:
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();
専用サーバーのクラスターでの信頼性の低い展開
信頼性が問題とならないとき、専用サーバーのクラスターでテストするには、MembershipTableGrain
を活用し、Azure Table への依存を回避できます。 ノードの 1 つをプライマリとして指定するだけで完了です。
サイロで:
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();
クライアントで:
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();
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET