タグ: Azure

  • 読了:クラウドアプリケーション 10の設計原則

    「クラウドアプリケーション 10の設計原則 「Azureアプリケーションアーキテクチャガイド」から学ぶ普遍的な原理原則」を読了した。楽しいとか、そういうものではなくて、クラウドアプリケーションのアーキテクチャの原則なので、読んで損することはなし。こういう設計や作りになっているとベターというものが書かれている。まぁ、そのように作られていないアプリケーションも多々あるのだけど、ベストプラクティスがこうなっているというフィット&ギャップも悪くない。学ぶことは多いはず。

    個人的には、本編よりもメモの部分の方が楽しかった。補足的なところがためになる。

    やれること、やれないことはあるので、原則は原則と思ってよむといい。

  • Azure上でPythonを利用する場合のサポートバージョンのメモ

    Pythonとしての各バージョンとサポート期限は下記。概ね5年間のサポート。ただし、リリースされてからでないと、各種フレームワークなどが追随してこない。リリースされてから、開発等を始めるとすると、利用できる期間は4年間程度。開発会社によっては、常に最新のものを追いかけず、1つ前のバージョンをつかったりする可能性もあるので、もっと短くなる可能性もある。

    Pythonのリリースとサポート期限の一覧
    https://devguide.python.org/versions/

    Azure App Serviceの場合、Python 3.11のバージョンは指定できるが、Python 3.11.xのようなパッチバージョンまでは指定できない。サポートポリシーによると、Azure側でアップデートが行われる。言語のサポートが終了してもすぐに使えなくなるわけではなく、Azureのポリシーとしては「特定の言語のコミュニティ サポートが終了しても、アプリケーションは変更することなく引き続き実行できます。」とのこと。

    App Service 言語ランタイムのサポート ポリシー
    https://learn.microsoft.com/ja-jp/azure/app-service/language-support-policy

    Azure Functionsの場合は、ランタイムバージョン毎に、利用できる言語のバージョンが決まっている。そのため、利用したい言語のバージョンに合わせて、ランタイムバージョンを選択する必要がある。そして、言語側のサポートが終了すると、Azure Functionでも、サポートが終わる。

    Azure Functions でサポートされている言語
    https://learn.microsoft.com/ja-jp/azure/azure-functions/supported-languages

    Azure FunctionでのPythonのサポート状況と、サポート終了のお知らせ。
    https://azure.microsoft.com/ja-jp/updates/azure-functions-support-for-python-36-is-ending-on-30-september-2022/

  • 「Azure Active Directory は Microsoft Entra ID になります」って・・・

    Azure Active Directory(Azure AD)が名称変更を行うとのこと。新しい名前は、Microsoft Entra ID。わかりにくい。

    製品群は変えてもよいと思うけれど、Azure ADのところまで変える必要はなかったような気がする。この先の読み替えとか、会話が混乱する気しかしない。それに、どこかに落とし穴とかありそうで怖い。結果的に、セキュリティ事故につながらなければいいのだけど。注意しないといけない。

    https://forest.watch.impress.co.jp/docs/news/1515912.html

  • 急にNpgsqlからAzure Database for PostgreSQLへの接続ができなくなった

    急に.NET6(.NET 3.1~7も)のNpgsqlからAzure Database for PostgreSQLへの接続ができなくなった。

    アプリケーション側からみると、Azure側のPostgreSQLに強制切断されているようにみえるログが出ている。

     ---> Npgsql.NpgsqlException (0x80004005): Exception while writing to stream
     ---> System.IO.IOException: Unable to write data to the transport connection: 既存の接続はリモート ホストに強制的に切断されました。.
     ---> System.Net.Sockets.SocketException (10054): 既存の接続はリモート ホストに強制的に切断されました。
       at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 count)

    こうなると、通常考えるのは、AzureのPostgreSQLで、コネクション数があふれているとか、高負荷状態とか、DBaaSの制約(PostgreSQL設定の外側)が原因じゃないかということ。これを1つ1つ調べていくと、異常なし。Azure側には問題が見当たらず。DBのログをAzureの管理ページがダウンロードして確認してみると、下記のログがあり。

    could not receive data from client: An existing connection was forcibly closed by the remote host.

    AzureのPostgreSQLからみると、クライアント側が切断しているとのこと。

    調べてみると、「Azure Database for PostgreSQL Single server」は、ルート証明書が変更されていることがわかった。.NETで、Ngpsqlを使っている場合は、「Baltimore CyberTrust Root」と「DigiCert Global Root G2」が使うWindows(Windows Server含む)にインストールされている必要があるとのこと。ルート証明書の確認をすると、「DigiCert Global Root G2」が存在していなかった。これが原因なので、下記のマイクロソフトの内容に従い、確認して作業した。

    Understanding the changes in the Root CA change for Azure Database for PostgreSQL Single server
    https://learn.microsoft.com/en-us/azure/postgresql/single-server/concepts-certificate-rotation#what-do-i-need-to-do-to-maintain-connectivity

    今回足りていなかったのは、「DigiCert Global Root G2」なので、Digicertのサイトからルート証明書をダウンロードした。

    https://www.digicert.com/kb/digicert-root-certificates.htm#roots
    (「Download DER/CRT」をクリックして、CRTファイルをダウンロード)

    CRTファイルを、ルート証明書が足りていないサーバに持っていき、ダブルクリックして、ウィザードからルート証明書をインストールした。配置場所は自動選択させることでルートのところにインストールされた。

    なお、ルート証明書のインストール後のOS再起動はしなくても、ルート証明書を使い始めた。

  • 企業用のMicrosoft 365でログイン時に2段階認証を求められるようになった。

    企業用のMicrosoft 365でログイン時に2段階認証を求められるようになったと、急に言われ始めた。もともとMFAのところは設定していないので、2段階認証が求められるはずはないはずだが。

    念のため調べてみると、Microsoft 365の画面の「ホーム > セットアップ > 多要素認証 (MFA) の構成」で、「完了」のところに緑チェックマークがついている。

    ここの管理をクリックすると、Azure ADの管理画面が開く。概要のプロパティのタブを開くと、「お客様の組織は、セキュリティの既定値群で保護されています。」に緑チェックマークがついている。セキュリティの規定値で、MFAが有効化されているので、M365のログイン時に、2段階認証のMicrosoft Authenticatorの登録が促されていた。MFAを無効化する場合は、ここの「セキュリティの既定値の管理」をクリックして、設定を変更する。

    この規定値については、下記の「Japan Azure Identity Support Blog」にあるように、自動的に有効化されたため。

    2022 年 6 月末から「セキュリティの既定値群」の有効化が促されます (対象 : 一部のテナント)
    https://jpazureid.github.io/blog/azure-active-directory/security-default-2022/

  • クラウドの障害は忘れかけたころにやってくる

    今日の夕方くらいから、Microsoft Azureで大規模な障害が発生した。原因は、AzureのWANの設定変更によるものだそうだ。詳細は、今後、ニュースサイトで掲載されるであろう。

    設定変更の確認を行っていないわけじゃないのだろうけど、巨大なパブリッククラウドのネットワークなので確認しきれなかった、ということなのだろう。ネットワーク系の障害はAWSもやっているし、そのほかのクラウドサービスもやっている。それにしても、Azureの上とそのネットワークでつながっているMicrosoft365系のサービスも一緒に止まったわけで、なかなか大きい障害だった。まぁ、復旧するまで見ているしかないわけだが。

    忘れたころに発生するというよりも、忘れそうになる前に、どこかしらの大手のパブリッククラウドがやらかしている気がする。結局、コントロールしようと思うと、オンプレで環境をもっておくのがいいというわけだ。経済的かどうかは、規模や体制にもよるけれど。

  • Azureでメンテナンス告知を確認する方法

    1. Azureの管理コンソールにアクセスする。

    2. すべてのサービスから、「サービス正常性」を開く。

    3. サイドメニューから「計画メンテナンス」を選択する。通知がある場合には、サイドメニューの計画メンテナンスに、(1)のような件数表示がある。

    4. メンテナンスの告知が表示されるので、選択して、内容を確認する。

    5. 内容を保存する場合には、PDFで出力する。

    AppServiceでも、個別のところにはなく、サービス正常性のところに通知がある。そして、複数のインスタンスがあるとき、どれの通知なのかわからない。

    サービス停止を伴うものかどうかも、メンテナンスの内容を見てみないとわからない。(サービス停止を伴うもに出会っていないので、なんともいえないけれど)

  • Microsoft Azure: クラウド でリソース不足からサービスが制限されているという話

    海外のサイトで「Microsoft Azure: クラウド コンピューティング サービス」でのリソース不足から、新規の契約や新しいリソース割り当てを制限していると報じていた。(元ネタは、Twitterで見たツィート)

    https://www.theregister.com/2022/07/04/azure_capacity_issues/?utm_source=twitter&utm_medium=twitter&utm_campaign=auto&utm_content=article

    要約すると、

    • Azureクラウドのリージョンの一部で、リソース制限が発生している。
    • 少なくとも英国のリージョンでは制限が発生している。
    • 夜中などの利用が少ないときに、サーバをシャットダウンしまうと、朝になって負荷が増えたときにサーバを起動できないことがある。
    • マイクロソフトは、ウクライナ戦争に関連して、サイバー攻撃対策に力を入れている(お金もリソースもかかかる)。
    • 半導体不足により、サーバなどを増やしたくても増やしにくい。

    という状態とのこと。

    クラウド環境の利用と供給が崩れてきており、クラウドサービスが需要を満たすことができなくなりつつあるようです。米国やアジアのリージョンでも需要と供給のバランスが崩れてきているようだ。

    サーバもネットワーク機器も、軒並み伸びていて、モノの調達がとても不安定。ネットワーク機器は、深刻で納期が半年~2年とかになっている。サーバもパーツ不足から、納期が延びている。この状況は、一般の会社も、大手の会社も同じような状況。新規で購入しようとしても、買えないので、クラウドサービスの需要が増えている感じ。ただ、モノが買えないのは、クラウドベンダーも同じなので、需要に対して、クラウドサービスの設備増強が追いついていかない状況。規模をどんどん拡大させていくことにより、それをカバーしていたが、COVID-19とウクライナ戦争により、世界の物流に影響が出てしまったことにより、規模の拡大をやりたくても、やれない状況に。この先、1年か、数年か、は同じ傾向がつづくと思われる。

    クラウドがダメならば、オンプレミス(自分でサーバなどを買ってきて構築)ということ考えられますが、サーバやネットワーク機器が買えないので、これも難しい。

    他のクラウドサービスを利用するとしても、移行するのも大変だし、コストもかかるので、それもつらい。Azureで、リソース制限をしないといけない状況だとすると、AWSでも、Google Cloudでも、同じような状況になる可能性はあるわけだ。なので、サービスの乗り換えでなんとかなるとも思えない。

    そのうち、クラウドは電気代などの高騰から、そのうちサービス料金の値上げになるのではないかと。値上げして利用が減ると、たくさん利用するところにクラウドのリソースを割り当てられるので、クラウド業者には、そんなにデメリットはない。むしろ今は、AWS、Google Cloud、Azureで価格競争していたので、安すぎるくらいだし。

    結局、何が勝つか?というと、実はオンプレでシステムを維持しているところで、余剰リソースがあるところなんじゃないかと思う。世界では、クラウドからオンプレ回帰の潮流が数年前からあるので(これはクラウドだと要求される処理速度を出すことができないので、自前でやった方がいいとオンプレに戻るサービスが出てきている)。日本は、まだクラウドリフトが流行りだが、クラウドを利用しない方がいいんじゃないだろうか。

  • Azure VMware Solution (AVS)

    Azure VMware Solutionについてオンラインセミナーで聞いたので、そのメモ。価格は別にして、使い勝手はよさそう。

    • Azure VMware Solutionの略は、AVS。
    • VMware SolutionはAzureの中のIaaS。
    • AVSは、ESXi、vCenter Server、vSAN、NSX-T、HCXがセットで提供される。
    • VMware Soluctionは、Azure側のセキュリティソリューションと組み合わせて使える
    • 通常のAzureのIaaSで稼働できないレガシーOSも動く(ESXiが提供されるので、ESXiで動作するOSは動く)
    • オンプレ側のIPアドレスを維持したままの移行が可能
    • Azureサービスの一部なので、拡張セキュリティ更新プログラム(ESU)が提供される
    • 日本では、東日本リージョンで提供される
    • VMwareのネイティブの運用ができる。PowerCLI、vSphere Clientが使える
    • vCenterは、URLを指定してアクセスする。
    • HCXの技術が使える(L2の延伸、vMotionなど)
    • HCXは、オンプレミスとクラウドのプライベートインフラ(VMware環境)で相互運用、移行を行うための技術
    • AVSの上のデータをAzure Backupで取得するなど、Azureの機能をシームレスに連携できる
    • マイクロソフトのソフトウェアアシュアランスをAVS上に持ち込める。移行期は、180日間の二重ライセンスの利用が認められる。
    • 予約インスタンスの場合、3年の予約でコスト50%OFFになる。
    • AVSのサポート窓口は、常にマイクロソフト。VMwareのサポートが必要なときも、マイクロソフトで受けて対応。切り分け後に対応ができなければ、マイクロソフトとVMwareで連携して対処される。
    • AVSのセットアップも、Azure Centerから行う。ブラウザ上から、選択していくことで作成できる。1時間半程度で、AVSが作成される。
    • サービスの初期は、1ノード36コアのみの提供。1クラスタは最大16ノードで構成できる。
    • クラスタの最低ノード数は、サービス用は3ノード。
    • ロードマップとして、PoC用のノード(1or2)を用意する方向とのこと。
    • Xeon Gold 2.3GHz(36コア)、Memory 576GB、vSAN 8×1.92SSD、vSAN Cashing 2×1.6TBNVMe。
    • PAYGモデル(時間単位)or予約モデルで提供される。
    • ESXiホストの管理やパッチ適用は、マイクロソフトが行う。
    • 物理インフラ、物理セキュリティ、物理障害は、マイクロソフトが行う。
    • Azure VNETとAVSネットワークは別もの。Azure内で、Edgeルータ間で接続される。Edgeルータは、ユーザから見えない。Edgeルータ間は、Express Routeで接続される。この時、同一リージョン内であれば、EpressRouteのコストはゼロ。
    • vSANには、容量の限界がある(ノード数に応じて増えるが、個別の追加はできない)。そういうときは、Azureの別のサービスにデータを保存することが可。
    • DBだけAzureのPaaS(DB as a Service)を利用することも可。
    • Application Gateway(WAF)からAVS上のサーバに負荷分散ができる。
    • Azure Backup ServerをAVS上のvCenterに連携させることで、仮想マシンをバックアップすることができる。
    • ESXiのノードの増減は、Azureの管理サービス上からできる(ブラウザからできる)。
  • オンプレのVMwareも移動の幅が広がりそうだ

    Google Cloud、VMware実行環境提供のCloudSimpleを買収https://www.itmedia.co.jp/news/articles/1911/19/news074.html

    ネットワーク設計さえ、ちゃんとやればオンプレのVMwareの仮想マシンは、GCPでもAzureでも、AWS(は専用環境が用意されてる)でも、簡単にV2Vというか移動ができるようになると。意外と、VMware形式でVMを作っておけば、大手クラウド間を移動できる世界になりそうだな。VMwareの狙いは、そこなんだろうけど、実現しつつあるのが面白い。