Post on 16-Apr-2017
第 3 回 JAZUG Tokyo NightAzure Service Fabric / Cluster の作成
Takekazu Omi takekazu.omi@kyrt.in
2016/7/20 R.1.0
2kyrt inc2016/7/20
自己紹介近江 武一JAZUG Azure Storage 担当(自称)Microsoft MVP for Azure http://www.slideshare.net/takekazuomi
kyrt inc 3
kyrt.in
github.com/takekazuomi
white paper
監訳
2016/7/20
4
はじめに 第 1 回 5/18 Reliable Collection
⇨ http://www.slideshare.net/takekazuomi/azure-fabric-service-reliable-collection⇨ https://channel9.msdn.com/Blogs/MVP-Azure/01-Tokyo-Jazug-Night
第 2 回 6/16 Actor⇨ http://www.slideshare.net/takekazuomi/azure-fabric-service-actor
第 3 回 7/20 Cluster の作成 第 4 回 ? Cluster の管理運用 (予定) Global Azure Bootcamp で話した Service Fabric の概要の動画
⇨ https://youtu.be/bVWHPjcjeoc?t=38m 過去に、話した時の資料
⇨ http://www.slideshare.net/takekazuomi/presentations
kyrt inc2016/7/20
5
復習2016/7/20 kyrt inc
6
Framework for Microservice
2016/7/20https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/
kyrt inc
7
過去2回で、 Azure Service Fabric の特徴的な機能を2つの話をしました1. Reliable Collection2. Actor
kyrt inc2016/7/20
8
Reliable Collection の 特徴高可用で低レイテンシーな永続化機構 Replicated :状態の変更がレプリケートされ高可用 Persisted: データがディスクに永続化されるため、大規模な障害に強い ( 例 : データセンターの電源障害 ) Transactional : 複数の Reliable Collection 跨ったトランザクションが可能 Low latency: read はローカル、 write は最小 Network I/O
kyrt inc2016/7/20
9
Actor
Concurrency (並行性)処理の実装モデルスレッドや排他処理を直接コーディングしない内部状態は、 State Manager で保存されるpersistence layer の基本的な仕組みは
Reliable Collection と同じkyrt inc2016/7/20
10
Actor の3つの特徴Scalable by Default数百以上の sever にスケールLow Latency状態の柔軟な保存、 Persisted
state 、 Volatile state 、 No persisted stateSimplified Concurrency
turn base concurrency
kyrt inc2016/7/20
11
Service Fabric プログラミングモデル
kyrt inc2016/7/20
reliable service reliable actor guest executable
stateless service stateful service
12kyrt inc2016/7/20
13
概要Service Fabric では、複数のインスタンスでクラスタを構成クラスタに複数のアプリケーションを展開クラスタへのアプリケーション配置ルールは、アプリケーション単位で設定可能オンプレにも配置可能。今回は、 Azure 上での Cluster 配置の話だけ
kyrt inc2016/7/20
14
Cluster: System View
2016/7/20
Failovermanager
Clustermanager
Naming
Image store
System Services
kyrt inc
VMs and VM Scale Sets
Azure Public CloudAzure-Consistent Private Cloud
VM Extensions
SCALR, RightScale, Mesos, Swarm
Service Fabric (VMs and Containers)
BatchApp Service
MediaWeb Apps
MobileApps
Apprenda, CloudFoundryJelastic, Marathon
Infrastructure
IaaS and IaaS+
General Compute
PaaS
Vertical compute PaaS
Open Choice at Every Layer
Cluster Orchestration
参照: https://channel9.msdn.com/Events/Build/2015/3-618
16
Service Fabric Cluster の作成portal 編
2016/7/20 kyrt inc
17
概要portal の Service Fabric の作成各設定の意味
kyrt inc2016/7/20
18
Service Fabric Cluster -> Create Service Fabric cluster
1. Basicsここはあまり問題ない2. Cluster configuration見慣れない設定がいろいろある3. Security
KeyVault の事前準備が必要kyrt inc2016/7/20
19
Cluster configuration
kyrt inc2016/7/20
1. Node type count
2. Durability tier
設定項目1. Node type count 2. Durability tier耐久性レベル3. Reliability tier信頼性レベルendpoints
3. Reliability tier
20
cluster planning
3 つの考慮事項1. node type の数2. node type の特性 サイズ、プライマリ / 非プライマリ、インターネット接続、 VM 数など3. Cluster の信頼性と耐久性
kyrt inc2016/7/20
21
node types とはnode type は 1 つの VM scale set に対応
⇨ 個別にスケール アップ / ダウン可⇨ 個別に LB を持ち異なったポートを開くことができる⇨ 個別に異なる VM Size を持つことができる
Cluster には、必ず1つの node type がある⇨ primary node type (最低 5 台、テスト環境で 3 台)⇨ システム サービスは、 primary node type に配置
node type は、 Cloud Services の Role に類似⇨VM のサイズ、 VM の数、プロパティが定義
kyrt inc2016/7/20
22
node type の数下記の条件などを元に検討 アプリケーションに複数のサービスで構成されている
⇨ 例えば、インターネットに公開されたフロントエンドサービスと、直接は公開されないバックエンド サービスとが存在した場合、これらを2つの node type に分けることを検討 アプリケーションにインフラストラクチャー ニーズの異なる複数のサービスが存在する場合
⇨ 大容量の RAM が必要、高い CPU 処理能力が必要など⇨ 例えば、フロントエンド サービスは Web アプリで、バックエンド サービスがバッチ処理の場合など、フロントエンド サービスは小さ目の VM (D2 など ) で実行し、インターネットに対してポートを開放⇨ バックエンド サービスは計算負荷が高く、メモリーも必要なため、より大きな VM (D4 、
D6 、 D15 など ) で実行し、ポートは開かない Compute Partition Guidance 参照
⇨ https://msdn.microsoft.com/en-us/library/dn589773.aspx
kyrt inc2016/7/20
23
node type の特性node type = vmss最小 VM サイズは、選択した durability tier で決定最低 VM 数は、選択した reliability tier で決
primary は、デフォルト5( silver )non-primary node type では、最低1
システム サービス は primary node type に置かれる= Cluster の信頼性と耐久性kyrt inc2016/7/20
24
durability characteristics
Service Fabric がこの特権を使って、システム サービスやステートフル サービスのクォーラム要件に影響を及ぼすような、 VM レベルのインフラストラクチャ要求 (VM の再起動、 VM の再イメージング、 VM の移行など ) を一時停止させる※今遅延要求出来るのは、 Gold(G5, DS15) のみ Gold - 1 つの UD につき 2 時間 Silver - 1 つの UD につき 30 分 Bronze - 特権なし kyrt inc2016/7/20
kyrt inc 25
reliability characteristics
システム サービスのレプリカ数を設定Platinum - 9Gold - 7Silver – 5 (default)Bronze – 3 (dev only)
2016/7/20
26
Security
2016/7/20 kyrt inc
27
Security Source key vault
Key Vault のリソース ID Certificate URL証明書がアップロードされた Key
Vault の場所の URL Certificate thumbprint上記証明書のサムプリント Configure advanced settings で下記3つを個別設定
1. Secondary2. Admin client3. Read-only client
kyrt inc2016/7/20
28
KeyVault の準備
KeyVaultは、Azure PowerShell or cliで作成Invoke-AddCertToKeyVaultは、ServiceFabricRPHelpers.psm1(GitHub)内のコマンド結果は、Service Fabric ClusterのSecurityで使用
kyrt inc2016/7/20
$ git clone git@github.com:ChackDan/Service-Fabric.git$ Import-Module .\Service-Fabric\Scripts\ServiceFabricRPHelpers\ServiceFabricRPHelpers.psm1$ Login-AzureRmAccount$ Register-AzureRmResourceProvider –ProviderNamespace “Microsoft.KeyVault“$ New-AzureRmResourceGroup –ResourceGroupName $rgn –Location $loc$ New-AzureRmKeyVault –VaultName $kvn –ResourceGroupName $rgn –Location $loc$ Set-AzureRmKeyVaultAccessPolicy –VaultName $kvn –ResourceGroupName $rgn –EnabledForDeployment$ Invoke-AddCertToKeyVault -SubscriptionId $sub ` -ResourceGroupName $rgn -Location $loc -VaultName $kvn ` -CertificateName $certn -Password $pas -CreateSelfSignedCertificate -DnsName $dns -OutputPath $pwd\.
Name : CertificateThumbprintValue : <省略 >Name : SourceVaultValue : <省略 >Name : CertificateURLValue : <省略 >
29
Cluster security 3つのシナリオ Node-to-node security (ノード間)クラスター内の VM とコンピューターの間の通信をセキュリティで保護
⇨ クラスターを作成時、プライマリ証明書とセカンダリ証明書(オプション)を指定 Client-to-node security (クライアント、ノード間)クライアントの認証を行い、クラスター内のクライアントと個々のノードの間の通信をセキュリティで保護
⇨ 管理クライアント証明書や読み取り専用クライアント証明書がある⇨ Node-to-node security と別の証明書が必要⇨ 管理エンドポイントへのアクセスは AAD利用可
ロールベースのアクセス制御 (RBAC)⇨ クラスターに接続するクライアント用に、管理者用とユーザー用のアクセス制御⇨ 個別の証明書を指定
kyrt inc2016/7/20
kyrt inc 30
Role-based access control 管理者用とユーザー用の 2 つの異なるアクセス コントロールの種類をサポート 管理者は、管理機能へのフル アクセス権 ユーザーは、管理機能 ( クエリ機能など) 、アプリケーションとサービスのリソルバへの RO アクセス権のみがある。( default) ユーザーのグループごとに特定のクラスター操作へのアクセス制限可 クラスターの作成時に、 2 つのクライアント ロール ( 管理者とクライアント ) 毎に個別の証明書を設定
2016/7/20
31
RBAC operation list (default)アプリケーションおよびサービスの操作CreateService サービスの作成CreateServiceFromTemplate テンプレートからのサービスの作成UpdateService サービスの更新DeleteService サービスの削除ProvisionApplicationType アプリケーションの種類のプロビジョニングCreateApplication アプリケーションの作成DeleteApplication アプリケーションの削除UpgradeApplication アプリケーションのアップグレードの開始または中断UnprovisionApplicationType アプリケーションの種類のプロビジョニング解除MoveNextUpgradeDomain 明示的なアップグレード ドメインでのアプリケーションのアップグレードの再開ReportUpgradeHealth 現在のアップグレードの進行状況でのアプリケーションのアップグレードの再開ReportHealth 正常性のレポートPredeployPackageToNode デプロイメント前の APICodePackageControl コード パッケージの再開RecoverPartition パーティションの復旧RecoverPartitions 複数のパーティションの復旧RecoverServicePartitions サービス パーティションの復旧RecoverSystemPartitions システム サービス パーティションの復旧
kyrt inc2016/7/20
32
RBAC operation list (default)クラスターの操作ProvisionFabric MSI やクラスター マニフェストのプロビジョニングUpgradeFabric クラスターのアップグレードの開始UnprovisionFabric MSI やクラスター マニフェストのプロビジョニング解除MoveNextFabricUpgradeDomain 明示的な更新ドメインを使用したクラスターのアップグレードの再開ReportFabricUpgradeHealth 現在のアップグレードの進行状況でのクラスターのアップグレードの再開StartInfrastructureTask インフラストラクチャのタスクの開始FinishInfrastructureTask インフラストラクチャのタスクの終了InvokeInfrastructureCommand インフラストラクチャのタスクの管理コマンドActivateNode ノードのアクティブ化DeactivateNode ノードの非アクティブ化DeactivateNodesBatch 複数のノードの非アクティブ化RemoveNodeDeactivations 複数のノードでの非アクティブ化の取り消しGetNodeDeactivationStatus 非アクティブ化の状態の確認NodeStateRemoved 削除済みノード状態のレポートReportFault 障害のレポートFileContent イメージ ストア クライアント ファイルの転送 ( クラスターの外部へ )FileDownload イメージ ストア クライアント ファイルのダウンロードの開始 ( クラスターの外部へ )InternalList イメージ ストア クライアント ファイルの一覧操作 ( 内部 )Delete イメージ ストア クライアントの削除操作Upload イメージ ストア クライアントのアップロード操作
kyrt inc2016/7/20
33
RBAC operation list (default)NodeControl ノードの開始、停止、および再開MoveReplicaControl ノードから別のノードへのレプリカの移動その他の操作Ping クライアントの pingQuery 許可されるすべてのクエリNameExists 名前付け URI の存在確認ユーザー、管理共通EnumerateSubnames 名前付け URI の列挙EnumerateProperties 名前付けプロパティの列挙PropertyReadBatch 名前付けプロパティの読み取り操作GetServiceDescription 長いポーリングのサービス通知と読み取りサービスの説明ResolveService クレーム ベースのサービス解決ResolveNameOwner 名前付け URI の所有者の解決ResolvePartition システム サービスの解決ServiceNotifications イベント ベースのサービスの通知GetUpgradeStatus アプリケーションのアップグレード状態のポーリングGetFabricUpgradeStatus クラスターのアップグレード状態のポーリングInvokeInfrastructureQuery インフラストラクチャ タスクのクエリList イメージ ストア クライアント ファイルのリスト操作ResetPartitionLoad フェールオーバー ユニットの負荷の再設定ToggleVerboseServicePlacementHealthReporting 詳細なサービス配置正常性レポートの切り替え
kyrt inc2016/7/20
34
作成された Cluster の確認2016/7/20 kyrt inc
35
作成された Cluster の構成
kyrt inc2016/7/20
load balancer
VMNIC
vmss
Virtual Network
public IP
VMNIC
VMNIC
①
③
②
④
Backend address pools
kyrt inc 36
作成されたリソースの解説1. Service Fabric cluster2. 仮想ネットワーク3. vmss(primary) が1つ
storage を 5 つ持った4. LB が1つ
public ip 付きService Fabric 管理ポートの load balancing ruleRDP の inbound NAT rule
2016/7/20
37
ARM template
kyrt inc2016/7/20
38
おまけ2016/7/20 kyrt inc
39
最低価格構成 Azure 上での最低価格構成は A0 3台 テスト環境での利用を推薦 4800円 /月( =1600*3)
1. Node type count = 12. Durability tier = bronze
Virtual machine size = A0
3. Reliability tier = bronzeVM scale set capacity = 3
kyrt inc2016/7/20
1. Node type count
2. Durability tier
3. Reliability tier
40
Q&A
kyrt inc2016/7/20
41
終kyrt inc2016/7/20