在CentOS7上配置Open vSwitch和VXLAN
在CentOS7上配置Open vSwitch和VXLAN
环境
实验环境
主机环境
[yuwh@node0 ~]$ uname -a Linux node0 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [yuwh@node0 ~]$ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core)
Open vSwitch
安装Open vSwitch
[root@node0 ~]# yum -y install wget openssl-devel kernel-devel [root@node0 ~]# yum groupinstall "Development Tools" [root@node0 ~]# yum -y install wget openssl-devel kernel-devel [root@node0 ~]# yum groupinstall "Development Tools" [root@node0 ~]# adduser ovswitch [root@node0 ~]# su - ovswitch [ovswitch@node0 ~]$ wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz [ovswitch@node0 ~]$ tar xfz openvswitch-2.3.0.tar.gz [ovswitch@node0 ~]$ mkdir -p ~/rpmbuild/SOURCES [ovswitch@node0 ~]$ cp openvswitch-2.3.0.tar.gz ~/rpmbuild/SOURCES 去除Nicira提供的openvswitch-kmod依赖包,创建新的spec文件 [ovswitch@node0 ~]$ sed 's/openvswitch-kmod, //g' openvswitch-2.3.0/rhel/openvswitch.spec > openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec [ovswitch@node0 ~]$ rpmbuild -bb --without check ~/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec [ovswitch@node0 ~]$ exit [root@node0 ~]# yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm 安装完成,验证一下: [root@node0 ~]# rpm -qf `which ovs-vsctl` openvswitch-2.3.0-1.x86_64
启动Open vSwitch
SELinux会影响Open vSwitch的运行,比如报错:
error: /etc/openvswitch/conf.db: failed to lock lockfile (No such file or directory)原因是没有权限修改/etc/openvswitch的owner
如果环境允许可用关掉SELinux;想保持enabled需要做如下修改:
[root@node0 ~]# mkdir /etc/openvswitch [root@node0 ~]# semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?" [root@node0 ~]# restorecon -Rv /etc/openvswitch 启动服务: [root@node0 ~]# systemctl start openvswitch.service
查看结果:
[root@node0 ~]# systemctl -l status openvswitch.service
配置Open vSwitch
ovs-vsctl add-br ovsbr0
去掉NetworkManager
systemctl stop NetworkManager.service systemctl disable NetworkManager.service
改用network.services,修改/etc/sysconfig/network-scripts/下的配置文件
/etc/sysconfig/network-scripts/ifcfg-mgmt0
DEVICE=mgmt0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSIntPort OVS_BRIDGE=ovsbr0 USERCTL=no BOOTPROTO=none HOTPLUG=no IPADDR0=10.0.0.2 PREFIX0=23
/etc/sysconfig/network-scripts/ifcfg-ovsbr0
DEVICE=ovsbr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSBridge HOTPLUG=no USERCTL=no
/etc/sysconfig/network-scripts/ifcfg-enp2s0f0
TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=enp2s0f0 UUID=d81f76d3-7163-42d3-bc07-d936a8536d17 ONBOOT=yes IPADDR=192.168.3.4 PREFIX=23 GATEWAY=192.168.3.1 DNS1=8.8.8.8 DNS2=4.4.4.4 HWADDR=10:51:72:37:76:04 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes
虚拟机
配置网络
libvirt 默认会启用virbr0来作为虚拟机的网桥并启动DHCPD;删除该网桥,使用ovs bridge来替代:
virsh net-destroy default
vi /etc/libvirt/qemu/CentOS7.xml
<interface type='bridge'><mac address='52:54:00:18:16:99'/><source bridge='ovsbr0'/><virtualport type='openvswitch'><parameters interfaceid='9beb90bc-20a1-4937-901d-805dd6bba190'/></virtualport><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface>
或者通过virt-manager来配置
配置VXLAN
在ovsbr0中添加接口vxlan0
node0上的配置:注意remote_ip node1的ip:192.168.3.5。
ovs-vsctl add-port ovsbr0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=192.168.3.5
启动两个虚拟机后的配置:
[root@node0 samba]# ovs-vsctl show b15949b6-9d9f-4b14-9fd9-277d2b203376Bridge "ovsbr0"Port "mgmt0"Interface "mgmt0"type: internalPort "vnet0"Interface "vnet0"Port "vxlan0"Interface "vxlan0"type: vxlanoptions: {remote_ip="192.168.3.5"}Port "ovsbr0"Interface "ovsbr0"type: internalPort "vnet1"Interface "vnet1"ovs_version: "2.3.0" [root@node0 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever 2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000link/ether 10:51:72:37:76:04 brd ff:ff:ff:ff:ff:ffinet 192.168.3.4/23 brd 192.168.3.255 scope global enp2s0f0valid_lft forever preferred_lft foreverinet6 fe80::1251:72ff:fe37:7604/64 scope linkvalid_lft forever preferred_lft forever 8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWNlink/ether 02:32:3a:73:15:08 brd ff:ff:ff:ff:ff:ff //删掉了不相干部分 48: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWNlink/ether fe:45:84:ec:7c:43 brd ff:ff:ff:ff:ff:ffinet6 fe80::fc45:84ff:feec:7c43/64 scope linkvalid_lft forever preferred_lft forever 49: mgmt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWNlink/ether d6:c5:ed:c4:aa:45 brd ff:ff:ff:ff:ff:ffinet 10.0.0.2/23 brd 10.0.1.255 scope global mgmt0valid_lft forever preferred_lft foreverinet6 fe80::d4c5:edff:fec4:aa45/64 scope linkvalid_lft forever preferred_lft forever 51: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UNKNOWN qlen 500link/ether fe:54:00:13:04:d8 brd ff:ff:ff:ff:ff:ffinet6 fe80::fc54:ff:fe13:4d8/64 scope linkvalid_lft forever preferred_lft forever 52: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UNKNOWN qlen 500link/ether fe:54:00:18:16:99 brd ff:ff:ff:ff:ff:ffinet6 fe80::fc54:ff:fe18:1699/64 scope linkvalid_lft forever preferred_lft forever
测试
以上配置,只列出了node0的操作过程;node1作同样配置,ip不同而已。
node0内部vm间通信
vm1 ping vm2:
[root@node0_0 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 52:54:00:18:16:99 brd ff:ff:ff:ff:ff:ffinet 10.0.0.3/24 brd 10.0.0.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::5054:ff:fe18:1699/64 scope linkvalid_lft forever preferred_lft forever [root@node0_0 ~]# ping 10.0.0.4 PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data. 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.545 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.235 ms 64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.223 ms ^C --- 10.0.0.4 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.223/0.334/0.545/0.149 ms
wireshark抓包,物理网卡上没有对应的流量,vnet0上的包是普通的ICMP包
node0 vm和node1 vm通信
vm1 ping vm3:
[root@node0_0 ~]# ping 10.0.0.34 PING 10.0.0.34 (10.0.0.34) 56(84) bytes of data. 64 bytes from 10.0.0.34: icmp_seq=1 ttl=64 time=1.62 ms 64 bytes from 10.0.0.34: icmp_seq=2 ttl=64 time=0.383 ms ^C --- 10.0.0.34 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.383/1.003/1.623/0.620 ms
vnet0上抓到的报文:普通ICMP包
物理网卡上抓到的报文:vxlan封装的ICMP包 frame 18
vxlan格式
vxlan报文解码
用新版本wireshark(1.12.2)查看 frame 18
node0 vm和node1 ovsbr0管理口通信
[root@node0_0 ~]# ping 10.0.0.32 PING 10.0.0.32 (10.0.0.32) 56(84) bytes of data. 64 bytes from 10.0.0.32: icmp_seq=1 ttl=64 time=1.68 ms 64 bytes from 10.0.0.32: icmp_seq=2 ttl=64 time=0.422 ms 64 bytes from 10.0.0.32: icmp_seq=3 ttl=64 time=0.288 ms ^C --- 10.0.0.32 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.288/0.796/1.680/0.627 ms
参考:
https://n40lab.wordpress.com/2014/09/04/openvswitch-2-3-0-lts-and-centos-7/
http://networkstatic.net/configuring-vxlan-and-gre-tunnels-on-openvswitch/
http://www.astroarch.com/2014/06/rhev-upgrade-saga-installing-open-vswitch-on-rhel-7/
在CentOS7上配置Open vSwitch和VXLAN相关推荐
- myftpadmin+proftpd+mysql架设ftp服务器_[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota)...
有一些很古老的教程,一般都是走编译安装路线的,本文是教你不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击.利用 Proftpd 现成的配置以及设置好 ...
- Centos7上配置安装Squid代理(主动代理,与透明代理)
安装环境:Centos7,Windows7 centos7上安装好squid服务 centos7:172.16.0.100/24(nat),192.168.0.2/24(仅主机) windows:19 ...
- 在centos7上配置caffe所遇到的一些问题
之前在Ubuntu上配置过一次caffe,还算顺利,并没有遇到什么特别大的问题,但那是一台普通的台式机,并不能担负起跑数据的重担,于是换到了一台服务器上. 服务器上的系统是centoOS,之前并没有接 ...
- 在centos7上配置java环境
准备JDK 我们首先去官网下载JDK1.8 JDK官网地址 此次配置环境由于是在windows上下载的jdk,所以需要通过xshell工具传递我们的压缩包. centos连接xshell 首先 我们需 ...
- Centos7 上配置 java JDK1.8
1 . 下载java JDK1.8 https://www.oracle.com/technetwork/java/javase/archive-139210.html 允许许可协议,下载tar包 需 ...
- 在CentOS7上配置SVN
1.安装: 使用yum命令(要用root权限): # yum install subversion 测试安装是否成功: 2.建立版本库: 先建立一个svn目录,把版本库都放在该目录中: # mkdir ...
- 【云计算】CentOS7 上配置Openstack(单机)bug记录
教程 step7 yum-config-manager --enable Openstack-queens 然后下面也没有出什么安装过程,直接忽略过去了,还不知道是不是因为这步对后面造成了影响 ste ...
- centos7上配置开源镜像站之网易
一.查看外网是否通畅 配置网络yum源(需要保证外网开通,我这里是使用网易163提供开源镜像站) 二.下载repo文件 cd /etc/yum.repos.d wget http://mirrors. ...
- CentOS7上配置ELK
一.Elasticsearch 1,从Elastic下载包到本地后解压缩. 2,Elasticsearch不让从root用户启动,所以需要单独建个用户 1 2 useradd elastic chow ...
最新文章
- 服务器负载不高 响应慢_负载均衡有哪几大类别?
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...
- NAPI模式--中断和轮询的折中以及一个负载均衡的问题
- Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
- OpenCV中图像垂直拼接函数vconcat的使用
- Windows-Server下加强系统安全性系列之方案【八】
- oracle数据库IMP-00010错误解决
- 一些不错的sql语句
- gulp之gulp-uglify模块
- python输出名字和字数_Python字数和排名
- [笔记]ASCLL码表(48 “0”,65 “A”,97 “a”)2022.3.12
- 智能小车寻迹c语言程序,智能小车循迹记时测速程序
- 二维码自动生成器批量将表格整行数据制作二维码
- 计算机社团活动照片,电脑绘画兴趣小组活动记录表Word版
- 数学建模:整数规划—指派模型与匈牙利算法
- 电脑如何录制在线课程?-QVE屏幕录制
- 机器学习中常见的几种归一化方法以及原因
- L1-079 天梯赛的善良 (20 分) java
- altera CPLD通过nios在线升级
- python农历_Python如何实现阳历转阴历的方法分享
热门文章
- C++字符串完全指引之一 —— Win32 字符编码
- 整理下java六种单例模式
- Linux内存管理 (2)页表的映射过程
- 看一家公司发展得如何就看这家公司的财务部门
- 2017202110104-高级软件工程第二次作业个人项目之-四则运算生成程序
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [xx]
- gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
- android-解决 Android N 上 报错:android.os.FileUriExposedException
- Redis 为什么用跳表而不用平衡树?
- 实验 8 数组2 ok