仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

Ubuntu MAASでプロキシーサーバー「approx」を使う

今回はMAASの話をしたいと思います。 MaaS (Mobility as a Service)のほうではなくて、MAAS (Metal as a Service)のほうです。

f:id:virtualtech:20191114145641p:plain
MAAS Logo

MAASはCanonicalが開発する、簡単に言うとサーバーの管理とOSのプロビジョニングを行うことができるツールです。 公式サイトの説明に従ってセットアップするだけですぐ使えます。

「お、良いな使ってみよう!」と思った方に一つだけ注意事項があります。MAASではDHCPサーバーを内部で利用するため、普段利用とは別のネットワーク(もしくはVLAN)でお試しください。「誤家庭じゃないし、VLANを使えるスイッチとかないよ」という方はルーターモードを使える無線LANのルーターでも使えばなんとかなると思います。

MAASはregiondとrackdの2つのコンポーネントによって構成されており、その中でDNS、DHCP、IPMI、PXE、Squid Proxyなどのサービスが稼働しています。 MAASのサーバーでDHCPサーバーを定義して、ノードを同じネットワークに接続することで、OSのプロビジョニングが可能です。

MAASのデフォルトの設定はMAASサーバーをプロキシーサーバーとして使うようにデプロイしたノードに設定してくれますが、デフォルトの設定のまま運用するとMAASのサーバーにパッケージキャッシュが保管されることになり、ストレージの消費とキャッシュの読み書きによる他のサービスのパフォーマンスの低下が懸念されます。

そこで、MAASには外部プロキシーを使うための設定が用意されています。その外部プロキシーとしてapproxを使う方法をご紹介します。

JujuおよびMAASなどをオフライン環境下で使う方法はWorking Offlineのページにまとまっています。この中のコンテンツの一つにApt Proxyがあり、どういったプロキシーサーバーが使えるか書かれています。ここにはapproxが書かれていませんが、一応使えるので今回取り上げたいと思います。

approxのインストール

Ubuntuにはいくつかのプロキシーサーバーがdebパッケージとして用意されてます。 approxをインストールするには次のように行います。

$ sudo apt update
$ sudo apt install approx

approxの設定

設定ファイルにキャッシュ対象を記述します(正確にはエイリアスを定義します)。 例ではviで開いていますが、お好みのエディタで開いてください。

$ sudo vi /etc/approx/approx.conf
...

ubuntu      http://archive.ubuntu.com/ubuntu/
daily       http://images.maas.io/ephemeral-v3/daily/

設定方法についてはマニュアルこちらの情報を参考にどうぞ。

設定後、一旦次のコマンドを実行します。

$ sudo systemctl restart approx.socket

approxサーバーのIPアドレスが 192.168.1.100 の場合、ブラウザーで「 http://192.168.1.100:9999/ 」にアクセスすると、次のようなページが表示されます。

f:id:virtualtech:20191114144434p:plain
approx Serverの設定、バージョン画面

先程の画面にもリンクが貼られていますが、approxサーバーのIPアドレスが 192.168.1.100 の場合は次のURLでそれぞれアクセスできます。

  • http://192.168.1.100:9999/ubuntu/
  • http://192.168.1.100:9999/daily/

approxプロキシーを使う

このApt Proxyを普通にインストールしたUbuntu Serverで使うには、 Ubuntu 16.04などでは /etc/apt/apt.conf 、Ubuntu 18.04以降では /etc/apt/apt.conf.d/90cloud-init-aptproxy などに設定することでaptコマンド実行時に利用できます。

Acquire::http::Proxy "http://192.168.1.100:9999/";

なお、httpsソースはサポートされていませんので、例えばDocker CEリポジトリーにアクセスしたい場合は次のような設定を追記してください。この設定をした場合はhttpsではプロキシーを経由しません。

Acquire::https::proxy "DIRECT"

approxプロキシーをMAASで使う

approxプロキシーをMAASで使うには2つの設定を変更する必要があります。

MAAS Proxyの設定変更

一つは「Proxyの設定」です。この設定はデフォルトは「MAAS Built-in」が設定されておりMAAS自らがプロキシーとして動いています。これをExternalに変更し、Mirror URLに「http://192.168.1.100:9999/」(IPアドレスは置き換えてください)のように設定します。

f:id:virtualtech:20191114144141p:plain
Proxy設定例

MAAS イメージソースの変更

もう一つは「イメージの設定」です。ソースとしてカスタムを選び、Mirror URLに「http://192.168.1.100:9999/daily/」(IPアドレスは置き換えてください)のように設定します。ちなみにここの設定を変更しないと「http://images.maas.io/ephemeral-v3/daily/ にアクセスできません」と、MAASが怒り出します。

f:id:virtualtech:20191114144226p:plain
イメージ設定例

MAAS側の設定は以上です。 MAASでノードを選択してデプロイを実行するとプロキシーが使われます。プロキシーキャッシュがない場合は、外部にファイルを取りに行ってくれます。

approxプロキシーサーバー上で「sudo tcpdump -Q in port not ssh」を実行したあと、デプロイを実行してみてください。また、「tree /var/cache/approx」を実行するとプロキシーキャッシュのディレクトリーを一覧表示できます。

approxプロキシーの使い勝手

aptコマンドを実行したときにキャッシュが存在すれば、パッケージのダウンロードが速くなって良い感じです。より快適にするには、aptのミラーMAASのルートイメージのミラーをローカルにとって、approxプロキシーもそれに合わせると更に良い感じになります。