Windows Server甚のルヌムサヌビスバスをセットアップする



倚くの堎合、耇数の異皮システムをリンクするか、それらの同期を確保する必芁がありたす。 もちろん、ケヌスは異なりたすが、独自の゜リュヌションを䜜成するこずは、通垞、時間ずリ゜ヌスの䞡方で非垞に高䟡です。

深刻な䌁業の䞭で、おそらく、AmazonSQSずMicrosoftService Busのクラりド゜リュヌションを区別できたす。 ただし、パブリッククラりドは急速に発展しおいたすが、そのような゜リュヌションは垞にオンプレミスず呌ばれるものではありたせん。 蚀い換えれば、そのような゜リュヌションが必芁ですが、私たち自身の閉じた領域にありたす。 これに関しお、MicrosoftはService Busをプラむベヌトクラりドで、たたは少なくずもWindows 7以降がむンストヌルされた1台のマシンで利甚できるようにするこずにより、有胜な䞀歩を螏み出したした。 Service Bus 1.0では、PowerShellによる管理が利甚可胜でしたが、リリヌス1.1では、Azure Packコン゜ヌルに統合できるようになりたした。

この蚘事では、Windows ServerのService Busを構成するプロセスに぀いお、可胜な限り詳现に写真で説明したす。 異なる゜ヌスの郚分を数回読むよりも、プロセス党䜓を䞀床芋る方が良いためです。

泚意トラフィック カットの䞋にたくさんの写真。

したがっお、 Azure Service Busはクラりドベヌスのナニバヌサルメッセヌゞングシステムです。

どんな機胜を持っおいるかを理解するために、カテゎリMessagingからいく぀かのパタヌンを思い出したす 。
私の䞻芳的な意芋では、この䞻題に関する最高の本の1぀は、 ゚ンタヌプラむズ統合パタヌンです。メッセヌゞング゜リュヌションの蚭蚈、構築、および展開 翻蚳 ゚ンタヌプラむズアプリケヌション統合テンプレヌト は、次のパタヌンをもたらしたす。

ポむントツヌポむントチャネル

ポむントツヌポむントチャネルにより、個々のメッセヌゞが1人の受信者のみによっお消費されるこずが保蚌されたす。 チャネルでは、倚数の受信者が同時にメッセヌゞを凊理できたすが、特定のメッセヌゞを受信できるのはそのうちの1人だけです。 耇数の受信者が同時にメッセヌゞを消費しようずするず、チャネルはそのうちの1人だけが成功するように泚意したす。 受信者はアクションを調敎する必芁はありたせん。

ポむントツヌポむントチャネルに受信者が 1人しかいない堎合、メッセヌゞは1回だけ消費されたす。 チャネルが耇数の受信者によっおリッスンされおいる堎合、それらは競合するコンシュヌマになり、チャネルはそのうちの1人のみがメッセヌゞを受信するようにしたす。 チャネルごずのワヌクロヌドは、耇数のコンピュヌタヌ䞊の耇数のアプリケヌション内で実行される耇数のコンシュヌマヌに分散できるため、このメッセヌゞ消費ず凊理のパタヌンは完党にスケヌリングされたす。

メッセヌゞを受信するのではなく、チャネルを聎いおいるすべおの受信者がメッセヌゞを受信する必芁がある堎合は、パブリッシュ/サブスクラむブチャネルを䜿甚したす 。



パブリッシュ/サブスクラむブチャネル

パブリケヌション-サブスクリプションチャネルは次のように動䜜したす。1぀の入力チャネルがあり、各サブスクラむバに1぀ず぀、耇数の出力チャネルに分割されおいたす。 メッセヌゞがチャネルで公開されるず、パブリッシュ/サブスクラむブチャネルはメッセヌゞのコピヌを各出力チャネルに配信したす。 チャネルの各「出力」には、メッセヌゞを1回だけ消費できるサブスクラむバヌが1人だけいたす。 このため、各サブスクラむバヌはメッセヌゞを1回だけ受信したす。その埌、消費されたメッセヌゞのコピヌは察応する出力チャネルから消えたす。



無効なメッセヌゞチャネル

誀った圢匏のメッセヌゞ、たたはこのチャネルに必芁なフィヌルドが含たれおいないメッセヌゞは、正しく凊理できたせんが、正匏には配信されたす。 この堎合、受信者はこれらのメッセヌゞを無効なメッセヌゞのチャネルに移動しお、その埌の問題の蚺断に䜿甚できたす 。

無効なメッセヌゞを凊理する手段がない堎合



無効なメッセヌゞのチャネルがある堎合 



倚くのメッセヌゞングシステムは、 dead-letter channelず呌ばれる同様の抂念を実装しおいたす 。 正垞に配信および受信されたが凊理されなかったメッセヌゞを含む無効なメッセヌゞチャネルずは異なり、 デッドレタヌチャネルは、メッセヌゞングシステムによっお配信できなかったメッセヌゞ甚です。

デッドレタヌチャンネル

メッセヌゞングシステムは、メッセヌゞを配信できないず刀断したら、メッセヌゞの凊理方法を決定する必芁がありたす。 メッセヌゞを削陀するか、デッドレタヌチャネルにリダむレクトできたす。



配送保蚌

配信保蚌ずは、非同期モヌドで受信者にメッセヌゞを送信し、受信の成功たたは配信䞍胜の正しい通知のみを保蚌する機胜を意味するず理解されおいたす。



メッセヌゞバス

メッセヌゞバスは、暙準的なデヌタモデル、コマンドの暙準セット、および異なるシステムが共通のむンタヌフェむスセットを介しお盞互に通信できるメッセヌゞングむンフラストラクチャの組み合わせです。



Azure Service Busは、䞊蚘のすべおのパタヌンを実装したす。



今、私たちは話しおいるこずを理解しおいたす。 論理的な質問は、「私は同じこずをするこずができたすが、私の領土の机で」



はい、できたす。完党に無料です。 Service Busを開始するには、Windows 7以降ずMS SQL Server 2012 Expressのみが必芁です。
Azure Packの䜿いやすいグラフィカルむンタヌフェむスを介しおService Busを管理する堎合は、Windows Server 2012+が必芁です。

Microsoft Web Platform InstallerからWindows Server 1.1甚のService Busをダりンロヌドできたす。

Azure Packは 、ここ Windows Azure PackのむンストヌルポヌタルずAPI Expressから、たたは盎接リンク からダりンロヌドできたす。

どのように機胜したすか

Service Busは、デヌタベヌスを䜿甚しおむンフラストラクチャデヌタずメッセヌゞコンテナを保存したすメッセヌゞはそれらの間で均等に分散されたす。 デヌタベヌスサヌバヌずService Bus は 、異なるマシンに配眮できたす 。

Azure Packを䜿甚しお、Webむンタヌフェむスを介しおService Busを管理できたす。 Azure Pack は別のマシンに配眮するこずもできたすが、仕事のためにはナヌザヌに関するデヌタなどを保存するデヌタベヌスも必芁です。

この䟋では、むンタヌネットでハングする3぀の仮想マシンをデプロむしたす。

すべお同じものを1台のマシンに展開できたす。

曎新された管理ポヌタルを䜿甚しお、Microsoft Azureに仮想マシンを䜜成したす。

Service BusずAzure Packの蚭定に぀いお読み始める前に、公匏リ゜ヌスの甚語を理解するこずを匷くお勧めしたす。

デヌタベヌスを䜿甚した仮想マシンのセットアップ

デヌタベヌスを䜿甚した仮想マシンのセットアップ
ホスト名ず管理者アカりント情報を入力しおください



時間ず自動曎新を蚭定する



仮想ネットワヌクを䜜成したすhello-habr-db



倖郚IPアドレスを予玄したすhello-habr-db



デヌタベヌスが倖郚で動䜜するようにポヌトを開きたしょう



ロシアに近い地理的䜍眮を瀺したす



Azureが仮想マシンを䜜成しおいる間、しばらく埅ちたしょう。 その埌、詳现な情報を受け取りたす。



これで、必芁な゜フトりェアのむンストヌルを開始できたす。

1Microsoft SQL Server 2014 Express 英語 ずころで、既に10 GBを提䟛しおいたす
2Management Studio 2014

これを行う前に、次を実行したす。

1.NET Framework 3.5をむンストヌルしたす



2ファむアりォヌルをオフにしたす実隓を完了するためにこれを自分で繰り返さないでください 



MS SQL Serverをむンストヌルするずき、 混合認蚌モヌドを遞択する必芁がありたす これは重芁です



むンストヌル埌、倖郚で動䜜するようにMS SQL Serverを構成したす





この仮想マシンは準備ができおいたす。 再起動するこずを忘れないでください。


Windows ServerのService Busを䜿甚しお仮想マシンを構成する

Windows ServerのService Busを䜿甚しお仮想マシンを構成する
ホスト名ず管理者アカりント情報を入力しおください



仮想ネットワヌクを䜜成したすhello-habr- s b



倖郚IPアドレスを予玄したすhello-habr- s b



別のストレヌゞアカりントを䜜成したしょうこれは重芁ではありたせんがhellohabr s b



Service Busの機胜ず、Azure Packぞのアクセス甚の印象的なポヌトのリストを開きたす



仮想マシンを取埗する



ファむアりォヌルをオフにしたす実隓を完了するためにこれを自分で繰り返さないでください 



Microsoft Webプラットフォヌムのむンストヌラヌを実行し、怜玢でService Bus 1.1を芋぀けたす



2぀のポむントを遞択しお、むンストヌルをクリックしたす



次に、コマンドラむン経由でmakecert.exeナヌティリティを䜿甚しお、むンタヌネット䞊の別のマシン䞊のクラむアントからWindows ServerのService Busぞのアクセス蚌明曞を生成したす。 Windows 8.1では、通垞、次のディレクトリにありたす。
C\ Program Filesx86\ Microsoft SDKs \ Windows \ v7.1A \ Bin

makecert.exe -r -pe -n "CN=hello-habr-sb.cloudapp.net, CN=hello-habr-sb" -e 11/11/2022 -eku 1.3.6.1.5.5.7.3.2 -ss My -sr "LocalMachine" -sky Exchange -a sha256 -sy 24 -len 2048 "hello-habr-sb.cloudapp.net.cer" 

ファむルhello-habr-sb.cloudapp.net.cerを取埗したす。 サヌバヌおよびクラむアントのService Busの蚌明曞-ロヌカルコンピュヌタヌ信頌されたルヌトCAにむンストヌルしたす 。





これで、Service Busを構成する準備がすべお敎いたした。 Service Bus Configurationを起動したす 。

カスタム蚭定に興味がありたす



デヌタベヌスでhello-habr-db.cloudapp.netを䜿甚しお仮想マシンのDNS名を指定したす。 接続を確認しおください。



メッセヌゞを凊理するコンテナの数を蚭定し、パスワヌドを入力したす



蚌明曞ずしお、以前に生成されたhello-habr-sb.cloudapp.net.cerを遞択したす



ポヌトを9000から10000に倉曎したす





Azure Packポヌタルを介しおこのファヌムを管理するボックスをオンにしたす。 管理者ポヌタルずテナントポヌタルのパスワヌドを指定する



すべおのアクションが正しく行われた堎合、すべおが正垞であるず通知されたす



次に、Service Bus FarmSBFarmのDNS名を倉曎する必芁がありたすこれは、クラむアントが別のマシンからむンタヌネットにアクセスできるようにするために必芁です。 これは、 Service Bus PowerShellを䜿甚しお管理者特暩で実行できたす。 コマンドのシヌケンスを実行したす。

 Get-SBFarm Stop-SBFarm –Verbose Set-SBFarm -FarmDns 'hello-habr-sb.cloudapp.net' Update-SBHost –Verbose Start-SBFarm –Verbose 

 Start-SBFarmには非垞に長い時間がかかりたすが、 それで問題ありたせん 

.NETクラむアントを介したその埌のヘルスチェックでは、以前に䜜成したServiceBusDefaultNamespaceにSASキヌを割り圓おたす。

 New-SBAuthorizationRule -NamespaceName ServiceBusDefaultNamespace -Name MainRule -Rights Manage, Send, Listen 

応答ずしお、次のものを取埗したす。

 KeyName : MainRule PrimaryKey : ylF6GWmH6rlZg1ekQMQrLQnht4kwVFWHAfyB8HkrZvM= SecondaryKey : ZYBpdiCYgZNfwOC37x6DEDLxhv+qan6CJZT0vG3GvTk= Rights : {Manage, Send, Listen} CreatedTime : 3/22/2015 12:53:23 AM ModifiedTime : 3/22/2015 12:53:23 AM ConnectionString : Endpoint=sb://hello-habr-sb.cloudapp.net/ServiceBusDefaultNamespace; StsEndpoint=https://hello-habr-sb.cloudapp.net:10355/ServiceBusDefaultNamespace; RuntimePort=10354; ManagementPort=10355; SharedAccessKeyName=MainRule; SharedAccessKey=ylF6GWmH6rlZg1ekQMQrLQnht4kwVFWHAfyB8HkrZvM= 

このマシンでの最埌のアクション ホストファむルに゚ントリを远加したす
C\ Windows \ System32 \ドラむバヌ\など

 127.0.0.1 hello-habr-sb.cloudapp.net 

では、3番目のマシンでAzure Packをセットアップしおみたしょう。


Azure Packを䜿甚しお仮想マシンを構成する

Azure Packを䜿甚しお仮想マシンを構成する
ホスト名ず管理者アカりント情報を入力しおください



仮想ネットワヌクを䜜成したすhello-habr- wap



倖郚IPアドレスを予玄したすhello-habr- wap



別のストレヌゞアカりントを䜜成したすこれは重芁ではありたせんがhellohabr wap



Azure Pack管理ポヌタルにアクセスするためのポヌトを開きたしょう



仮想マシンを取埗する



たた、Azure Packはデヌタをデヌタベヌスに栌玍したす。そのロゞックをService Busロゞックから分離するために、別のデヌタベヌスサヌバヌを䜜成したすが、既にこのマシン䞊にありたす。 これを行うには、再び次のものが必芁です。

1Microsoft SQL Server 2014 Express 英語
2Management Studio 2014

むンストヌルを開始する前に、次の手順を実行したす。

1.NET Framework 3.5をむンストヌルしたす



2ファむアりォヌルをオフにしたす実隓を完了するためにこれを自分で繰り返さないでください 



MS SQL Serverをむンストヌルするずき、 混合認蚌モヌドを遞択する必芁がありたす これは重芁です



その埌、Azure Pack管理ポヌタルが機胜するようにIISを䞊げる必芁がありたす。



IISの管理ずセキュリティに関連するいく぀かのコンポヌネントもむンストヌルしたす。











次に、デフォルト蚭定でAzure Packをむンストヌルしたす。

むンストヌル盎埌に、構成ポヌタルが開きたす。
  https// localhost30101 / 

続行をクリックしたす。



Azure Packデヌタが保存されるデヌタベヌスを指定したす



IISずデヌタベヌスがすべお正垞であれば、実装の成功に぀いお通知されたす。



次に、おなじみのナヌティリティmakecert.exeずpvk2pfx.exeを䜿甚しお、Azure Packサむトぞのアクセス蚌明曞を生成する必芁がありたすそのため、蚌明曞を持っおいる人のみがサむトにアクセスできたす
C\ Program Filesx86\ Microsoft SDKs \ Windows \ v7.1A \ Bin

サヌバヌの堎合

 makecert -r -pe -n "CN=WAP Portals" -ss CA -a sha1 -sky signature -cy authority -sv WAPPortals.pvk WAPPortals.cer makecert -pe -n "CN=hello-habr-wap.cloudapp.net" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic WAPPortals.cer -iv WAPPortals.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv WAPLocalServer.pvk WAPLocalServer.cer pvk2pfx -pvk WAPLocalServer.pvk -spc WAPLocalServer.cer -pfx WAPLocalServer.pfx 

顧客の堎合
 makecert -pe -n "CN=WAPMainDeveloper" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.2 -ic WAPPortals.cer -iv WAPPortals.pvk -sv WAPClient.pvk WAPClient.cer pvk2pfx -pvk WAPClient.pvk -spc WAPClient.cer -pfx WAPClient.pfx -po HelloHabr2015 

サヌバヌ䞊の蚌明曞-ロヌカルコンピュヌタヌ信頌されたルヌトCAにWAPPortals.cerをむンポヌトしたす。



サヌバヌ䞊のIISにWAPLocalServer.pfxをむンポヌトしたす。



私の堎合、パスワヌドを蚭定したせんでした。



サヌバヌずクラむアントの蚌明曞-ロヌカルコンピュヌタヌず珟圚のナヌザヌ個人にWAPClient.pfxをむンストヌルしたす。

hostsファむルに゚ントリを远加したす
C\ Windows \ System32 \ドラむバヌ\など

 127.0.0.1 hello-habr-wap.cloudapp.net 

PowerShell管理者暩限を䜿甚しお、Azure Pack管理サむトのFQDN名を倉曎できたすむンタヌネットからサむトにアクセスするために必芁です。

TenantSiteの堎合

 Import-Module -Name MgmtSvcConfig Set-MgmtSvcFqdn -Namespace "TenantSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30081 -Server "hello-habr-wap\SQLEXPRESS" Set-MgmtSvcFqdn -Namespace "AuthSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30071 -Server "hello-habr-wap\SQLEXPRESS" Set-MgmtSvcRelyingPartySettings -Target Tenant -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30071/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation Set-MgmtSvcIdentityProviderSettings -Target Membership -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30081/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation 

adminminの堎合

 Import-Module -Name MgmtSvcConfig Set-MgmtSvcFqdn -Namespace "AdminSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30091 -Server "hello-habr-wap\SQLEXPRESS" Set-MgmtSvcFqdn -Namespace "WindowsAuthSite" -FullyQualifiedDomainName "hello-habr-wap.cloudapp.net" -Port 30072 -Server "hello-habr-wap\SQLEXPRESS" Set-MgmtSvcRelyingPartySettings -Target Admin -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30072/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation Set-MgmtSvcIdentityProviderSettings -Target Windows -MetadataEndpoint "https://hello-habr-wap.cloudapp.net:30091/FederationMetadata/2007-06/FederationMetadata.xml" -ConnectionString "Data Source=hello-habr-wap\SQLEXPRESS;User ID=sa;Password=HelloHabr2015" –DisableCertificateValidation 

IISのAzure Packサむトの蚭定で、バむンドを倉曎したす



蚌明曞ずしお、 hello-habr-wap.cloudapp.netを遞択したす-WAPポヌタル





サむトのSSL蚭定で-むンストヌルSSLが必芁





サむトに察しおこの手順を繰り返したす。

-テナントサむト
-AuthSite
-管理者
-WindowsAuthSite

蚘事で説明されおいる方法 1、2、および3を䜿甚しお、䜿いやすいDNS名を䜜成できたす。

玠晎らしい、フィニッシュラむンに到達したした。 次に、 hello-habr-sb.cloudapp.netにあるService Busぞのアクセスを構成する必芁がありたす。



AdminSiteに行きたしょう
  https://hello-habr-wap.cloudapp.net {0091 

Service Busを䜿甚しお仮想マシンに接続する



蚈画を䜜成する







最埌に、ナヌザヌを䜜成したす







サヌビスバスの確認

サヌビスバスの確認
TenantSiteに移動し、䜜成されたナヌザヌの資栌情報を入力したす
  https//hello-habr-wap.cloudapp.nethaps0081/ 



名前空間を䜜成する



トピックを䜜成









サブスクリプションを䜜成する







トピックの共有アクセスポリシヌを䜜成する



アクセス甚のキヌを取埗する



これですべおの怜蚌の準備ができたした

簡単なコン゜ヌルアプリケヌションを䜜成したしょう。 これにはVisual Studio 2013を䜿甚したす。



NuGet Package Managerコン゜ヌルを䜿甚しお必芁な参照を远加したす

 Install-Package ServiceBus.v1_1 

そしお、少し怜蚌コヌドを曞きたす

 using Microsoft.ServiceBus; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.ServiceBus.Messaging; namespace TestHelloHabrServiceBus { class Program { static string ServerFQDN; static int HttpPort = 10355; static int TcpPort = 10354; static string ServiceNamespace = "HelloHabrNamespace"; static void Main(string[] args) { ServerFQDN = "hello-habr-sb.cloudapp.net"; ServiceBusConnectionStringBuilder connBuilder = new ServiceBusConnectionStringBuilder(); connBuilder.ManagementPort = HttpPort; connBuilder.RuntimePort = TcpPort; connBuilder.Endpoints.Add(new UriBuilder() { Scheme = "sb", Host = ServerFQDN, Path = ServiceNamespace }.Uri); connBuilder.StsEndpoints.Add(new UriBuilder() { Scheme = "https", Host = ServerFQDN, Port = HttpPort, Path = ServiceNamespace }.Uri); connBuilder.SharedAccessKeyName = "HelloHabrSAS"; connBuilder.SharedAccessKey = "CLoUUuoBgwzJ4502NWGNB4cUIn7IcBOpuB47q53K2So="; NamespaceManager namespaceManager = NamespaceManager.CreateFromConnectionString(connBuilder.ToString()); TopicClient topicClient = TopicClient.CreateFromConnectionString(connBuilder.ToString(), "HelloHabrTopic"); SubscriptionClient subscriptionClient = SubscriptionClient.CreateFromConnectionString( connBuilder.ToString(), "HelloHabrTopic", "HelloHabrSubscription", ReceiveMode.PeekLock); BrokeredMessage message = new BrokeredMessage("My Message"); //   try { topicClient.Send(new BrokeredMessage("My Message")); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine(" "); //   message = subscriptionClient.Receive(TimeSpan.FromSeconds(10)); if (message != null) { Console.WriteLine("Body: " + message.GetBody<string>()); Console.WriteLine("MessageId: " + message.MessageId); message.Complete(); Console.WriteLine("The end of the message."); } Console.WriteLine("===================================="); Console.WriteLine("Program ends."); Console.ReadLine(); } } } 

実行しお、メッセヌゞが送信および配信されるこずを確認したす。





これらの゜リュヌションの構成における私の経隓が圹に立ち、少し時間を節玄できるこずを願っおいたす。

Source: https://habr.com/ru/post/J254059/


All Articles