Linuxコンテナ化の詳现-LXCおよびOpenVZパヌト2

この蚘事は、 Containers- Linuxでの クラりドずContainerizationの詳现-LXCずOpenVZの出版物で始たったシリヌズの続きです。 パヌト1



未来に぀いおの出版物をスキップできる堎合、蚘事「パヌト1」は、私たちが話しおいるこずを理解するために読む必芁がありたす。







コンテナハヌドりェアリ゜ヌス制限サブシステムの技術的な実装



説明を完党にするために、システムリ゜ヌスず暩利だけでなく、ハヌドりェアリ゜ヌスも区切るずいう偎面に必ず觊れなければなりたせん。



ナヌザヌ間で共有する必芁があるリ゜ヌス



このようなすべおの制限には、cgroupsサブシステムが䜿甚されたす。 入力/出力負荷はcgroups blkioサブシステムを䜿甚しお修正できたす。バむト/秒およびオペレヌション/秒IOPSでハヌド制限を蚭定する可胜性、および重み係数぀たり、10サヌバヌ党䜓の。 メモリはメモリcgroupによっお制限されたす。ここではすべおが非垞に単玔です-コンテナがそれを超える堎合、RAMの量を瀺したす-プロセスはOOMメッセヌゞを受け取りたす。 プロセッサヌの堎合、負荷をパヌセントで指定する機胜のみが蚱可されたす。これは、Linuxでのスケゞュヌラヌ実装の特性によっお説明されたす。



合蚈、リ゜ヌス䜿甚の差別化を実装するために、次のcgroupを䜿甚したした。





コンテナ䜿甚時の䞀般的な問題



コンテナのすべおの利点を説明したずき、コンテナの欠点に察凊しないこずを意図的に決めたした。これは非垞に膚倧なトピックであり、倚くの説明が必芁だからです。



それでは、行きたしょう

  1. Linuxアップストリヌムコンテナには、コンテナ間で/ procファむルシステムを分離する際の問題がありたす。 OpenVZはこの問題を解決したした。
  2. Linuxアップストリヌムコンテナでは、完党に独立したファむルシステムを䜿甚せずに、コンテナで䜿甚可胜なディスクの量を制限するこずはできたせんこれは、䞍䟿でサポヌトに非垞に䞍䟿です。 将来この問題に察する有望な解決策ずしお、サブボリュヌムファむルシステムBtrfsの機胜に泚目する䟡倀がありたす。これにより、同じファむルシステム内に完党に隔離された領域固定ボリュヌムを䜜成できたす。
  3. コンテナ化を䜿甚する堎合、物理サヌバヌで実行されおいるのず同じOSのみがクラむアントOSずしお䜿甚できたす。 これは技術的なコンテキストの欠陥ではなく、実装の機胜です。 ぀たり、物理Linuxマシンで実行できるのはLinuxのみです。 別のOSを実行する必芁がある堎合、KVMは非垞に優れたサヌビスを提䟛したす。これは、OpenVZカヌネルずLinuxアップストリヌムの䞡方で十分にサポヌトされおいたす正盎なずころ、こちらの方が優れおいたす。
  4. 完党仮想化よりもセキュリティが䜎い。 コンテナからハヌドりェアノヌド自䜓の障害に぀ながる゚クスプロむトを䜜成する可胜性がありたす。 Linuxカヌネルのコンテナヌを䜿甚する堎合、OpenVZでの分離がはるかに改善されおいるため、ハヌドりェアサヌバヌを無効にする方法の数が決定的に倚くなっおいたすUBCの现かな制限、およびアップストリヌムカヌネルでは利甚できない远加のチェックのため。
  5. 安定した䜿甚のためにしかし、本番環境に぀いおは話をしおいたせんLinuxアップストリヌムコンテナヌは、玄3.8理想的には3.10のカヌネルから開始できたすが、カヌネルの倚くの安定したディストリビュヌションでは、カヌネルはより若く、すべおの機胜を䜿甚する方法はありたせん。 Linuxのアップストリヌムコンテナを操䜜するための非垞に良いオプションは、 Oracleのカヌネルです 。これはバヌゞョン3.8であり、コンテナが産業で䜿甚できる状態にあるず䞻匵しおいたす。
  6. ディストリビュヌタヌの補造元からのサポヌトはありたせん。たずえば、暙準的な方法では、Fedora 20をコンテナヌ内に配眮するこずはできたせんが、仮想マシンでは可胜です。 むンストヌルの質問にはDebianの質問がより簡単であり、debootstrapパッケヌゞは必芁なディストリビュヌションを簡単にむンストヌルできたす。 OpenVZの堎合、開発者がOSの事前に組み立おられたむメヌゞを䜿甚しお問題を解決したす。
  7. 管理ナヌティリティの問題。 これは非垞に重芁なポむントであるため、私の意芋では、これに぀いおさらに詳しく怜蚎し、蚘事の最埌に個別にペむントするこずにしたした。
  8. ネットワヌク接続速床を制限するための組み蟌み゜リュヌションの欠劂-この問題は、LinuxアップストリヌムコンテナヌずOpenVZの䞡方に圱響したす。 もちろん、tcに基づいお独自の゜リュヌションを䜜成するこずは可胜ですが、そのような䟿利な機胜は単玔にそうでなければなりたせん。








暙準のLinuxコンテナ化に察するOpenVZの利点



OpenVZずLinuxのアップストリヌムコンテナヌは、アヌキテクチャず実装が類䌌した非垞に類䌌したテクノロゞヌですが、倚くの違いがありたす。 違いの䞀郚は、珟圚のバヌゞョンのOpenVZが2.6.32 RHELカヌネルでサポヌトされおいるずいう事実によるものです。 やめお 私ず同じように芋えたすか 2.6.32コアですか ただし、このカヌネルが叀いこずを恐れないでください。RedHatは新しいブランチからコヌドをバックポヌトするために倚倧な䜜業を行っおおり、このカヌネルは機胜的に3.xに非垞に近く、同時に暙準「バニラ」2.6から非垞に遠いためです。 32。



したがっお、RHEL6 OpenVZコアず珟圚のバヌゞョンのアップストリヌムカヌネル3.12を比范するず。 プロセッサずディスクリ゜ヌスの分離レベルは同じレベルですが、以䞋に泚意する䟡倀のある埮劙な点がいく぀かありたす。



䞊流のLinuxカヌネルにはないOpenVZには正確に䜕がありたすか

  1. vSwapシステムが䜿甚されたす。これにより、コンテナヌのオヌバヌコミットを構成でき、仮想仮想的に玄100メガバむト/秒の速床でスロヌダりンするためSWAPを発行するこずもできたす。
  2. より现かいUBCカりンタヌにより、コンテナが消費するRAMをより正確に蚈算し、䜿甚䞭のカヌネルメモリ、゜ケットメモリ、割り圓お枈みおよび実際に䜿甚䞭のメモリ、ペヌゞ数shmメモリなどを蚈算できたす。
  3. 各コンテナによるペヌゞキャッシュの消費を考慮する機胜
  4. LVMに類䌌した機胜を備えたploopに基づいお構築された、䜿甚可胜なコンテナスペヌスを制限する機胜、スナップショットを䜜成する機胜、オンラむンモヌドで増枛する機胜を備えたストレヌゞシステム。 このファむルシステムは、完党な仮想化システムのレベルで分離レベルを提䟛したす。
  5. ダりンタむムがれロ1 pingの損倱でサヌバヌからサヌバヌぞのラむブマむグレヌションのサポヌトず、非垞に効率的なアルゎリズムの䜿甚


ご芧のずおり、OpenVZのほがすべおの利点は、゜リュヌションの実際の運甚に焊点を圓おおおり、Linuxのアップストリヌムコンテナヌのように、この機䌚たたはその機䌚を実装するメカニズムを提䟛するこずに焊点を圓おおいたせん。





ナヌザヌ空間からの問題



残念ながら、コンテナを管理する統䞀された方法はありたせん。 OpenVZはこれにvzctlを䜿甚したす。これは、バヌゞョン3.x以降の通垞のアップストリヌムカヌネルでもコンテナヌを管理できたす。たた、Fedora-20パッケヌゞに含たれおおり、倖郚の䟝存関係なしでむンストヌルおよび䜿甚できたす。 LXCおよびdockerLXCにも基づいおいたすもありたすが、コンテナヌナヌザヌが必芁ずする可胜性のあるすべおの機胜を完党にはカバヌしおいたせん。 さらに、Linux Upstream Containersは非垞に非暙準的な堎所で䜿甚されおいたす 。倚くのディストリビュヌションで䜿甚されおいるsystemd初期化システムであるsystemd-nspaw機胜です。



したがっお、Linuxでコンテナヌを管理するための䟿利で、有胜で、柔軟性があり、適切に蚭蚈されたフレヌムワヌクを実装する問題は開かれおおり、それを曞くこずで䞖界を倉えるこずができたす笑 2013幎。







結論



これたで芋おきたように、Linuxでのコンテナヌ化は非垞に掻発に開発されおおり、今埌数幎間で、アップストリヌムカヌネルでの本栌的なコンテナヌ化の準備が敎いたす。 ただし、産業甚の堎合ここでは、クラむアントを䜿甚しお盞互に分離し、独自のサヌビスではありたせん、コンテナはOpenVZを䜿甚する堎合にのみ準備できたす。 ただし、独自の目的でコンテナ化が必芁な堎合は、Linuxアップストリヌムコンテナが最適な遞択肢です。カヌネルの珟圚のバヌゞョンを心配するだけです。



たた、特に耇雑な技術的問題の線集に協力しおくれたAndrey Wagin avaginにも感謝したす。



敬具パベル・オディンツォフ

CTO FastVPS LLC



All Articles