web-dev-qa-db-ja.com

ubuntuでLinuxコンテナ(lxc)を実行してWebサーバープロセスを分離する(Ruby / thin)

複数のアプリを実行するサーバーをセットアップしようとしています。ほとんどが内部ですが、Redmineのようなオープンソースプロジェクトの場合もあります。それらはすべて、ヘッドレスブラウザで実行されるRails/Rubyアプリ/テストスクリプトになります。本質的に、私は内部でHerokuのような環境をセットアップしようとしており、これらの実行中のプロセス間で何らかのプロセス分離を望んでいました。

私は最初にchrootjailに出くわし、次にLXCについて学びました。 LXCは、プレーンなchrootjailをより適切に制御できるようです。 nginxフロントエンドがあり、隔離されたコンテナーでwebserverアプリプロセス(thin/mongrel/webrick)を実行したいと思います。通常、ローカルIPアドレスでこれらのプロセスを開始し、nginxプロキシを使用します。これを行うための最良の方法は何ですか?人々はコンテナに静的なブリッジIPを設定し、nginxがそれを指し示していますか?コンテナ内で実行されているWebサーバーが外部のホストにのみアクセス可能であることを確認するにはどうすればよいですか?

LXCに関するドキュメントは少しまばらです。いくつかの良いチュートリアルやHOWTOへのポインタをいただければ幸いです。私のターゲット展開環境はLucid 64ビットボックスです。

追伸私はLinuxの第一人者ではありません。だから、優しくしてください。

7
Vagmi Mudumbai

自分の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を持ち、ネットワーク上でアクセス可能になります。

13
Stone

コンテナに外部IPアドレスを与えたくない、またはできない場合:

LXCのDebian Wikiページ は、ホストマシンでNATを使用してそれを実現する2つのバリエーションについて言及しています。私は libvirt でアプローチを使用しています。これまでのところ問題はありません。

私はそれがUbuntuの下でどのようになっているのかわかりませんが、おそらくそこにはそれほど大きな違いはありません。

Wikiページは良い情報源のように思えるかもしれませんが、メンテナ自身は、ファイルを参照する必要があると言っています/usr/share/doc/lxc/README.Debian最新情報。

0
moschlar