Open VZ

56
High-Performance Virtualization www.shanon.co.jp id: ふふふ fujya

Transcript of Open VZ

Page 1: Open VZ

       ~ High-Performance Virtualization ~

www.shanon.co.jp

id: ふじゃ fujya

Page 2: Open VZ

2Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

自己紹介

• id:fujya (twitter/hatena/mixi/gree で使えます ) [email protected]

• Shanon という会社で働いてます• インフラエンジニア暦3年

linux/centos/monit/syslog-ng/cacti/apache/qmail/postfix/postgres/perl/bash/openvz \glusterfs/drbd/heartbeat/samba/nfs/pxe/kick-start/windows(?)/network/server/HW

and more…

Page 3: Open VZ

3Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

略歴

• 1984年:新潟県新発田市というところで生まれる

   幼 /小 /中と健やかに成長

• 2000年:高校入学。コンピュータに興味を持つ• 200 3 年:千葉の大学に入学。コンピュータの講義をた

くさん受け、この頃からインフラへの興味が高まる• 200 7 年:ギリギリ卒業。株式会社シャノン入社後イン

フラエンジニアとして働き始める

• 2009年:8月に結婚しました

Page 4: Open VZ

4Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

目次

• OpenVZ 概要• 他仮想化との違い• 運用中に出くわしたトラブル集• Twitter で集めてた質疑に応答• まとめ

Page 5: Open VZ

5Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OpenVZ とは

• Linux カーネルをベースに開発された OS レベルの仮想化ソフト

• GPL v2

• 商用版として Parallels 社 ( 旧 SWsoft) の「 Virtuozzo 」がある

– 多くのホスティング業者が VPS サービスを提供している

Page 6: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

仮想化の種類

Page 7: Open VZ

7Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OS レベルの仮想化ってなんぞ?

• カーネルは1つ。その上に複数 OS を稼動させる• 他仮想化よりも軽量• 仮想レイヤのオーバヘッドが少ない• OpenVZ の場合、仮想化できるのは Linux のみ

– SUSE/CentOS/Fedora/debian etc...

Page 8: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

結論から言うと

OpenVZ はカーネルは一つ

だから

でも自由度が低い

Page 9: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OpenVZ の特徴

• 稼動中のコンテナに対してのリソース管理が可能– CPU

– メモリ– Disk

• 仮想化による CPU のコストは 1-2% と低い• 各コンテナ毎にファイルシステム , プロセス , ネットワーク

が独立している• デバイスファイルへはアクセス制限されている• Fair CPU scheduler

• Fair I/O scheduler

• live migration 機能

Page 10: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Fujya が OpenVZ を選んだ理由

抱えていた課題

1:電源容量の削減をしたい

2:今動いてる弱小サーバをパワーアップしたい

3:サーバ単位でバージョン管理したい

4:気軽に開発環境 /本番環境を増やしたい

Page 11: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

とある4 GB つんだ OpenVZ サーバのコンテナ数[root@st-virtual ~]# vzlist CTID NPROC STATUS IP_ADDR HOSTNAME 1212 25 running 192.168.1.10 1212.CT 1214 10 running 192.168.1.41 1214.CT 1220 33 running 192.168.1.3 1220.CT 1231 19 running 192.168.1.4 1231.CT 1232 27 running 192.168.1.9 1232.CT 1233 12 running 192.168.1.20 1233.CT 2001 19 running 192.168.1.25 2001.CT 2020 21 running 192.168.1.51 2020.CT 2021 22 running 192.168.1.52 2021.CT 5050 36 running 192.168.1.200 5050.CT 5051 36 running 192.168.1.197 5051.CT 6001 28 running - 6001.CT 6002 7 running 192.168.1.29 6002.CT 6003 17 running 192.168.1.30 6003.CT 7001 21 running 192.168.1.34 7001.CT 8001 29 running 192.168.1.36 8001.CT 8002 29 running 192.168.1.37 8002.CT 9001 18 running 192.168.1.50 9001.CT[root@st-virtual ~]# vzlist | grep –v VEID | wc -l18

Page 12: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

他仮想化との違い メリット /デメリット

Page 13: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OpenVZ とハイパーバイザの違い

Dom0256/512MB

256/512MB 128/512MB 384/512MB

物理メモリ合計2 GB 使用量

残量

DomU 01

DomU 03

DomU 02

Page 14: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OpenVZ とハイパーバイザの違い

ホスト1024(256+256+128+384)/2048MB

256/2048MB 128/2048MB 384/2048MB

物理メモリ合計2 GB 使用量

残量

CTID 101

CTID103

CTID 102

Page 15: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

クイックインストールガイド

1. Linux インストール2. OpenVZ リポジトリの設定

3. OpenVZ カーネルのインストール

4. カーネルパラメータを OpenVZ 用に数行修正5. ユーティリティパッケージのインストール6. ブートローダーの設定 -> 再起動

# cd /etc/yum.repos.d# wget http://download.openvz.org/openvz.repo# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

# cd /etc/yum.repos.d# yum install openvz-kernel

Page 16: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

コンテナの立ち上げ

1. テンプレートを作成 or Download

2. テンプレートを指定してサーバの立ち上げ

# vzctl create 1003 –ostemplate centos-4-i386-default –config sample \ --hostname example.com

http://wiki.openvz.org/Download/template/metadata

Page 17: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

コンテナの設定

1. vzctl コマンドを用いて各リソースを設定1. CPU

2. メモリ

3. Disk

4. ネットワーク

5. Hostname

6. Nameserver

7. users password

etc…

# vzctl set 1003 –cpulimit 1000 –privvmpages $((256*128)) –diskspace 1G \ --hotname hbstudy4.test. –ipadd 192.168.100.100 –nameserver 10.8.15.1 \ --userpasswd root:hbstudy4 \ --save

Page 18: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

コンテナの起動と停止とか

1. vzctl コマンド…起動!

2. 停止

3. 削除

# vzctl start 1001

# vzctl stop 1001

# vzctl destroy 1001

Page 19: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

各種 VZ コマンド

vzcalc – コンテナのリソース利用状況を出力vzcfgvalidate – コンテナの設定ファイルのチェックvzcpucheck – マシンの cpu パワーを数値化vzlist – コンテナリストを出力vzmemcheck – コンテナのメモリ設定を一覧で出力vzmigtate – live migration を実行vzpid – 実際の PID をコンテナの PID に変換して出力vzsplit – サンプルコンテナ設定ファイルを作成vzdump – コンテナのバックアップを実施vzyum – ホストサーバからコンテナに yum コマンドを実行                             

     他にもたくさん

Page 20: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

運用中に出くわしたトラブル集             だワン

Page 21: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

第一話

memcahed が使えない!!!??

Cache 死亡フラグ

Page 22: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??    序章

待望の OpenVZ 本番導入の日

特に問題なくリリース作業は進んでいく

最終確認作業に入り間もなく問題なくリリース完了・・・・

             と、誰しも思っていたその時!?

Page 23: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??  序章

「なんか画像が出たり出なかったりするんすけど?」

・・・・・「ぇ ?」

Page 24: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!?? 調査

Memcached サーバの立ち上げ忘れかもしれない・・・忘れてない。

クライアントとサーバの memcached バージョン変えたから?

旧バージョンに戻しても現象は再発

あれ?サーバの設定を1台にしたら動く

    とりあえずオープンまで時間が無い。

     サーバ1台構成で OPEN

Page 25: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??  解答編

Memcached-client Memcached-server

eth0 eth0

0.006秒

OpenVZ リリース前の構成

物理サーバ A 物理サーバ B

Page 26: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??  解答編

eth0 eth0

vent0 vent0

Memcached-client Memcached-server

Vent0:0 Vent0:0

0.3秒

OpenVZ リリース後の構成

A  ホスト B  ホスト

コンテナ 102コンテナ 101

Page 27: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??  解答編

arp broadcast forward 0.3sec

Memcached client default timeout 0.25sec

eth0 eth0

vent0 vent0

Memcached-client Memcached-server

Vent0:0 Vent0:0

A  ホスト B  ホスト

コンテナ 101コンテナ 102

arp broadcast forward

Page 28: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Memcached が使えない!!!??  解決編解決方法:venet0 による arp brouadcast forward ×

br0 によるフレーム転送           ○

eth0 eth0

br0 br0

Memcached-client Memcached-server

eth0 eth0

A  ホスト B  ホスト

0.006秒

コンテナ 101コンテナ 102

Page 29: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

第二話

                   届かない e-mail

Page 30: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    はじめ

memcached の問題も解決し、OpenVZの運用が順調に進んでいる・・・

  が ある日の事

Page 31: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    苦情編

「メール遅れない時あるんだけど・・・?何これ?」

ごめん、知らない。

Page 32: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    危機編

確認できた現象と再現環境

[user@CTID1001]$ free -m 合計 使用済 空き領域 共有領域 バッファ キャッシュMem: 4047 3530 517 0 0 0-/+ バッファ : 3530 517Swap: 0 0 0

privvmpages 1572864(6GB)

物理メモリ :4GB

Swap :2GB

[user@CTID1001]$ ps auxwwUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 1700 524 ? Ss Jul30 0:01 init [3] …..user 32390 0.0 74.1 3572043 3072000 ? S Sep04 0:00 perl-fcgi

Page 33: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    危機編

確認できた現象と再現環境

[user@CTID1001]$ free -m 合計 使用済 空き領域 共有領域 バッファ キャッシュMem: 4047 3530 517 0 0 0-/+ バッファ : 3530 517Swap: 0 0 0

privvmpages 1572864(6GB)

物理メモリ :4GB

Swap :2GB

[user@CTID1001]$ ps auxwwUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 1700 524 ? Ss Jul30 0:01 init [3] …..user 32390 0.0 74.1 3572043 3072000 ? S Sep04 0:00 perl-fcgiuser 32391 0.0 0.1 1203 756 ? S Sep04 0:00 \ _ - qmail-inject

Page 34: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    危機編

Linux はプロセスを fork するときは「 Copy on Write」方式を採用

Copy On Warite 1. perl-fcgi が fork

2.仮想アドレス空間を copy( qmail-inject にはリードオンリーで提供)

3. qmail-inject が MMU に write 要求

4.カーネルは新しい物理メモリを確保し割り当てる

Privvmpages は利用メモリ量だけでなく仮想アドレス空間の確保も実施

Page 35: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

届かない e-mail    解決?

privvmpages

6GB メモリを割り振っていた↓

33554432GB割り振る

再現しなくなった!問題解決!!(vmguarpages でメモリ確保量を保証することが出来る )

Page 36: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

第3話

NFS トラブル

Page 37: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル      序章

社内のファイルサーバを OpenVZ 化する計画が発足

新ファイルサーバを構築して、最後をして移行 rsync する計画

おおむね構築は完了。各種サービスの確認開始現行ファイルサーバ 新ファイルサーバ

( OpenVZ)

Page 38: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル      序章

NFS サーバスタート

# /etc/rc.d/init.d/nfs startNFS サービスを起動中  [OK]NFS クォータを起動中   [OK]NFS デーモンを起動中  [NG]NFS mount を起動中  [OK]

なんか失敗したんですが

Page 39: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル      調査編

google先生教えてください

カーネルの再構築が必要だよ

by

Page 40: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル      問合編

カーネル再構築なんて面倒

他に良い手が無いの? Google先生

NFSD がダメなら UNFS 使えば良いじゃない?

by

Page 41: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル       what UNFS?

UNFS とは• ユーザスペースで動く NFS(通常はカーネルサポート)• NFSv3 の仕様に沿って実装• パフォーマンスは通常よりも少し遅い。でも気にならないほど

• Linux/Soralis でも動くことが確認されている• Connectathon の NFS test suite の基本的で一般的なテスト

に合格

http://

www.connectathon.org/nfstests.html

Page 42: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

NFS トラブル       UNFS で解決

実際にコンテナに UNFS をインストール

Read/Write はもちろん問題なく可能

Bonnie++ のパフォーマンステストも正常に終了

I/O の速度も 100Mbps 環境で 80~ 90Mbps は出ることを確認

UNFS で問題回避

Page 43: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Twitter で集めてた質疑に応答

質疑を見落としてました。。。

Page 44: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

OpenVZ応用編

• No downTime backup

• P2V(Physical to Virtual)

• Excellent Redundancy system(DRBD + HeartBeat + OpenVZ)

• Live migration

Page 45: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

No downTime backup

LVM2 の機能を利用したスナップショットバックアップ

OpenVZ  サーバ

CTID101

(Running)

/vz (LVM2)

[root@openvz]# vzdump --dumpdir /vz/backup --snapshot 1001

CTID 1001 snapshot backup image

Page 46: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

P2V(Physical to Virtual)

[root@physical]# cat << EOL > /tmp/excludes.excl .bash_history/dev/*/mnt/*/tmp/*/proc/*/sys/*/usr/src/* EOL[root@physical]# tar cjpf /tmp/mysystem.tar.bz2 / -X /tmp/excludes.excl [root@physical]# scp /tmp/mysystem.tar.bz2 user@openvz:/tmp

1.Physical image の作成

Page 47: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

P2V(Physical to Virtual)

[root@openvz]# mkdir /vz/root/1001 /vz/private/1001[root@openvz]# cat /etc/vz/conf/ve-vps.basic.conf-sample > /etc/vz/conf/1001.conf[root@openvz]# vzctl set 1001 ipadd x.x.x.x --save[root@openvz]# mv /tmp/mysystem.tar.bz2 /vz/private/1001[root@openvz]# tar xjpf /vz/private/1001/mysystem.tar.bz2[root@openvz]# sed -i -e '/getty/d' /vz/private/1001/etc/inittab[root@openvz]# rm -f /vz/private/1001/etc/mtab[root@openvz]# ln -s /proc/mounts /vz/private/1001/etc/mtab[root@openvz]# cp /vz/private/1001/etc/fstab /vz/private/1001/etc/fstab.old[root@openvz]# grep devpts /vz/private/1001/etc/fstab.old > /vz/private/1001/etc/fstab[root@openvz]# mknod --mode 666 /vz/private/1001/dev/ptmx c 5 2[root@openvz]# mkdir /vz/private/1001/dev/pts[root@openvz]# cp -a /dev/ttyp* /dev/ptyp* /vz/private/1001/dev/[root@openvz]# /sbin/MAKEDEV -d /vz/private/1001/dev ttyp ptyp[root@openvz]# rm -f /vz/private/1001/dev/null[root@openvz]# mknod --mode 666 /vz/private/1001/dev/null c 1 3[root@openvz]# mknod --mode 444 /vz/private/1001/dev/urandom c 1 9[root@openvz]# mkdir /vz/private/1001/proc

2.Openvz server settings

Page 48: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

P2V(Physical to Virtual)

[root@openvz]# vzctl start 1001

3. Container start

P2V 完了!!

Page 49: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Excellent Redundancy system

DRBD で /vz をsync

OpenVZ  サーバ( A)

OpenVZ  サーバ( B)

/vz /vz

CTID101

(Running)

CTID101

(stopped)

HB で相互監視

Page 50: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Excellent Redundancy system

DRBD で /vz をsync

OpenVZ  サーバ( A)

OpenVZ  サーバ( B)

/vz /vz

CTID101

(death)

CTID101

(stopped)

Down!!

HB で相互監視

Page 51: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Excellent Redundancy system

OpenVZ  サーバ( A)

OpenVZ  サーバ( B)

/vz /vz

CTID101

(death)

CTID101

(Running)

Down!!

HB で相互監視

サーバ( A )の Down を確認後

サーバ( B) の CTID1001を起動

Page 52: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Demo する予定でした。。。

Live migration

Page 53: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Live migration

OpenVZ  サーバ( A)

OpenVZ  サーバ( B)

/vz /vz

CTID101

(Running)

メモリーダンプ

ファイルシステムを移動

Page 54: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

Demo しますね

Live migration

OpenVZ  サーバ( A)

OpenVZ  サーバ( B)

/vz /vz

CTID101

(Running)

メモリーダンプを復元

リソースの配分し稼動

Page 55: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

まとめ

1. High Performance

2. 同時にたくさんコンテナを稼動させられる

3. 柔軟なリソース管理

4. Checkpointing and live migration support

Page 56: Open VZ

Strictly ConfidentialCopyright © SHANON Inc. All rights reserved. www.shanon.co.jp

ご清聴ありがとうございました