Linux
 Computer >> コンピューター >  >> システム >> Linux

LXDコンテナが使用できるリソースを制限する方法

LXDコンテナが使用できるリソースを制限する方法

前回の記事では、プラットフォームに慣れていない場合に備えて、LXDとは何か、およびLXDの使用を開始する方法について説明しました。

ほとんどの場合、同じシステムで複数のコンテナーを使用して、大きな全体を小さなコンポーネントに分割します。各コンポーネントが使用できるリソースの量を制限することは理にかなっています。しかし、なぜ?明らかに、理由の数は、コンテナーを使用できるシナリオと同じくらい無制限です。

LXDコンテナの制限が役立つ場合

  • サービスを提供し、各顧客にLXDインスタンスを提供します。たとえば、これは大規模なサーバーであり、各顧客のWebサイトを個別のコンテナーにホストします。 Webサイトでトラフィックが突然急増した場合、他のインスタンスの速度が低下する可能性があります。制限があると、1つのコンテナだけが遅くなり、残りは正常に動作します。
  • 同様のシナリオでは、さまざまなサービスプランを簡単に販売できます。 1人の顧客はXの量のリソースを支払うことができ、もう1つの顧客はYの量を支払うことができます。また、いくつかの簡単なコマンドでこれを簡単に調整できます。
  • より単純な形式のサービス拒否攻撃から身を守ることができます。 1つのコンテナが爆撃されると、そのリソース使用制限に達します。他のコンテナは影響を受けません。
  • 2つのコンテナがあり、それぞれが使用可能なCPU時間の100%を使用します。ただし、一方が他方よりも早くジョブを終了するようにする必要があります。たとえば、明日必要なプロジェクトのビデオをレンダリングする場合があります。 CPU時間の90%を最初に割り当て、10%を2番目に割り当てることができます。

もちろん、あなたにはあなた自身の理由があるかもしれません。また、システム全体で1つのコンテナのみを使用している場合は、これも必要ない場合があります。ただし、複数のコンテナを使用している場合は、ほとんどの場合、何らかの制限を設定する必要があります。なぜなら、1つのLXDインスタンスでの攻撃、バグ、またはその他の形式の不正行為は、システム全体に影響を及ぼし、システムの速度を低下させる可能性があるためです。コンテナが多いほど、そのようなシナリオの可能性が高くなります。

LXDコンテナにリソース制限を設定する方法

ディスク操作に関連するリソース制御には、ZFSをインストールする必要があります。ここのチュートリアルに従った場合、それはすでにインストールされています。それ以外の場合は、チュートリアルの指示に従ってZFSユーティリティをインストールしてから、以下のコマンドを再実行してください。使用するストレージバックエンドを尋ねられたら、ZFSを選択します。

sudo lxd init

メモリ使用量の制限

以下のコマンドで、「container_name」をコンテナの実際の名前に置き換えます。メモリ制限の設定は、次のように入力するだけです。

lxc config set container_name limits.memory 100MB

メガバイトの代わりにギガバイトを使用する場合は、「MB」の代わりに「GB」と入力します。

CPU使用率の制限

コンテナが使用できるCPUコアの数を制限する場合は、次のように入力します。

lxc config set container_name limits.cpu 2

特定のCPUコアに「固定」するには、次を使用します。

lxc config set container_name limits.cpu 0-0

これにより、コンテナは最初のCPUのみを使用するようになります。 2番目を使用するには、1-1と入力します。 1番目から3番目までのすべてのCPUコアを使用するには、0〜3と入力します。

もう1つのタイプの制限は、コンテナーが使用できるCPU時間です。

lxc config set container_name limits.cpu.allowance 10ms/100ms

これにより、コンテナは100ミリ秒ごとに10ミリ秒のCPU時間を使用できるようになるため、1つのCPUコアの約10%になります。

ディスク使用量の制限

ディスク関連のリソースを制限するには、最初にルートディスクデバイスをコンテナに追加する必要があります。デフォルトですでに存在し、デフォルトのLXDプロファイルから継承されます。ただし、これを行うまで、コンテナごとに設定を変更することはできません。

lxc config device add container_name root disk pool=default path=/

プールに別の名前を付けた場合は、「default」をストレージプールの名前に置き換えてください。名前を忘れた場合は、次のように表示できます:

lxc storage list

LXDインスタンスが使用できるディスク容量を制限するには:

lxc config device set container_name root size 7GB

残念ながら、現時点ではI / O制限(読み取り/書き込みの「速度」とIOPS)は機能しません。

ネットワークの使用を制限する

ディスクと同様に、最初に構成可能な仮想イーサネットデバイスを追加する必要があります。 LXDインスタンスを外部に接続するネットワークブリッジの名前を見つけます。

lxc network list

必要に応じて「lxdbr0」を置き換えます(ブリッジの名前が異なる場合)。ブリッジとしてネットワークタイプを選択しなかった場合(デフォルトの回答)、「lxd init」構成手順で、選択を反映するように以下のコマンドを調整する必要がある場合があります。たとえば、「nictype」もLXDネットワークに使用したものに置き換える必要がある場合があります。

lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0

最後に、ネットワークの入力(ダウンロード)および/または出力(アップロード)に制限を設定します。

lxc config device set container_name eth0 limits.ingress 1Mbit

1Mbitは1メガビットです(メガバイトではありません)。 1バイトには8ビットが含まれます。つまり、ダウンロードは1秒あたり約1/8 =0.125Mビット、約120キロバイトに制限されます。したがって、1MB /秒(メガバイト)でダウンロードする場合は、8を掛けて、入力制限を8Mビットに設定します。

出力には、次を使用します:

lxc config device set container_name eth0 limits.egress 1Mbit

結論

これは、リソース制限に関連して最も一般的に使用されるプロパティをカバーしています。ただし、lxc config device setで設定できる変数は他にもたくさんあります。 およびlxc config set 。これらの調整可能なコンテナプロパティの詳細については、LXDのGitHubページをご覧ください。


  1. Firefoxでマルチアカウントコンテナを使用する方法

    マルチアカウントコンテナは、Firefoxによって起動されたアドオンで、デジタルフットプリントの削減に役立つように設計されています。 「コンテナ」を使用しているため、コンピュータ上の複数のプロファイルのブラウジングアクティビティを分離でき、ブラウザのCookieを管理するのに役立ちます。 このガイドでは、マルチアカウントコンテナアドオンの使用方法を紹介し、その機能を最大限に活用できるようにします。 Firefoxマルチアカウントコンテナでできること 何よりもまず、拡張機能はブラウジングアクティビティを分離します。仕事用と個人用の両方で同じFirefoxアカウントを使用している場合は、これら

  2. OpenVPN を使用してプライベート AWS リソースに安全にアクセスする方法

    この記事は、私の新しい Pluralsight コース「オンプレミス リソースを AWS インフラストラクチャに接続する」の一部から編集されました。 アマゾン ウェブ サービスで実行しているリソースに接続する必要がある場合がありますか? SSH を使用してパブリック EC2 インスタンスにアクセスし、S3 データを暗号化することは、すべての意図と目的において十分に安全です。しかし、バックエンドの RDS データベース インスタンスにアクセスしたり、公開されていない AWS ベースのデータを操作したりするにはどうすればよいでしょうか?管理者がそのようなリソースを一般大衆の手の届かないところに