ほとんど未完

個人的な備忘録です。コーネルメソッドっぽく書くことを試してます。音声入力多用気味なので変換ミスとかはご容赦ください。

【🍊】設定してみた@試験勉強

App Volumes でパッケージを実際に作ってみた。流れは、以下の通りだった。

・アップボリュームマネージャーでまず空のアプリケーションエントリーを作成する

・次にアップボリュームスマネージャーで空のアプリケーション、エントリー内に含めるパッケージの作成をキックする

・すると、キャプチャー用の仮想マシン内のアップボリウム製エージェントが新規にこれからインストールされるアプリケーションのキャプチャーを開始する

・当該仮想マシンにログインし.キャプチャーしたいアプリケーションのインストールを実行する。実行後アップボリュームエージェントで完了をクリックすると、マシンの再起動が開始される

仮想マシンの再起動が完了すると、キャプチャーが完了した旨が表示される。ここでキャプチャ用の仮想マシンは一旦用済みとなる。作業前のスナップショットがあればその状態に戻しておく。

・アップボリュームマネージャーに戻ってパッケージのキャプチャーが完了した後の操作を行う。具体的には、パッケージの作成完了操作とその後のアプリケーションの割り当て操作である。これらが完了すると、アプリケーションの割り当てが完了する。

 

【🍊】とある試験の試験勉強

今回はAWSそんなに関係ない(いや全く)記事です。

VMware App Volumesは、大きく分けて2つの目的があります。

  1. 仮想マシンのテンプレートに含めることのできないアプリケーションをPackageの中に含めて、提供すること。
  2. Writable Volumeを提供すること。この機能を使うことで、マシン内のユーザープロファイルデータをキャプチャすることが可能になるし、Packageの中に含めることができないアプリを含めて配信操作が行える。これにより、ディスク領域を逼迫しがちな個人用のPersistent Desktopを提供する必要がなくなってくるし、テンプレートをなるべくシンプルな形にすることができる。

App Volumeエージェントはnon-persistentな仮想マシンの中にインストールされる。このAgentがApp Volumes Managerに通信して、App Volumes ManagerからvCentertと連携することにより、前述のPackagesやWritable Volumeを仮想マシンにアタッチする。

App Volumes Managerの設定はすべてSQLデータベースに格納される。また、PackageやWritable Volumeの割り当てを決める際は、ADのオブジェクトが参照されて、それに沿って仮想マシンに割り当てが決められる。

アーキテクチャ上の推奨は以下のようなものである。

  • 常に2台以上のApp Volumes Managerを利用すること
    • クライアントから認識されるManagerのURLが常に一意になるように、LBを前段に配置するのが常套手段
    • SQLサーバは共有となる
  • カーネルモードで動作するようなアプリケーションは、PackagesやWritable Volumeには含めない
  • Storage Group機能を使用して、一つのストレージに読み書きが集中しないようにすること。(vSANならなくてもよいと書いてあるけれど、それってFTT1以上の場合のみじゃないかな。FTT0だったら結局一つの領域に読み書き集中するだろうし)特にPackageはリードが激しくなりやすい。そらそうか。
  • Packageのレプリケーションを使用する場合は、vSANだろうとStorage Group機能を使用するのはあり(ですよね)
  • Packagesは、100%Readに曲振りしたストレージ上に配置すること
  • Writable VolumeはRead/Writeが50:50なストレージ上に配置すること
  • 一人のユーザーやデバイスアサインするPackagesは最小にすること(KB 67354)
  • App Volumes 4はMachine Managersの設定に最適化されているから必要ない限りいじるな(なんだこれ)

PackagesやWritable Volumesのリクエストは、App Volumes Agent→App Volumes Manager→vCenter Serverの順にたどって処理される。vCenterにマウント処理の負荷が集中しないように「Mount ESXi」オプションが存在し、バージョン2.x系の頃はこれが結構使える環境がおおかった。が、4.xになってからは、vCenterも新しい機構(なんぞこれ)を持つようになったため、そんなにこのオプションが役に立つこともなくなった(らしい。)

もしHorizonのPodがマルチサイトに展開されている大規模な環境であれば、App Volumes ManagerもPodのあるサイトには展開していないといけない。

Horizon Published Apps on Demand

RDSHに、必要に応じてPackagesをアタッチする機能。この機能により、RDSHのイメージをよりシンプルに構成し、必要なアプリはPackagesでアタッチすることが可能。

Horizon 2212とApp Volumes 2212を使用している必要がある。

Apps on Demandの作成手順は以下の通り

  1. 自動化されたRDSHのインスタントクローンファームを作成する
  2. App Volumes ManagerをHorizon Connection Serverに登録する
  3. App Volumes ManagerをRDSHファームに紐づける
  4. アプリケーションプールを作ってユーザーを紐づける

Apps on Demandの動作は以下の順序

  1. ユーザーが公開されたアプリケーションをHorizon Entitlementsから起動する
  2. HCSがApp Volumes Managerに接続し、必要なRDSHにPackageをアタッチするように命令する
  3. App Volumes ManagerはHCSから来た命令をそのままvCenterにパスする
  4. vCenterがRDSH仮想マシンに対してPackageをアタッチする
  5. Horizon ClientがRDSHのHorizon Agentにセッションを張り、アプリケーションの利用が開始される

RDSHのイメージにインストールしてしまった方がなんだか利用までの時間が短くて済みそうな気がしてしまうけれど、きっとこれでも問題ないんだろうな。。

Horizonと統合する際の考慮事項

  • App VolumesのPackageにはHorizon Agentを含めてはいけない(含めるやつがいるのか。。。?)
  • 既存のHorizon VMをPackageを作成するためのVMとして使用してはならない(これはやるやついそう)
  • Horizon AgentやHorizon Agentなどのインストール順番はKB 2118048を参照してね

App Volumes ManagerをHorizon Connection Serverに登録する

複数台のApp Volumes Managerを登録することが、プロダクション環境におけるベストプラクティス。その際は、App Volumes Managersの前段にLBを配置することが水晶とされている。なので、Horizon Connection ServerにApp Volumes Managerを登録する際は、LBのFQDNを登録することになる。

拡張性と冗長性

App Volumes Managersのサーバは仮想マシンで組むことが推奨されている。理由はHAやSRM、vSphere Replicationなどの機能で保護することが可能だからだ。やってはいけないことは、繰り返しになるけれど、シングル構成でApp Volumes Managerを構成することである。

App Volumes Manager

App Volumes Mangerを冗長構成でデプロイするときは、SQLデータベースを外だしして構成する。App Volumes Managerはデータベースを持たずに構成するため、畢竟、ステートレスになる(?)らしい。

サイジングの限界的には2台のApp Volumes Mangerで8000ユーザーの同時利用をサポートしているらしい。ログインストームに対応したいときはもっと増やしてもいいらしい。詳細はKB 67354を参照とのこと。

vCenter Serverが複数台ある時の考慮事項

大規模環境になれば、マルチポッドの構成の元、App Volumes Managerを展開することになる。その際に、マルチサイトにあるvCenter Server(?)が異なるログイン情報を持っていても、特に問題はないが、各サイト間のESXiホスト名やデータストア名は一意である必要がある。

ただし、vCenter Serverがマルチ構成になった後は、シングル構成のvCetner Serverに戻すことは非推奨となる。

Packageはストレージに紐づく。各サイトのvCenterのストレージ内のPackageがApp Volumes Managerに見えてくる。この状況下だと、本来別サイトにあって、アクセスが不可能なPackageをApp Volumes Managerの誤操作などで仮想マシンにアタッチしてしまいうる。その時は、ストレージどうしでPackageをレプリケートするStoage Groups機能を使用して、できるだけ各サイトのストレージ内のPackageに差異がないようにするとよいようだ。(別サイトにあるPackageだからむりやでっていうValidationくらいは働かせてくれてもよくない?)

ADが複数あった時の考慮事項

複数ADがある環境でも、App Volumes Managerを利用することが可能である(ちなみに、複数存在するAD同士で、信頼関係があろうがなかろうが問題ない)。各ドメインに対して、読み取り権限さえあればよい。設定はConfigurations > Settings > Active Directoryから行う。

vSphereの考慮事項

特にストレージについて考慮する必要がある。vSphere Security Configuration Guidesを参照してね、とのこと。ん?Securityの方なの。。。?

負荷分散の考慮事項

LBを構成して、複数台存在するApp Volumes Managerの前段に配置すること(何回目?w)。これができないなら、App Volumes Agentが複数のApp Volumes Managerと接続するように構成することもできる。要は、ユーザーのログインストームをいかにして裁くことができるかが至上命題らしい。

ちなみにこの本(App Volumes Architecture)作成時点では、一台当たり2000ユーザーの同時利用を想定して記載していたらしい。ユーザー何名が利用することができるかは、詳しくはKB 67354を見てね、とのこと。

ちなみにNSX Avi LBを使用するときは、Configure Avi Vantage for VMware HorizonのLoad Balancing App Volumes Managerセクションを読んでね、とのこと。

必要なのはLB側の設定なので、App Volumes Manager側では追加設定はないらしい。

で、面白いのは、サードパーティのLBもサポートしてるよ!その時は以下の表に記載の内容を意識してね!と書いてあるまではいいものの、その表が、少なくともPDF番だとすっからかんなのだ。とりあえずヘルスモニターとプールと、Application ProfileとVirtual Serviceという項目があるけれど、中身が書いてない。Web版になら書いてあるのかな。。?

データベースのデザインについて

前述のとおり、App Volumesの設定はすべてMS SQL DBに格納される。App Volumes ManagerのインストーラにはExpress版が含まれているので、検証用ならそれだけでも十分だけれども、本番環境では使わない方がいいよとあった気がする。

Failover ClusterやAlways Onの機能と一緒に使うことができるらしい。

VMware App Volumes Database Best Practicesを見ると、ちゃんとした情報を得ることができるとか。え、じゃぁこのドキュメントと一緒にしておいてほしい

 

【🍊】オンプレミスネットワークとの接続

AWS Direct Connect(別名DX)

専用線を使って拠点とAWSと繋ぐサービス

メリットは以下

  • 専用線なので、インターネットを経由せず、インターネットを経由するようなサービスよりは、セキュリティーが担保できる
  • VPNを利用した通信よりも専用線なので、0.4が低くできる
  • DXそのもの通信料は単位あたりでは低い
  • 帯域を確保することができる。1.25Gbpsが最大
  • AWSからは1/10/100Gbpsの帯域を作成することができる

接続はこんな感じ

  1. オンプレミス→
  2. (自前の専用線+AWS Direct Connect)→
  3. AWS Direct Connectロケーション→
  4. (AWSの用意した専用線)→
  5. AWSVPCにある仮想プライベートゲートウェイ

AWS Site to Site VPN(別名AWSマネージドGW)

AWS Client VPN

  • SSL VPN
  • OpenVPNクライアントでアクセス
  • クライアントVPNエンドポイントが受け口
  • ちょっとこれなら個人でも検証できそう
  • エンドユーザー端末からふつーにVPNするやつ

Direct Connect Gateway

  • 最大10個のVGWをくっつけることのできるサービス
  • VPCのリージョンやAWSアカウントが異なってもどんとこい
  • ちまちまVPCピアリングするよりもよさそう(でもお高いんでしょ?)
  • これも検証できそうだけど個人だとちょっとお値段高そう(完全に想像)

AWS Transit Gateway 

VPCを複数スター型で繋ぐサービス。ピアリングの上位互換。

DXゲートウェイみたく、アカウント跨ぎはできない。

 

 

【🍊】VPCについて

VPC

VPC」とはAWS上の仮想ネットワークのこと。 出入り口が複数ある。

  • インターネットゲートウェイ :文字通りインターネットに出るためのゲートウェイ。Elastic IPを持っていようがコイツを経由しないと外に出られない(と思われる)
  • 仮想プライベートゲートウェイ :AWSとオンプレミスをつなぐためのVPNゲートウェイ
  • VPCエンドポイント :AWS内で、VPCでは接続できないサービスに接続するためのエンドポイント。IGWと使い分けるらしい。

VPCはデフォルトでリージョン単位で構成される。つまり複数のAZを跨ぐことになる(らしい)。 また、VPCを構成するときに設定可能なサブネットマスクの長さは16から28の間らしい。

とりあえずVPC作ってみた。

久しぶりにAWSコンソールにログインしたので勝手がわからなかったが、左上の検索ボックスに「VPC」と入れたらなんだか簡単にこのページ(VPC Dashboard)にたどり着いた。 左側にはメニュー一覧と、真ん中にはそのメニュー一覧に対応づいた大きなクリックしやすいリンクが並んでいる。

とりあえず1枚目の画像のCreate VPCをクリックすると、ウィザード画面が出てきた。 赤枠内を適当に埋めた。

そういえばTenancyってなんだろう。。。? Infoをクリックしてみたら、説明があった。 Tenancy自体はEC2インスタンスごとにTenancy属性を指定しして使うもの?らしく、どの物理リソースでEC2が起動するかを指定する者らしい。 Defaultは、別に物理リソースの指定はないけれど、Dedicatedにすると特定ホストでしか起動しなくなる?ようだ。 なんか某仮想化ベンダーのアフィニティに似ているな。 で、なんでこれをVPCごとに設定するんじゃいというと、VPCごとにDedicatedとすることで、EC2の設定を無視って強制的にTenancyを全部Dedicatedで起動してくるようになるらしい。普通にAWSを使うだけなら、そんなにメリットが感じられないけれど、Outposts のように物理ホストが着弾して、自社のオンプレミスでEC2を稼働させる場合に効果を発揮するらしい。せっかくオンプレミスで仮想マシンを稼働できるようにしたにもかかわらず、全然別のロケーションで仮想マシンが稼働してしまっては意味がない。こういうときにはTenancyを使って自社構内で仮想マシンを稼働させるように制限をかける。のだと思う。

あらかた設定したらもう一度Create VPCをクリックする

できた!今まで本でしか見たことなかったNACLやルートテーブル、サブネットが表示されている。

サブネット

VPCを作った後、そのVPCの中でサブネットというより細かなネットワークを切り出すことができる。 こちらは物理危機のサブネットとほぼ同じ意味でつかわれているように思う。以下のような特徴がある。

VPCと同じ特徴
VPCと違う特徴
  • VPCはリージョン内の全AZ内で利用可能だが、サブネットは単一のAZ内にのみ作成。既存サブネットを丸っとほかのAZに移動することはできない
  • サブネットには「ルートテーブル」と「NACL」が存在して、ほかのサブネットなどとの通信を制御している。こちらのふたつは既存サブネットに対して付け替えができる
  • デフォルトで先頭四つのアドレスと最後の一つのアドレスが使えない(予約されている)

・パブリックサブネットやプライベートサブネットと呼ばれるサブネットを構成することも可能。基本的にはNACLやルートテーブルなどによって差別化をしているため、根本的なサブネット自体の機能が違うわけではない

ルートテーブル

  • サブネットに対して1つずつ設定することができる。
  • デフォルトゲートウェイなどを持っているため、1つのサブネットに対して複数のルートテーブルは適用できない。
  • その他の通りルーティングの情報を記載する。ネクストアップ情報等が分かる。
  • サブネットごとに指定しない場合は、VPシーのデフォルトのルートテーブルが使われる

セキュリティーグループ

NACL

  • サブネットごとの通信制御に利用するためのファイオールルールのようなもの
  • ルール作成に関して、セキュリティーグループを使うことができない
  • ステートレスのファイヤーウォール
  • 応答トラフィックを指定しない限り拒否
  • 攻撃の遮断に使うことができる

インターネットゲートウェイ

仮想プライベートゲートウェイ

  • VPCごとに一つつけることができる。こちらは、インターネットとの通信ではなく、オンプレミスのネットワークとの通信の出入り口である。具体的にはサイト間VPNやダイレクトコネクトに接続をするためのゲートウェイである。

疑問:プライベートサブネットとパブリックサブネットを実環境で見分けるにはどこを見たらいいんだろう?

VPCエンドポイント

  • ゲートウェイエンドポイント:S3などのサービスに限定した通信
  • AWSプライベートリンク:上記以外のサービスを通信させる
  • どちらもVPCの外にあるサービスに対して、VPC内のインスタンス等からインターネットを経由させずに、通信を行わせるためのゲートウェイ。裏側では、ルーティングを使っているらしい?

VPCピアリング

  • VPC同士をつなげるためのサービス。
  • 接続対象のVPCのその先に、例えばもう一つVPCがペアリングがあったとしても、そいつにアクセスはできない

フローログ

  • EMI単位で記録されるフローのログ

【🍊】より近いコンピューティングリソースのために

  • ローカルゾーン :AZの一部を、より多くの場所に配置したもの。よりユーザーに近いローカルゾーンでコンピューティングリソースが実行できる。
  • Outposts :物理サーバ一式?がAWSから着弾するサービス。契約が別途必要。着弾した物理サーバをセットアップするとAWS管理コンソールから管理できる。らしい。国内事例あるのかなコレ、、、?と思ってググったらNTTさんとかのブログがヒットした。スゲー。

【🍊】エッジロケーションについて

  • エッジロケーション :AZとは別に、世界各地に設けられているデータセンター。AZよりも数が多いらしく、ユーザーがAWSに構築したシステムから何かをダウンロードするときに、最も地理的に近いデータセンターからダウンロードさせることができるモノ。CDNみたいなモノかと理解していたら、ググってみるとCDNも同じ意味でこの言葉を使うので一般用語らしい。なお、AWSのエッジロケーションはCloudFrontやLambdaエッジ、Route53など、地理的に近所にあることがメリットになりやすい(?)一部のサービスのみ稼働しているらしい。

【🍊】リージョンとアベイラビリティーゾーンについて

※ブログの執筆に音声入力を利用しているため、カタカナ語の伸ばし棒などにミスが出るかもしれません。あしからず。ご了承下さい。

  • リージョン :AWSの地理的なロケーションを表す言葉、日本で言えば、東京リージョン、大阪リージョンなどがある。1つのリージョンが1つのデータセンターでできているわけではない。

  • アベイラビリティーゾーン :AWSのデータセンターの単位を表す言葉。複数のアベイラビリティーゾーンが集まって、リージョンを形成する。テロや停電でリージョンまるごと停止することがないよう、各アベイラビリティーゾーンは10キロ以上離れていて、電源の供給も別々のところから行われているらしい。

  • マルチAZ :単一のアベイラビリティーゾーンの障害が、サービスやシステムの停止につながらないう、1つのリージョン内の2つ以上のアベイラビリティーゾーンを使ってシステムを構成すること、またはそのシステム構成。