複数のアプリを実行するサーバーをセットアップしようとしています。ほとんどが内部ですが、Redmineのようなオープンソースプロジェクトの場合もあります。それらはすべて、ヘッドレスブラウザで実行されるRails/Rubyアプリ/テストスクリプトになります。本質的に、私は内部でHerokuのような環境をセットアップしようとしており、これらの実行中のプロセス間で何らかのプロセス分離を望んでいました。
私は最初にchrootjailに出くわし、次にLXCについて学びました。 LXCは、プレーンなchrootjailをより適切に制御できるようです。 nginxフロントエンドがあり、隔離されたコンテナーでwebserverアプリプロセス(thin/mongrel/webrick)を実行したいと思います。通常、ローカルIPアドレスでこれらのプロセスを開始し、nginxプロキシを使用します。これを行うための最良の方法は何ですか?人々はコンテナに静的なブリッジIPを設定し、nginxがそれを指し示していますか?コンテナ内で実行されているWebサーバーが外部のホストにのみアクセス可能であることを確認するにはどうすればよいですか?
LXCに関するドキュメントは少しまばらです。いくつかの良いチュートリアルやHOWTOへのポインタをいただければ幸いです。私のターゲット展開環境はLucid 64ビットボックスです。
追伸私はLinuxの第一人者ではありません。だから、優しくしてください。
自分のIPが192.168.1.1、ゲートウェイが192.168.1.254、ネットワークが192.168.1.0/24であると仮定しましょう。
/ etc/network/interfaces fileのように、ホストマシンにブリッジインターフェイスを作成する必要があります
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254
bridge_ports eth0
bridge_stp off
bridge_fd 3
bridge_hello 1
bridge_maxage 5
そして、LXCに基本的なUbuntuをインストールします。
apt-get install lxc vlan bridge-utils python-software-properties screen
mkdir /lxc
debootstrap oeniric /lxc/ubuntu
chroot ubuntu
locale-gen en_US.UTF-8
apt-get update
apt-get install lxcguest ssh
passwd
rm /etc/mtab
ln -s /proc/mounts /etc/mtab
exit
ファイルを作成する/ lxc/ubuntu.configコンテンツを含む
lxc.utsname = ubuntu
lxc.tty = 8
lxc.rootfs = /lxc/ubuntu
lxc.mount = /lxc/ubuntu.fstab
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.mtu = 1500
lxc.network.ipv4 = 192.168.1.10/24
/ lxc/ubuntu.fstab with
none /lxc/ubuntu/dev/pts devpts defaults 0 0
none /lxc/ubuntu/proc proc defaults 0 0
none /lxc/ubuntu/sys sysfs defaults 0 0
none /lxc/ubuntu/run tmpfs defaults 0 0
追加/ lxc/ubuntu/etc/rc.local
route add default gw 192.168.1.254
編集/ lxc/ubuntu/etc/resolv.cont必要に応じて。
次に、でマシンを作成できます
lxc-create -f /lxc/ubuntu.config -n ubuntu
それから始めます
lxc-start -n ubuntu
または停止
lxc-stop -n ubuntu
または最後に破壊する
lxc-destroy -n ubuntu
新しい仮想マシンはIP 192.168.1.10を持ち、ネットワーク上でアクセス可能になります。
コンテナに外部IPアドレスを与えたくない、またはできない場合:
LXCのDebian Wikiページ は、ホストマシンでNATを使用してそれを実現する2つのバリエーションについて言及しています。私は libvirt でアプローチを使用しています。これまでのところ問題はありません。
私はそれがUbuntuの下でどのようになっているのかわかりませんが、おそらくそこにはそれほど大きな違いはありません。
Wikiページは良い情報源のように思えるかもしれませんが、メンテナ自身は、ファイルを参照する必要があると言っています/usr/share/doc/lxc/README.Debian
最新情報。