Azure Service Fabric Cluster の作成

Preview:

Citation preview

第 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

Recommended