|
OVS介绍 什么是OpenVSwich?OpenvSwich:开放虚拟交换标准,是一种基于开源Apache2.0许可证的多层软件交换机,专门管理多租赁云计算网络环境,支持KVM、Xen等虚拟化技术。
: v5 W7 P$ ~$ Y; r支持以下功能:
* X* x% k" Q, h( ?2 x6 n/ w6 l* |8 o) s4 X2 s" f6 ^) e0 D
# F2 p7 f4 s5 ^5 d
1.支持标准802.1Q VLAN模块的Trunk和access端口模式;& t: b. h' f% L, N* q" {9 X. M' {
; }$ v0 X7 x8 R& R3 V* Z$ y2 P
$ P0 a' [+ E" `2 E N
2.QoS(Quality of Service)配置,及管理;
: T9 ]! G/ `6 Q% W" B
6 n/ n. M( }3 }2 L( ^$ p0 _4 b3 \) k( E" i2 K% @, N' N- r
3.支持OpenFlow协议;# P# C" W+ b4 D/ n9 l: b
& H' w- E4 g8 e
* W. O: n! h( _( s# c6 P! s: d/ ^4.支持GRE、VXLAN、STT和LISP隧道;
' K2 c$ h v; X a) N$ z0 F" }# x
4 a+ J2 C3 ^1 j5.具有C和Python接口配置数据库;6 Q( X5 q. ^9 c4 p
% y: i9 j. ]. V2 ?0 E$ R: a# _, M8 r! [5 n8 X: f* C
6.支持内核态和用户态的转发引擎设置;5 b: N" a/ s$ u! k c- Q6 e
0 }. P+ k- t3 R/ a C
" S. {, \$ B! Q* P! Z7.支持流量控制及监控。' D$ c* r- \" V; [1 M5 {3 [7 Z# @0 N
* |7 l/ I, j+ v M2 w, V
9 Q& {( r L9 a3 p3 u: J u2 v3 |
主要组成部分:ovs-vswitchd 一个实现交换机的守护程序+ _. a" W; C: F! t% i
1 L, ^, T& \1 e: l2 _$ m o
4 \" }3 \+ ?7 b9 }ovsdb-server 一个轻量级数据库,
: U5 D3 Z- j! w) s# H6 J1 V+ Q/ Q5 u7 |# I
f7 G0 F* Z5 a) y6 h0 M- C# A9 h( novs-vswitchd查询以获取其配置
. F# R( {8 ?; s( K! d' w4 o2 \* k9 G' r& i% E. E _
8 C, a. `( b$ B
ovs-dpctl 用于配置交换机的内核模块工具) B, v' ~/ Y- i0 U. \& J J
% i; L2 F5 }; @% e3 L8 t' V! f
# R- X1 m! I0 H! K( x
ovs-vsctl 用于查看和更新o# m/ t4 S5 v6 U) B& v
7 h8 C- I, n5 W2 A! C8 v2 p7 P6 I: a' j& F/ o
vs-vswitchd的配置工具) Y# D( o, p% m, @' F1 E3 v
0 g+ e: |$ z0 x) Y9 x3 T. @8 X+ Z
4 g) L {9 u4 y1 U8 ^5 `ovs-appctl 一个向运行OVS守护程序发送命令的工具还提供了openflow的工具:
% z" m9 v2 }2 `+ P$ k4 D4 Y( l; K8 f6 v: c2 D4 Y
+ u* b9 a1 t& C" `. D6 M, u" Jovs-ofctl 用于查看和控制OpenFlow交换机和控制器ovs-pki 用于创建和管理公钥ovs-tcpundump 解析openflow消息0 J$ m! @. _5 Y. {- ^4 j
4 [8 \* ^+ w f 安装前可以使用命令docker network rm 删除无关的网络 安装部署OVS并建立GRE隧道 节点1:192.168.100.128 容器网段:172.168.1.0/24 节点2:192.168.100.129 容器网段:172.168.2.0/24 修改容器的默认网段需要修改配置文件 不能是172.168.1.0/24 - R, I+ E! ?7 ?+ W
安装OVS apt-get install openvswitch-switch bridge-utils4 m/ M+ E- O7 f
安装完成会以进程的方式启动两个进程一个虚拟交换机一个轻量级数据库 * Z* S8 [2 A! N! _4 K
创建网桥并激活 ovs-vsctl add-br br0ip link set dev br0 up9 a: R% c8 n8 p. ^7 s/ Z* P. y8 I
.将gre0虚拟接口加入网桥br0,并设置接口类型和对端IP地址(远程IP指定对端) ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.129
! ], K6 f0 y X" W 添加docker0网桥到OVS网桥br0 brctl addif docker0 br04 e6 @& j8 E% K0 K3 U( q
查看网桥信息 ovs-vsctl show0 P/ Q5 O/ l+ y# } V
& S6 ~& W9 _+ b$ i" B# _3 oc0cdc0b1-5a93-5a3e-aaf7-6096abc32a8d ( Y9 e& a2 \# U0 U& n( a3 r/ q; Z3 d
+ t+ {7 G( D5 u$ u/ r
7 K0 m* p% \7 j3 X" B Bridge "br0"
: H5 a: e6 Y/ o/ j* V
6 X( R+ T. s( I9 n& y
0 P. }% C9 T) w$ _1 B; g0 l& S Port "br0" : M2 y6 _+ Z$ O' F$ j7 c% e
8 m5 G$ M7 s' ?' G; J
5 o9 s) i' C* P: s6 ? o2 [
Interface "br0" 9 o g# Y3 L F: Q. z$ K
/ S( b: C6 B d
' `" ~- p8 }( [" _* Y1 D type: internal & V% T) w% Z: f" }9 F; }
7 u5 m9 M) Y6 S: M3 q$ e9 y8 u) W, d t
9 A/ e$ u [ i# ?
Port "gre0"
7 @9 o% j# ~: i# u* A3 y. V- a A5 H% s5 \1 W6 \1 J
7 i! ^' I# \) ]; a) w) i" k
Interface "gre0"
( w3 \0 a6 e2 R$ }3 a; U
) n$ @8 i, q8 f
: q+ E+ ]6 ?9 C3 M type: gre 3 A6 B4 {* ]/ y( U: y! a
" e4 s% B* u' c% h( i% J) m" h9 J) J" L0 c3 |) F9 I
options: {remote_ip="192.168.100.129"} 2 I, H9 C8 h* C" p
: I0 f/ Q8 p# X& O3 z& {8 y8 e& R/ l
0 r7 _" N9 A& c: s3 w O$ Bovs_version: "2.9.0"
6 X8 y+ G8 p. y4 j$ ^: Q( [" _7 B% s2 C
在节点2执行操作 apt-get install openvswitch-switch bridge-utils % m& _4 l [/ ]6 i8 u
+ w) T: s1 K2 n) d$ @3 t c! |* ?
' R; M: o5 P- s: q) J. X. @
ps -ef|grep open
! `4 o- W! i' p8 d$ O$ b& L6 `; l/ B) q2 w* Y' c {; ^
: J" O C* O7 Jovs-vsctl add-br br00 Q5 u! D$ |# I( n- y
9 P0 g7 |3 ]9 J! S: Z; [
5 [& F3 a* a1 [ip link set dev br0 up, T6 ?) o: n+ Y
" {( A! z% B; n. k+ p" C# G+ ^' K/ I6 i; [
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.128
% @5 G0 B7 [6 A5 Y! Z1 W1 w9 r6 T( i) k
1 ~4 Q4 w+ i0 e: n' \ _0 Hbrctl addif docker0 br01 v7 L$ r7 t* G C2 t2 m
2 e: `( D( m' I, P" g. b$ e( V% Z5 g) K/ {) s$ J
ovs-vsctl show# M; w7 d! Q U9 R5 s5 {, u, {
) y$ J8 P8 g D' [. g x* G% V6 X; d3 P; D. A6 L o( c3 i1 J- z
添加静态路由两个节点均操作 ip route add 172.168.0.0/16 dev docker05 T. X# t1 L/ u5 J. l: {
创建容器测试互通 docker run -it busybox( M8 q) n5 _5 k' L) R5 r5 ]$ m
其中节点1的ip为172.168.1.2 节点2的ip为172.168.2.2 测试是相通的 |