環境
- Azure Load Balancer
- Azure Virtual Machine
概要
主にAWSを使ってた人(俺)がAzureの
下記の3要素でハマったことを記載。
- ネットワークセキュリティグループ
- 受信セキュリティ規則
- ソース
詳細
AzureにはAWSで言うところのセキュリティグループがネットワークセキュリティグループというのに当たると思ってる。
んで、主に制御するのがAWSで言うinboundな訳で。
azureの場合「受信セキュリティ規則」と呼ばれてる。
こいつは基本的にはAWSのセキュリティグループと同じようなもので、
IPで指定したり全開放したりできる(個人的にはセキュリティグループ同士で疎通させられないのは辛い)
で、発信元を指定する要素として
「ソース」というのがある。
その中に
- 任意(どっからでもok)
- 発信元ipアドレス(CIDR指定)
- タグ
がある。この「タグ」が紛らわしい。
タグ
- AzureLoadBalancer
- VirtualNetwork
- InterNet
InterNetは特に気にしなくていい。外と繋がるというわかりやすいもの。
問題はAzureLoadBalancerとVirtualNetwork
AzureLoadBalancer
L4のAzureLoadBalancerからの疎通を許可してくれそうだが実は違う。
AzureLoadBalancerにはプローブというAWSで言うヘルスチェック機能があるのだが、その「ヘルスチェックの通信を許可する」というものだった。しかもこのヘルスチェック元。LoadBalancer自身ではないという話を聞いた(;´Д`)ハァ…
プローブ専用のipアドレスがあるらしい。それを許可するタグです。
なんでそうなってんだ。。。
VirtualNetwork
一見するとLoadBalancerからの接続を許可しそうだがLoadBalancerはVirtualNetworkの外になってしまうからダメ。
補足
大体の人には想像がつくと思いますが、
LoadBalancer配下にあるアプリケーションサーバ達はLoadBalancer以外の接続を拒否したかった。そのため許可するところに「LoadBalancer」とかあればそれは選択しちゃうと思うんだよな。。。という半分愚痴。
結論
- vmにpublic ipを割り振るの止める
- 各vmへのsshはLoadBalancer経由でポートマッピング(わかりにくいからあまり好きではない)
思い込みは色々と判断を間違わせる。