OpenvswitchでVPS
Upcoming SlideShare
Loading in...5
×
 

OpenvswitchでVPS

on

  • 6,555 views

2012/4/7のLT資料です。

2012/4/7のLT資料です。

Statistics

Views

Total Views
6,555
Views on SlideShare
4,392
Embed Views
2,163

Actions

Likes
5
Downloads
72
Comments
0

4 Embeds 2,163

http://d.hatena.ne.jp 2152
http://webcache.googleusercontent.com 5
http://us-w1.rockmelt.com 3
https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

OpenvswitchでVPS OpenvswitchでVPS Presentation Transcript

  • KVM&Open vswitchでVPSを作ってみる Twitter @mamesan
  • 自己紹介某NIに勤務していました主にC社のRouterやSwitchなどを使ってお客様ネットワークの設計構築してました。Twitter @ mamesan
  • VPSってなに?rootがもらえるレンタルサーバーです。       さんなどがサービスしていますOSも結構選べてすぐ使える!
  • 某社さんは言っていた ハイパーバイザーはKVM 仮想スイッチはOpen vSwtich OSS!家で再現できるかも? 作ってみよう!
  • インストールOpen vSwtichをもってくる VM VM VM VMhttp://openvswitch.org/ TAP TAP TAP TAP Open vSwitch RPMないけどSPECあります。 NIC rpmbuildすれば管理も楽! まだ作成途中ですがWikiもあります http://www57.atwiki.jp/openvswitch/
  • 仮想サーバへの仮想のNICアサイン qemu-kvmで普通にVMを作ります。 作成するときにVlanをアサインしてください/usr/libexec/qemu-kvm -daemonize -M rhel6.0.0 -cpu qemu64 -enable-kvm -m 2048 -smp1,sockets=1,cores=1,threads=1 -name Centos01 -rtc base=utc -cdrom CentOS-6.2-x86_64-bin-DVD1.iso -hda vm0001.img -boot order=cd -netnic,vlan=101,macaddr=52:54:00:00:01:01,model=virtio,name=nc1 -nettap,vlan=101,ifname=port_Centos01_1,script=/etc/ovs-ifup-br0,downscript=/etc/ovs-ifdown-br0 -monitor telnet::10001,server,nowait -vnc :1 -k ja -vga cirrus -serial pty -parallel none -monitor pty この状態でovsにTAPが作成され、VMに仮想NICが アサインされます。ただし、ovsにはVLANがア サインされていません。
  • 仮想NICへのVLANアサイン ovs-vsctlコマンドでTAPにVLANをアサインします/usr/bin/ovs-vsctl set port port_Centos01_1 tag=101 確認コマンドovs-vsctl show69589346-879f-4ff5-b69d-d9b3453c8531 Bridge "br0" Port "port_Centos01_1" tag: 101 Interface "port_Centos01_1" Port "eth0" Interface "eth0" Port "br0" Interface "br0" type: internal注意: TAP名は自由に決められますが「-」や「*」など使用不可の文字があります。
  • 仮想OSでできること仮想OSはrootが使える。ってことは? IPアドレスやMACアドレスの変更は自由 vrrpdなどのプログラムも実行したい放題 これはまずい!
  • 仮想スイッチの要件IPアドレスやMACアドレスなりすまし対策 ユーザーに払い出したアドレス以外は通 信させない通信プログラム対策 vrrpdやospfdなどはトラブルのもとになる ので通信させない
  • フィルタの作成 OVS内蔵のOpenFlowコントローラを利用 ovs-ofctlコマンドでフローを作成ovs-ofctl add-flow br0 in_port=2,priority=0,actions=dropovs-ofctl add-flow br0 in_port=2,priority=0,nw_src=224.0.0.0/4,actions=dropovs-ofctl add-flow br0in_port=2,dl_src=52:54:00:00:01:01,priority=100,ip,nw_src=192.0.2.1,actions=normalovs-ofctl add-flow br0in_port=2,dl_src=52:54:00:00:01:01,priority=100,arp,nw_src=192.0.2.1,actions=normal注意: in_port=の数字は可変です。仮想ポート(TAP)ごとに1から順に採番されますovs-ofctl show で   確認できます。 : Priorityを入れないとFlowは登録されますが、効きませんでした
  • 確認コマンド Flowテーブルの確認 ovs-ofctl dump-flows br0ovs-ofctl dump-flows br0NXST_FLOW reply (xid=0x4): cookie=0x0, duration=65.37s, table=0, n_packets=17, n_bytes=1266, priority=0,in_port=2actions=drop cookie=0x0, duration=65.363s, table=0, n_packets=4, n_bytes=240,priority=100,arp,in_port=2,dl_src=52:54:00:00:01:01,nw_src=10.0.1.1 actions=NORMAL cookie=0x0, duration=65.365s, table=0, n_packets=11, n_bytes=1098,priority=100,ip,in_port=2,dl_src=52:54:00:00:01:01,nw_src=10.0.1.1 actions=NORMAL cookie=0x0, duration=65.367s, table=0, n_packets=0, n_bytes=0,priority=0,ip,in_port=2,nw_dst=224.0.0.0/4 actions=drop cookie=0x0, duration=93343.255s, table=0, n_packets=186, n_bytes=16490, priority=0actions=NORMAL
  • 家VPS構成 ルーター 10.0.1.0/24∼10.0.10.0/24 NIC Open vSwitch KVM NIC 192.168.1.0/24 管理用スイッチ
  • デモ OSを立ち上げてとりあえず通信 IPアドレスを変更してみる MACアドレスを変更してみる
  • はまったこと物理NICに出ていくときにエラーググッても出てこない変なエラー!NICドライバの相性?でした。Intelにしたら解決!HP NIC・・・qemuのvlanとOVSのvlanは両方設定qemuでVM作ったあとに、OVSにもちゃんとVLANの割り当てが必要。
  • 今後の予定WEB画面からVMを作成/削除できるようにする PHPとDBで作成中複数のOVS間でトンネルを作成し、L3経由のL2通信をさせるOVSのFlow管理がめんどうになりそうなので、コントローラを利用する