2015/03/14

vNet間通信を使って、大陸をまたがる自社ネットワークを構築

###編集中

■vNet間 IPsecVPN接続、SharedKey設定
※4拠点のvNetが、メッシュ接続されるのでIPsecVPNが6本。対向で設定するので計12行の設定になる。
※対向となる、A地点からB地点、B地点からA地点へのSharedKeyは共通にする。
PS> Set-AzureVNetGatewayKey -VNetName japan-vnet -LocalNetworkSiteName us-vnet-local -SharedKey AAAAAAAA
PS> Set-AzureVNetGatewayKey -VNetName us-vnet -LocalNetworkSiteName japan-vnet-local -SharedKey AAAAAAAA
PS> Set-AzureVNetGatewayKey -VNetName japan-vnet -LocalNetworkSiteName europe-vnet-local -SharedKey BBBBBBBB
PS> Set-AzureVNetGatewayKey -VNetName europe-vnet -LocalNetworkSiteName japan-vnet-local -SharedKey BBBBBBBB
PS> Set-AzureVNetGatewayKey -VNetName japan-vnet -LocalNetworkSiteName asia-vnet-local -SharedKey CCCCCCCC
PS> Set-AzureVNetGatewayKey -VNetName asia-vnet -LocalNetworkSiteName japan-vnet-local -SharedKey CCCCCCCC
PS> Set-AzureVNetGatewayKey -VNetName us-vnet -LocalNetworkSiteName europe-vnet-local -SharedKey DDDDDDDD
PS> Set-AzureVNetGatewayKey -VNetName europe-vnet -LocalNetworkSiteName us-vnet-local -SharedKey DDDDDDDD
PS> Set-AzureVNetGatewayKey -VNetName us-vnet -LocalNetworkSiteName asia-vnet-local -SharedKey EEEEEEEE
PS> Set-AzureVNetGatewayKey -VNetName asia-vnet -LocalNetworkSiteName us-vnet-local -SharedKey EEEEEEEE
PS> Set-AzureVNetGatewayKey -VNetName europe-vnet -LocalNetworkSiteName asia-vnet-local -SharedKey FFFFFFFF
PS> Set-AzureVNetGatewayKey -VNetName asia-vnet -LocalNetworkSiteName europe-vnet-local -SharedKey FFFFFFFF


■vNetから見たIPsecVPN接続の確認
PS> Get-AzureVNetConnection -VNetName japan-vnet


2015/03/11

仮想マシン・オブジェクトに含まれる情報一覧、出し方の例

以下の例では、値がオブジェクトのもの以外は、値を消しています。



まずは、一層目の一覧を出します。

=== 
PS> $test = get-azurevm -ServiceName hogehoge -name sampleVM
PS> $test

DeploymentName              :
Name                        :
Label                       :
VM                          : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVM
InstanceStatus              :
IpAddress                   :
InstanceStateDetails        :
PowerState                  :
InstanceErrorCode           :
InstanceFaultDomain         :
InstanceName                :
InstanceUpgradeDomain       :
InstanceSize                :
HostName                    :
AvailabilitySetName         :
DNSName                     :
Status                      :
GuestAgentStatus            : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.GuestAgentStatus
ResourceExtensionStatusList : {}
PublicIPAddress             :
PublicIPName                :
NetworkInterfaces           : {}
VirtualNetworkName          :
ServiceName                 :
OperationDescription        :
OperationId                 :
OperationStatus             :



オブジェクトのなかでドリルダウンを続けます。

■入れ子になっている".VM"オブジェクトのなか
PS> $test.VM

AvailabilitySetName               : 
ConfigurationSets                 : {Microsoft.WindowsAzure.Commands.ServiceManagement.Model.NetworkConfigurationSet}
DataVirtualHardDisks              : {}
Label                             : 
OSVirtualHardDisk                 : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.OSVirtualHardDisk
RoleName                          : 
RoleSize                          : 
RoleType                          : 
WinRMCertificate                  : 
X509Certificates                  : 
NoExportPrivateKey                : 
NoRDPEndpoint                     : 
NoSSHEndpoint                     : 
DefaultWinRmCertificateThumbprint : 
ProvisionGuestAgent               : 
ResourceExtensionReferences       : {}
DataVirtualHardDisksToBeDeleted   : 


PS> $test.vm.ConfigurationSets

ConfigurationSetType          : 
InputEndpoints                : {}
SubnetNames                   : {}
VirtualIPGroups               : 
StaticVirtualNetworkIPAddress : 
PublicIPs                     : {}
NetworkSecurityGroup          : 
NetworkInterfaces             : {}
ExtensionData                 :

PS> $test.vm.DataVirtualHardDisks

HostCaching         : 
DiskLabel           : 
DiskName            : 
Lun                 : 
LogicalDiskSizeInGB : 
MediaLink           : 
SourceMediaLink     : 
IOType              : 
ExtensionData       : 

PS> $test.vm.OSVirtualHardDisk

HostCaching     : 
DiskLabel       : 
DiskName        : 
MediaLink       : 
SourceImageName : 
OS              : 
IOType          : 
ExtensionData   : 

PS> $test.vm.ResourceExtensionReferences

ReferenceName                    : 
Publisher                        : 
Name                             : 
Version                          : 
ResourceExtensionParameterValues : 
State                            : 
ExtensionData                    : 

■入れ子になっている".GuestAgentStatus"のなか
PS> $test.GuestAgentStatus

ProtocolVersion   : 
TimestampUtc      : 
GuestAgentVersion : 
Status            : 
Code              : 
Message           : 
FormattedMessage  : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.GuestAgentFormattedMessage
ExtensionData     : 

PS> $test.GuestAgentStatus.FormattedMessage

Language                                           Message                                           ExtensionData                                    

■入れ子になっている".ResourceExtensionStatusList"のなか
PS> $test.ResourceExtensionStatusList

HandlerName            : 
Version                : 
Status                 : 
Code                   : 
Message                : 
FormattedMessage       : 
ExtensionSettingStatus : 
ExtensionData          : 



2015/03/04

負荷分散、まとめ


■最初におさえるべきルール
エンドポイントのルール
負荷分散セットのルール

■パケットの流れの例

■内部負荷分散セット

■おまけ

Azure Load Balancer、負荷分散装置、のアルゴリズム(詳細)





以下、各種パラメータについて。重要な順に。

■Probe方法(負荷分散する場合の、各エンドポイントの死活監視)
◇Probeしない
-NoProbe
◇パラメータ指定なしのProbe
-DefaultProbe
◇パラメータ指定ありのProbe
-ProbeProtocol (http or tcp)

◇-ProbeProtocol利用時に、追加で指定できるパラメータ
-ProbePort
デフォルト:LocalPortで指定したポート番号
-ProbeIntervalInSeconds
デフォルト:15(秒)
-ProbeTimeoutInSeconds
デフォルト:31(秒)
-ProbePath ※HTTP Probeのときのみ。

■負荷分散アルゴリズムの指定に関わるパラメータ
-LoadBalancerDistribution
デフォルト:none(送信元IP、送信元ポート、送信先IP、送信先ポート、プロトコル、を元にしたハッシュ)

■アイドルタイムアウトのパラメータ
-IdleTimeoutInMinutes
デフォルト:4(分)
最大:30(分)

■SQL Server AlwaysOnのためのパラメータ
https://msdn.microsoft.com/ja-jp/library/azure/dn469417.aspx
※あとから設定変更できないので、注意
-DirectServerReturn

デフォルト:false
SQL Server AlwaysOnで利用する場合:true

このパラメータを true にした場合のパケットの流れは、筆者は未調査ですが、おそらく、
http://nosa.cocolog-nifty.com/sanonosa/2004/11/l4dsr.html
に Direct Server Return で記載されているような流れになると推測します。

負荷分散先の死活監視

たとえば、
Add-AzureEndpoint
で、下記パラメータを指定した場合。

-ProbeProtocol http -ProbePath /probe.htm -ProbePort 80


負荷分散先の Web Server(IIS) のログは、例えばこんな感じでした。
=== Web Server(IIS) の IPアドレス:172.19.1.4
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2015-03-04 05:08:04 172.19.1.4 GET /probe.htm - 80 - 168.63.129.16 Load+Balancer+Agent - 200 0 0 32
2015-03-04 05:08:19 172.19.1.4 GET /probe.htm - 80 - 168.63.129.16 Load+Balancer+Agent - 200 0 0 19
2015-03-04 05:08:34 172.19.1.4 GET /probe.htm - 80 - 168.63.129.16 Load+Balancer+Agent - 200 0 0 15
2015-03-04 05:08:49 172.19.1.4 GET /probe.htm - 80 - 168.63.129.16 Load+Balancer+Agent - 200 0 0 22
===

ここでの 168.63.129.16 は、Azure datacenter のIPアドレスで、ここから正常性Probe(health probes)が発信されます。
なお、"168.63.129.16"は筆者環境下におけるものです。このIPアドレスは環境により、変動します。

Network Security Groups における、AZURE_LOADBALANCER デフォルト タグ(default tag)は、このIPアドレスに変換されます。