Archipelをインストールして使用して仮想マシンを管理する


OS Linuxのグラフィカルモードで仮想マシンを作成および管理する便利な方法を共有したいと思います。
Archipelは、グラフィカルインターフェイスを使用して仮想マシンとハイパーバイザーを管理するためのスケーラブルなソリューションです。 Archipelを使用すると、単一サーバー上の複数の仮想マシンと、異なるデータセンターの多数のサーバーにある数百の仮想マシンの両方を便利に管理できます。
Archipelは、サブシステム間の交換システムとしてXMPPプロトコルを使用します。 詳細については、 archipelproject.orgプロジェクトのWebサイトをご覧ください。

Archipelは非常にシンプルなアプリケーションであり、インストールには実行するだけで十分です。
$ easy_install archipel-agent && archipel-initinstall 

しかし、すべてが機能するためには、いくつかの予備設定を行う必要があります。
Archipelには、インストールおよび実行中のXMPPサーバー(ejabberd)と、Archipel Agent(UI)をホストするWebサーバーが必要です。

Ubuntu 12.04 LTSの単一サーバーバージョンにArchipelをインストールします。この場合、ejabberd、nginx、および仮想マシンは同じサーバーに配置されます。 より深刻なプロジェクトでは、これらすべてを異なるサーバーに分散できます。

XMPPをインストールして構成する

mod_admin_extraおよびejabberd_xmlrpcモジュールを有効にして、2.1.6以上のejabberdバージョンをインストールする必要があります(オプション)。
リポジトリからejabberdをインストールします。
 $ aptitude install ejabberd 

mod_admin_extraモジュールは既にパッケージに含まれているため、個別にインストールする必要はありません。

アーキペルが機能するようにejabberdを構成します。

デフォルトでは、debian / Ubuntuでは、ejabberd設定は単純な「チャットサーバー」用に調整されており、本格的なXMPPサーバーが必要なタスクにはあまり適していません。
動作するには、正しいFQDN(完全修飾ドメイン名)が必要です。 これ以上のレーキを回避するために、ejabberdを設定してホスト名と一致させる前にインストールすることを強くお勧めします。
例として、 archipel.example.com FQDNを使用します。 インストール時に、このアドレスをサーバーのアドレスに置き換えてください。
 echo archipel.example.com > /etc/hostname hostname -b -F /etc/hostname 

また、アドレスに応じて/ etc / hostsを変更することを忘れないでください。
サーバーとコンピューターから指定されたアドレスでサーバーにアクセスできることを確認してください。
 ping archipel.example.com 

ejabberd構成ファイルのコピーを保存します
 mv /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd.cfg.orig 

ejabberd.cfgファイル自体は、次の形式に縮小されます。
非表示のテキスト
 %%% %%% ejabberd configuration file %%% %%% Archipel Sample Configuration %%% ======================= %%% OVERRIDE STORED OPTIONS %% loglevel: Verbosity of log files generated by ejabberd. {loglevel, 3}. %%% ================ %%% SERVED HOSTNAMES %% CHANGE FQDN to your FQDN {hosts, ["FQDN"]}. %%% =============== %%% LISTENING PORTS {listen, [ %% If you have compiled the ejabberd-xmlrpc, uncomment the following line %% {4560, ejabberd_xmlrpc, []}, {5222, ejabberd_c2s, [ {access, c2s}, starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}, {max_stanza_size, 65536000} ]}, {5269, ejabberd_s2s_in, [ {max_stanza_size, 65536000} ]}, {5280, ejabberd_http, [ http_bind, http_poll, web_admin ]}, %% Make a SSL version of the BOSH service {5281, ejabberd_http, [ http_bind, http_poll, tls,{certfile, "/etc/ejabberd/ejabberd.pem"} ]} ]}. %%% =============== %%% S2S {route_subdomains, s2s}. {s2s_use_starttls, true}. {s2s_default_policy, allow}. {s2s_certfile, "/etc/ejabberd/ejabberd.pem"}. %%% ============== %%% AUTHENTICATION {auth_method, internal}. %%% =============== %%% TRAFFIC SHAPERS {shaper, normal, {maxrate, 1000}}. {shaper, fast, {maxrate, 50000}}. %%% ==================== %%% ACCESS CONTROL LISTS %% CHANGE FQDN to your FQDN {acl, admin, {user, "admin", "FQDN"}}. {acl, local, {user_regexp, ""}}. %% if you HAVE NOT compiled ejabberd-xmlrpc module, you %% Need to declare all your hypervisors as ejabberd admin %% The hypervisor JID is defined in archipel.conf. By default it %% it is hypervisor@FQDN {acl, admin, {user, "hypervisor", "FQDN"}}. %% {acl, admin, {user, "hypervisor-x", "FQDN"}}. %% {acl, admin, {user, "hypervisor-n", "FQDN"}}. %%% ============ %%% ACCESS RULES {access, max_user_sessions, [{10, all}]}. {access, local, [{allow, local}]}. {access, c2s, [{deny, blocked}, {allow, all}]}. {access, c2s_shaper, [{none, admin}, {none, all}]}. {access, s2s_shaper, [{fast, all}]}. {access, announce, [{allow, admin}]}. {access, configure, [{allow, admin}]}. {access, muc_admin, [{allow, admin}]}. {access, muc, [{allow, all}]}. {access, muc_create, [{allow, local}]}. {access, pubsub_createnode, [{allow, all}]}. %%% ================ %%% DEFAULT LANGUAGE {language, "en"}. %%% ======= %%% REGISTRATION {access, register, [{allow, all}]}. {registration_timeout, infinity}. %%% ======= %%% MODULES {modules, [ {mod_adhoc, []}, {mod_announce, [{access, announce}]}, % requires mod_adhoc {mod_caps, []}, {mod_configure,[]}, {mod_disco, []}, {mod_http_bind,[ {max_inactivity, 480} % timeout value for the BOSH, usefull for a large number of VM ]}, {mod_irc, []}, {mod_last, []}, {mod_muc, [ {access, muc}, {access_create, muc_create}, {access_persistent, muc_create}, {access_admin, muc_admin} ]}, {mod_offline, []}, {mod_privacy, []}, {mod_private, []}, {mod_pubsub, [ % requires mod_caps {access_createnode, pubsub_createnode}, {ignore_pep_from_offline, true}, {last_item_cache, false}, {plugins, ["flat", "hometree", "pep"]}, {max_items_node, 1000} ]}, {mod_register, [ {access, register} ]}, {mod_roster, []}, {mod_shared_roster,[]}, {mod_time, []}, {mod_vcard, []}, {mod_version, []}, {mod_admin_extra, []} ]}. 


ejabberd.cfgファイルで、すべてのFQDNエントリをサーバーアドレスに変更します
 sed –i 's/FQDN/archipel.example.com/' /etc/ejabberd/ejabberd.cfg 

ejabberd用の新しい自己署名証明書を作成します。 共通名リクエストには必ずFQDNを含めてください。
 openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout /etc/ejabberd/privkey.pem -out /etc/ejabberd/ejabberd.pem openssl rsa -in /etc/ejabberd/privkey.pem -out /etc/ejabberd/privkey.pem cat /etc/ejabberd/privkey.pem >> /etc/ejabberd/ejabberd.pem rm /etc/ejabberd/privkey.pem 

その後、ejabberdを開始します
 service ejabberd start 


ejabberdが起動しない場合は、実行中のプロセスのリストでビームプロセスを確認してください。 必要に応じて、このプロセスを強制終了します。
ejabberdの最初の起動後にホスト名を変更すると、エラーも発生します。 この場合、/ var / lib / ejabberd /ディレクトリをクリアして、ejabbedサービスを再起動する必要があります。

ejabberdctlを使用して正常性を確認できます。
 $ ejabberdctl status The node ejabberd@archipel is started with status: started ejabberd 2.1.10 is running in that node 

管理者アカウントを作成します(管理者名を使用することが望ましい):
 $ ejabberdctl register admin archipel.example.com yourpassword 

ejabberdの構成が完了し、Archipelエージェントをインストールする準備が整いました

アーキペルエージェント。

Archipelエージェントの操作は、管理する仮想化ツールとハイパーバイザーがなければ意味がありません。
動作するには、次のものが必要です。


依存関係をインストールします。
 aptitude install python-libvirt libvirt-bin libvirt0 python-imaging python-numpy qemu-utils python-pip qemu-kvm python-sqlalchemy-ext 

そして、エージェント自身:
 easy_install archipel-agent archipel-initinstall 

pubsubノードを作成します。
 archipel-tagnode --jid=admin@archipel.example.com --password=YOURPASSWORD --create archipel-rolesnode --jid=admin@archipel.example.com --password=YOURPASSWORD --create archipel-adminaccounts --jid=admin@archipel.example.com --password=YOURPASSWORD --create 

ここで、adminとYOURPASSWORDは、管理者アカウントの作成時に入力したデータに置き換える必要があります。
ファイル/etc/archipel/archipel.confを確認する必要があります。特にxmpp_server行に注意してください。これはFQDNと一致する必要があります。
エージェントを実行してみてください。
 /etc/init.d/archipel start 

起動に失敗した場合、 runarchipelを使用してエージェントを手動で起動できるため、エラーが表示されます。
エージェントログはファイル/var/log/archipel/archipel.log保存されます
起動が成功した場合、エージェントは接続されたjabberユーザーのリストに追加されます。
 $ ejabberdctl connected_users archipel.example.com@archipel.example.com/archipel.example.com 

正しい動作を確認するには、高度なテストを実行できます。
 archipel-testxmppserver --jid=admin@FQDN --password=YOURPASSWORD 

xmlrpcモジュールがインストールされていない場合、8番目のテストは引き続き失敗します。 これは以降の作業には影響しません。

クライアントのインストール。

Archipelクライアントは、すべてJavascriptで記述されています。 動作させるには、php、python、java、データベースなどのサーバー言語は必要ありません。 アーカイブを解凍し、Webサーバーフォルダーに配置するだけです。
app.archipelproject.orgで入手可能な公開バージョンのクライアントを使用することもできます。

たとえば、nginxをインストールし、サーバーにファイルを配置します。 nginxの代わりに、任意のhttpサーバーが存在でき、エージェントと同じサーバーに配置する必要はありません。

 # aptitude install nginx cd /usr/share/nginx/www/ wget http://nightlies.archipelproject.org/latest-archipel-client.tar.gz tar zxf latest-archipel-client.tar.gz 


これで、ブラウザーでArchipelクライアントを開くことができます。 archipel.example.com/Archipel
このページには次が表示されます。

Jabber IDとして、admin @ archipel.example.comおよび管理者パスワードを入力します。
すべての場所でarchipel.example.comをサーバーアドレスに置き換えることを忘れないでください!!!
ログイン後、仮想マシンの作成を開始できます。

ゲストOSとしてWindows Server 2008R2をインストールします

たとえば、Windows Server 2008 R2で仮想マシンを作成してみましょう。
まず、ハイパーバイザーアカウントを連絡先リストに追加する必要があります。

追加後、エージェントを選択すると、次のサーバーステータスと負荷スケジュールがリストに表示されます。

新しい仮想マシンを作成するには、目的のエージェントを選択し、「仮想マシン」アイテムに移動して、下部にある「+」ボタンを押します。 表示されるウィンドウで、データを入力します。 フィールドは情報を提供するものであり、マシン名を指定しない場合は不要です-マシン名は自動的に生成されます。 仮想マシンアカウントを作成した後、それを認証するように求められます。 許可を与えることをお勧めします。

その後、連絡先リストで新しい仮想マシンを選択して、構成を続行できます。
設定では、RAMのサイズ(定義>基本>メモリ)、プロセッサー数(定義>基本>仮想CPU)、起動順序(定義>基本>起動)を指定できます。 cd / dvd仮想ディスク(定義>仮想メディア)、仮想ネットワーク(定義>仮想Nics)、ディスク(ディスク)などを追加します。 スナップショットを作成し、仮想コンソールを介してコンピューターに接続することもできます。
仮想ネットワーク設定は、エージェントの[ネットワーク]メニューにあります。
設定を変更した後、保存するには、[検証]ボタンをクリックします。

テストサーバーを起動するには、Natタイプの新しいネットワークを追加します。この場合、仮想マシンはホストIPアドレスでオンラインになります。 仮想マシンに個別のIPを割り当てる場合は、ブリッジモードを使用できます。

ネットワークを開始することを忘れないでください(ネットワークを選択し、リストの下部にあるチェックマークボタンをクリックしてください)
システムディスクを追加

すべてのディスクとイメージは、ハイパーバイザーコンピューターの/ vm /フォルダーに保存されます。
まず、Windowsサーバーとvirtioドライバーを/ vm / iso / isoフォルダーに追加します( alt.fedoraproject.org/pub/alt/virtio-win/latest/images/binから入手できます)
[定義]> [仮想メディア]で、次のドライブを接続します。
  1. ドライブの種類:ディスク、ソースの種類:ファイル、ソース:「作成したディスク」、バス:virtio、ターゲット:vda
  2. ドライブタイプ:cdrom、ソースタイプ:ファイル、ソース:ディストリビューション付きiso、バス:ide、ターゲット:hdc
  3. ドライブタイプ:cdrom、ソースタイプ:ファイル、ソース:virtioを使用したiso、バス: usb 、ターゲット:hde

IDEチャネルが1つしかサポートされていないため、2番目のCDROMにはUSBを使用しています。
Virtual Nicsで、ネットワークカードを作成します。
タイプ:ネットワーク、ソース:natを使用して作成されたネットワークの名前、モデル:virtio

その後、仮想マシンを起動して(Controls> Start)、VNC Consoleに接続できます


Windows 2008 R2はvirtioについて何も知らないため、2つ目のcdromをドライバーに接続し、それらをダウンロードできるようになりました。
ドライバーのリストで、Red Hat VirtIO SCSI Controllerを選択します。ドライバーをロードすると、Windowsをインストールできるシステムディスクが表示されます。

それ以上のインストールは通常どおりです。 インストール後、virtioドライブからさらに2つのドライバーを追加することを忘れないでください:ネットワークとバルーン(メモリを変更する必要があります)

ポートマッピングまたはvpnのインストールと構成を使用して仮想マシンのサービスへのアクセスを提供することは残りますが、これは他の記事のトピックです。

Source: https://habr.com/ru/post/J191764/


All Articles