大家好,今天来介绍openstack网络配置的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
Openstack概述 、 部署安装环境 、 部署Openstack 、 Openstack操作基础
案例1:配置yum仓库
案例2:测试时间服务器
案例3:配置yum仓库
案例4:检查基础环境
案例5:部署Openstack
案例6:网络管理
案例7:登录openstack
1 案例1:配高码置yum仓库
1.1 问题
本案例要求配置基本环境:
配置三台虚拟机
2CPU,6G 内存,50G 硬盘
2CPU,4.5G 内存,100G 硬盘
配置静态IP ifcfg-eth0
openstack : 192.168.1.10
nova: 192.168.1.11, 192.168.1.12
配置主机名 /etc/hosts,能够相互 ping 通
配置 dns 服务器 /etc/resolv.conf
1.2 方案
此实验的整体方案需要三台机器,openstack作为主节点,nova01 和 nova02作为额外节点,真机做为DNS转发和NTP的服务器(这里不再在表-1中体现),提供域名解析和时间同步服务,具体情况如表-1所示:
表-1
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:准备三台虚拟机
[student@room9pc01 images]$base-vm openstack nova01 nova02
[student@room9pc01 images]$virsh start openstack
[student@room9pc01 images]$virsh start nova01
[student@room9pc01 images]$virsh start nova02
2)opensatck主机扩容为50G
[student@room9pc01 images]$ virsh blockresize--path /var/lib/libvirt/images/openstack.img--size 100G openstack
[student@room9pc01 images]$ virsh console openstack
[root@localhost~]#/usr/bin/growpart /dev/vda1
[root@localhost~]#/usr/sbin/xfs_growfs /
[root@localhost~]# df-h
Filesystem Size Used Avail Use%Mounted on
/dev/vda1 50G 914M 50G2%/
3)nova01 和 nova02 主机扩容为100G(以nova01为例)
[student@room9pc01 images]$ virsh blockresize--path /var/lib/libvirt/images/nova01.img--size 50G nova01
重新定义'/var/lib/libvirt/images/nova01.img'块设备大小
[root@localhost~]#/usr/bin/growpart /dev/vda1
[root@localhost~]#/usr/或铅sbin/xfs_growfs /
[root@localhost~]# df-h
Filesystem Size Used Avail Use%Mounted on
/dev/vda1 戚团哪 100G 917M 100G1%/
4)三台主机配置静态ip(以一台为例)
openstack:192.168.1.10
nova01: 192.168.1.11
nova02: 192.168.1.12
[root@localhost~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
PERSISTENT_DHCLIENT="yes"
IPADDR=192.168.1.10
NEMASK=255.255.255.0
GATEWAY=192.168.1.254
5)三台主机修改主机名,配置/etc/hosts,和/etc/resolv.conf文件(以一台为例)
[root@localhost~]# hostname openstack
[root@localhost~]# echo openstack>/etc/hostname
[root@localhost~]#vim /etc/hosts
192.168.1.10openstack
192.168.1.11nova01
192.168.1.12nova02
[root@localhost~]#vim /etc/resolv.conf//去掉search开头的行
;generatedby /usr/sbin/dhclient-script
nameserver192.168.1.254
6)修改三台主机的内存(openstack6G,nova01 和nova02 4G)
[student@room9pc01~]$ virsh edit openstack
...
6588282
6588282
...
[student@room9pc01~]$ virsh edit nova01
...
4588282
4588282
...
[student@room9pc01~]$ virsh start openstack
域 openstack 已开始
[student@room9pc01~]$ virsh start nova01
域 nova01 已开始
[student@room9pc01~]$ virsh start nova02
域 nova02 已开始
2 案例2:测试时间服务器
2.1 问题
本案例要求掌握时间服务的配置:
修改 openstack,nova01,nova02 的时间服务器
重启服务后验证配置
2.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:修改openstack,nova01 和 nova02 的时间服务器(以一台为例)
[root@openstack~]#vim /etc/chrony.conf
...
server192.168.1.254iburst
[root@openstack~]# systemctl restart chronyd
步骤二:验证
[root@openstack~]# chronyc sources-v
...
\
MSName/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^*gateway36376-93ns[+903ns]+/-26ms
步骤三:两台虚拟机配置静态ip
注意:两台主机同样操作,改一下ip即可(以openstack.tedu.cn为例)
[root@localhost~]# echo openstack.tedu.cn>/etc/hostname
[root@localhost~]# hostname openstack.tedu.cn
//另外一台主机改名为nova.tedu.cn,配置ip为1.20
[root@openstack~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.10"
PREFIX=24
GATEWAY=192.168.1.254
[root@openstack~]# systemctl restart network
3 案例3:配置yum仓库
3.1 问题
本案例要求配置yum仓库:
配置 yum 源,软件仓库一共 4 个
3.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:三台主机配置yum源(以一台主机为例,共10670个软件包)
[student@room9pc01~]$cd /linux-soft/04/openstack/
[student@room9pc01 openstack]$ ls
cirros.qcow2 RHEL7-extras.iso RHEL7OSP-10.iso small.qcow2
[student@room9pc01 openstack]$mkdir /var/ftp/RHEL7-extras
[student@room9pc01 openstack]$mkdir /var/ftp/RHEL7OSP-10
[student@room9pc01 openstack]$ mount RHEL7-extras.iso /var/ftp/RHEL7-extras/
mount:/dev/loop1 写保护,将以只读方式挂载
[student@room9pc01 openstack]$ mount RHEL7OSP-10.iso /var/ftp/RHEL7OSP-10/
mount:/dev/loop2 写保护,将以只读方式挂载
[root@openstack~]#vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever-Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=1
gpgcheck=1
[RHEL7-extras]
name=RHEL7-extras
baseurl="ftp://192.168.1.254/RHEL7-extras"
enabled=1
gpgcheck=0
[RHEL7OSP-package]
name=RHEL7OSP-package
baseurl="ftp://192.168.1.254/RHEL7OSP-10/rhel-7-server-openstack-10-rpms"
enabled=1
gpgcheck=0
[RHEL7OSP-devtools]
name=RHEL7OSP-devtools
baseurl="ftp://192.168.1.254/RHEL7OSP-10/rhel-7-server-openstack-10-devtools-rpms"
enabled=1
gpgcheck=0
[root@openstack~]#scp /etc/yum.repos.d/local.repo192.168.1.11:/etc/yum.repos.d/
root@192.168.1.11's password:
local.repo 100% 490 484.4KB/s 00:00
[root@openstack ~]# scp /etc/yum.repos.d/local.repo 192.168.1.12:/etc/yum.repos.d/
root@192.168.1.12's password:
local.repo
4 案例4:检查基础环境
4.1 问题
本案例要求准备基础环境,为安装openstack做准备:
安装额外的软件包
是否卸载firewalld 和 NetworkManager
检查配置主机网络参数(静态IP)
主机名必须能够相互 ping 通
检查配置主机yum源(4个,10670)
依赖软件包是否安装
检查NTP服务器是否可用
检查 /etc/resolv.conf 不能有 search 开头的行
4.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:检查基础环境
1)安装额外软件包(三台机器操作,这里以一台为例)
[root@openstack yum.repos.d]# yum install-y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
2)是否卸载firewalld 和 NetworkManager
[root@openstack~]# rpm-qagrep NetworkManager*
[root@openstack~]# rpm-qagrep firewalld*
3)检查配置主机网络参数
[root@openstack~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
PERSISTENT_DHCLIENT="yes"
IPADDR=192.168.1.10
NEMASK=255.255.255.0
GATEWAY=192.168.1.254
4)验证主机名是否互通
[root@openstack~]# ping openstack
...
64bytes fromopenstack(192.168.1.10):icmp_seq=1ttl=255time=0.023ms
64bytes fromopenstack(192.168.1.10):icmp_seq=2ttl=255time=0.027ms
...
[root@openstack~]# ping nova01
PINGnova01(192.168.1.11)56(84)bytes of data.
64bytes fromnova01(192.168.1.11):icmp_seq=1ttl=255time=0.139ms
...
[root@openstack~]# ping nova02
PINGnova02(192.168.1.12)56(84)bytes of data.
64bytes fromnova02(192.168.1.12):icmp_seq=1ttl=255time=0.251ms
...
5)检查配置主机yum源
[root@openstack~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识 源名称 状态
RHEL7-extras RHEL7-extras76
RHEL7OSP-devtools RHEL7OSP-devtools3
RHEL7OSP-package RHEL7OSP-package680
local_repo CentOS-7-Base9,911
repolist:10,670
6)检查时间同步是否可用
[root@openstack~]# chronyc sources-v
210Numberof sources=1
....
\
MSName/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^*gateway3737728+31us[+89us]+/-25ms
[root@openstack~]#
7)检查/etc/resolv.conf 不能有 search 开头的行
[root@openstack~]#cat /etc/resolv.conf
;generatedby /usr/sbin/dhclient-script
nameserver192.168.1.254
5 案例5:部署Openstack
5.1 问题
本案例要求通过packstack完成以下配置:
通过packstack部署Openstack
根据相关日志文件进行排错
5.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:安装packstack
[root@openstack~]# yum install-y openstack-packstack
[root@openstack~]# packstack--gen-answer-file answer.ini
//answer.ini与answer.txt是一样的,只是用vim打开answer.ini文件有颜色
Packstack changed given value to requiredvalue /root/.ssh/id_rsa.pub
[root@openstack~]# vim answer.ini
42CONFIG_SWIFT_INSTALL=n
45CONFIG_CEILOMETER_INSTALL=n//计费相关模块
49CONFIG_AODH_INSTALL=n//计费相关模块
53CONFIG_GNOCCHI_INSTALL=n//计费相关模块
75CONFIG_NTP_SERVERS=192.168.1.254//时间服务器的地址
98CONFIG_COMPUTE_HOSTS=192.168.1.11
102CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11
333CONFIG_KEYSTONE_ADMIN_PW=a//修改管理员的密码
840CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan//驱动类型
876CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5
//设置组播地址,最后一个随意不能为0和255,其他固定
910CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex//物理网桥的名称
921CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
//br-ex桥的名称与eth0连接,管理eth0,网桥与哪个物理网卡连接
1179CONFIG_PROVISION_DEMO=n//DEMO是否测试
[root@openstack~]# packstack--answer-file=answer.ini
Welcome to the Packstack setup utility
The installation log file is available at:/var/tmp/packstack/20190423-170603-b43g_i/openstack-setup.log
Installing:
Clean Up[DONE]
Discovering ip protocol version[DONE]
root@192.168.1.11's password:
root@192.168.1.10's password:
Setting up ssh keys
Installation completed successfully//出现这个为成功
6 案例6:网络管理
6.1 问题
本案例要求运用OVS完成以下配置:
查看外部OVS网桥及其端口
验证OVS配置
6.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:查看外部OVS网桥
1)查看br-ex网桥配置(br-ex为OVS网桥设备)
[root@openstack~]#cat /etc/sysconfig/network-scripts/ifcfg-br-ex
ONBOOT="yes"
NM_CONTROLLED="no"
IPADDR="192.168.1.10"
PREFIX=24
GATEWAY=192.168.1.254
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO="static"
TYPE=OVSBridge
2)查看eth0网卡配置(该网卡为OVS网桥的接口)
[root@openstack~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
3)验证OVS配置
[root@openstack~]# ovs-vsctl show
Bridge br-ex
Controller"tcp:127.0.0.1:6633"
is_connected:true
fail_mode:secure
Port br-ex
Interface br-ex
type:internal
Port phy-br-ex
Interface phy-br-ex
type:patch
options:{peer=int-br-ex}
Port"eth0"
Interface"eth0"
ovs_version:"2.5.0"
7 案例7:登录openstack
7.1 问题
本案例要求通过Horizon完成以下操作:
修改/etc/httpd/conf.d/15-horizon_vhost.conf 配置文件,使其可以成功登录openstack
7.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:浏览器访问openstack
1)浏览器访问
[root@openstack~]# firefox192.168.1.10//访问失败
2)需要改配置文件并重新加载
[root@openstack~]#
[root@openstack conf.d]# vi15-horizon_vhost.conf
35WSGIProcessGroup apache
36WSGIApplicationGroup%{GLOBAL}//添加这一行
[root@openstack conf.d]# apachectl graceful//重新载入配置文件
3)浏览器访问,出现页面,如图-6所示:
图-6
3)查看用户名和密码
[root@openstack conf.d]# cd
[root@openstack~]# ls
answer.ini keystonerc_admin//keystonerc_admin生成的文件,里面有用户名和密码
[root@openstack~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
exportOS_USERNAME=admin//用户名
exportOS_PASSWORD=a//密码
exportOS_AUTH_URL=http://192.168.1.10:5000/v2.0
exportPS1='[\u@\h \W(keystone_admin)]\$ '
exportOS_TENANT_NAME=admin
exportOS_REGION_NAME=RegionOne
4)在火狐浏览器中输入用户名和密码,登录后页面如图-7所示:
图-7
安装openstack可能会出现的错误以及排错方法
1)ntp时间不同步,如图-2所示:
图-2
解决办法:查看ntp时间服务器,是否出现*号,若没有,查看配置文件,配置ntp服务器步骤在案例3,可以参考
[root@room9pc01~]# chronyc sources-v//出现*号代表NTP时间可用
^*120.25.115.20261762-753us[-7003us]+/-24ms
[root@openstack~]# chronyc sources-v
^*192.168.1.25439377504+50us[-20us]+/-24ms
[root@nova~]# chronyc sources-v
^*192.168.1.25439377159-202us[-226us]+/-24ms
2)网桥名称写错,如图-3所示:
图-3
解决办法:检查配置文件
[root@openstack~]# vim answer.ini
...
921CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
//br-ex桥的名称与eth0连接,管理eth0,网桥与哪个物理网卡连接
...
3)若/root/.ssh/id_rsa.pub,提示password,同样是配置文件没有写对,如图-4所示:
图-4
4)yum源没有配置正确,如图-5所示:
图-5
解决办法:检查yum是否为10853个软件包,查看是否是yum源没有配置正确,之后安装oprnstack-dashboard
5)出现Cannot allocate memory,如图-6所示:
图-6
解决办法:
内存不足,重新启动主机
6)出现/usr/bin/systemctl start openvswith ... falied,说明是ssse3指令集的错误,如图-7所示:
图-7
解决办法:编辑openstack的xml文件,在里面添加
7)若出现 Could not prefetch... ‘openstack’。 如图-8所示:
图-8
配置文件里面有中文符号
9)访问openstack出错
图-9
没有修改Apache配置文件
4)创建名为myproject的项目
[root@openstack~]# source~/keystonerc_admin //初始化环境变量
[root@openstack~(keystone_admin)]# openstack project create myproject
+-------------+----------------------------------+
FieldValue
+-------------+----------------------------------+
descriptionNone
enabledTrue
idf73949e2701346328faf5c1272414cd0
namemyproject
+-------------+----------------------------------+
5)查看项目信息
[root@openstack~(keystone_admin)]# openstack project list
+----------------------------------+-----------+
IDName
+----------------------------------+-----------+
3fd5bffd734543d39cf742492273a47fservices
7f0b43274a9f4e149357fc8393ff2c68admin
f73949e2701346328faf5c1272414cd0myproject
+----------------------------------+-----------+
6)更新vcpu配额为30
[root@openstack~(keystone_admin)]# nova quota-update--cores30myproject
7)删除myproject
[root@openstack~(keystone_admin)]# openstack projectdeletemyproject
如何配置OpenStack网络以启用对OpenStack实例的访问
./openshit.sh startstoprestart
各(或者全部)Openstack组件进行启,停止,重启操作.
./openshit.sh installuninstalldownload
Openstack各组件进行 安装,卸载,载包 操作
./openshit.sh config
配置组建建立数据库, 原先配置文件config-backup文件夹按照间备份起,使用rollback.sh脚本便滚配置文件改
./openshit.sh clean
清除服务数据库, 若服务问题直接清掉数据库重新config
接我使用OpenShitUbuntu14.04部署OpenStack.几要求:
1. Ubuntu14.04区定要足够空间.OpenStack创建实例候使用区空间,空间够则创建实例.测试用Ubuntu14.04100G,足够使用.
2. 建议新装ubuntu区.装神马DevStack没装功堆垃圾留系统库再用OpenShit功意思.
说现始
1.安装git, 使用git载openshit
git clone
2.修改配置文件setting.conf.
面密码:数据库密码,服务密码.默认更改,改没.
改变网络配置.配置文件内IP值都设置称自模茄孝IP, 网卡设置自网卡(默认eth0).
3.配置文件旦稿修改完始安装
./openshit.sh --all install.
命令 问否需要配置软件源, 第使用openshit请选择y, 所命令写:
echo y ./openshit.sh --all install
4.段间安装完,请输入
./openshit.sh --all config
根据setting.conf值修改各组纳袭件配置文件及数据库配置.
5.完
运行source admin-env.sh; nova service-list 查看服务状态若都up安装功
浏览器内打 即看Openstack管理界面输入密码登陆
现OpenStack功部署Ubuntu14.04服务器.
功运行实例,我需要制作并传镜像, 配置网络,启实例.
制作ubuntu14 server 镜像
1. 制作镜像
qemu-img create -f qcow2 ubuntu.img 20G
kvm -cdrom ubuntu-14.04-server-amd64.iso -drive file=ubuntu.img,if=virtio,index=0 -boot d -net nic -net user
直接光盘安装ubuntu14-server 装行
2.传镜像
openshit目录 执行 source admin-env.sh
执行
glance image-create --name "ubuntu" --file ubunut.img --disk-format qcow2 --container-format bare --is-public True --progress
进度条快速滚,传完
3. 创建网络
openshit目录 执行 source admin-env.sh (前面执行用执行)
执行
nova network-create v-net --bridge br100 --multi-host T --fixed-range-v4 10.0.1.0/29
v-net网络名字 10.0.1.0/29 网段要配主机数量 要设置网段跟本网段,否则蛋疼超乎想象
执行
nova net-list
看刚才创建网络
4. 创建实例
web管理端 镜像 栏内 点 运行 即创建实例 (配刚才创建网络ip址)
点击控制台,通vnc看虚拟机屏幕
问题 虚拟机主机能互相ping通(需要关掉防火墙),访问外网,能哪没设置.
玩转 OpenStack(八1)Linux Bridge 实现 Neutron 网络之Local、Flat、VLAN、DHCP
Neutron 默认使用 ML2 作为 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin
计算节点和控制节点都需要在各自的 neutron.conf 中配置 core_plugin
然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechanism_drivers
mechanism_drivers 可以同时指定多个。这里只指定了一个。
查看 linuxbridge 进程
控制节点:
计算节点:
在 Linux Bridge 环境中,一个数据包从 Instance 发送到物理网卡会经过下面几个类型的设备:
对于每个 local network,ML2 linux-bridge 会创建一个 bridge,Instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 Instance 会连接到相同的 bridge,这样 Instance 之间就可以通讯了。
因为 local network 没有与物理网卡相连,所以 Instance 无法与宿主机之外的网络通信。
同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间是不通的。
ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini
type_drivers ML2 加载网络类型。
tenant_network_types 普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络。
tenant_network_types = vlan, local 意思是当没有 vlan 可创建时,使用 local。
检测 Neutron Agent 是否正常 管理员 --> 系统 --> 系统信息 --> 网络代理
从用户管理创建网络
创建网络 项目 --> 网络 --> 网络
填写网络名称
填写子网信息。 网关 IP 可以不用填写。默认为子网地址的第一个 IP。即:172.16.10.1
添加子网 IP 范围。
点击网络名称,进去相信信息,可以看到子网和端口信扰旦息等。
可以看到在端口中已经创建了一个 port,名为 “(c45b69e6-04ba)”,IP 为 172.16.10.2。迟晌连接设备为 "network:dhcp"。
打开控制节点终端,使用 brctl show 查看 linux bridge 的状态。
可以看到 bridge 设备 brqd2fd4378-9e 和 tap 设备 tapc45b69e6-04
创建 Instance 并选择刚刚创建的网络。
创建 Instance 成功后可以发现已经分配 IP 地码李锋址。
在底层中 Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 test。如下图
点进去可以看到详情
在宿主机上执行 brctl show 可以查看 bridge 的配置。
可以看到 bridge brqd2fd4378-9e 上连接了一个新的 tap 设备。
查看 Instance 信息。使用 virsh list 查看 Instance 运行中的列表。
使用 virsh edit 1 查看配置信息。
配置信息省略很多。重要的放在上面。
是 Instance 网卡的 MAC 地址
是 Instance 虚拟网卡信息
ping test1 的 IP 地址发现是可以 ping 通。
查看 brctl show
发现 brqd2fd4378-9e 中又计入进来一个 VIF,因为两个 VIF 挂载在同一个 Linux Bridge 上,所以可以通讯。
结构如下:
如果新分的 Instance 在计算节点中。不在控制节点。他们之间将不在互通。
因为 DHCP agent 在控制节点上运行,test2 在计算节点的 local 网络上,两者位于不同物理节点。由于 local 网络的流量只能局限在本节点之内,发送的请求无法到达计算节点。
上图 物理网卡 eth1 桥接到 brqXXXX,为 Instance 提供 flat 网络。
下图 创建多个 flat Network,就要准备多个物理机网卡。
在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 参数为 flat
:这里是指定普通用户使用 flat。因为 flat 网络与物理网卡一一对应。一般情况下租户网络不采用 flat。
flat_networks 定义一个 flat 网络,label 为 “default”
通过 physical_interface_mappings 指名 default 对应的物理网卡为 ens35
例如:对于 label 为 “default” 的 flat network,节点 A 可能使用 ens35,配置为:
而 B 节点则可以使用 ens33,配置为:
创建 flat 网络
绑定子网
查看 控制节点网络状态
Neutron 自动新建了 flat_net 对应的网桥 brq9e3013c8-93,以及 dhcp 的 tap 设备 tap50802894-1a。
此时 tap50802894-1a 和物理网卡 ens35 都已经连接到网桥 brq9e3013c8-93 上。
可以看到 Instance 的 tap 设备 tapc1241c3f-cb 已经连接到网桥
配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver
dnsmasq 是一个提供 DHCP 和 DNS 服务的开源软件。
在实现环境中使用 ps 命令可以查看到 dnsmasq 进程。
DHCP agent 会为每个 network 创建一个目录 /opt/stack/data/neutron/dhcp/xxxx 用于存放该 network 的 dnsmasq 配置文件。
在二层网络上,VLAN 可以将一个交换机分割成几个独立的虚拟交换机。
类似,在三层网络上,Linux Network Namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。
每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device等
Neutron 通过 dnsmasq 为每个 Network 提供单独的 DHCP 和路由服务。
使用 ip 查看所有 namespcae
使用 neutron 查看 net-list
查看某个 namespace 的详细配置
3 个 Instance 通过 tap 设备连接到名为 “vrqXXXX” 的 Linux Bridge。
在物理网卡 eth1 上创建 eth1.100 的 valn interface,eth1.100 连接到 brqXXXX。
这样,Instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。
如果在创建个 network vlan101,eth1 上就会相应的创建多个 vlan interface eht1.101 并连接新的 Linux Bridge “brqYYYY”。
配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 tenant_network_types 的值为 vlan
配置 vlan 的范围
意思是:配置定义了 lable 为 “default” 的 valn network,valn id 的范围是 3001~4000。这里配置的是普通用户使用的范围。
admin 可以使用 1~4096 的 valn network
再次指定 vlan network 与物理网卡的对应关系
配置子网
查看系统网桥
这里可以看到:
vlan100 对应的网桥为 brq2b85ebb9-a。
vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默认网卡名 ens 开始的。)
DHCP 的 tap 设备是 tapf85d61d8-c3。
在 计算节点查看 网桥信息
可以发现创建的 Instance 已经连接到 vlan100 对应的网桥 brq2b85ebb9-a 上。因为计算节点没有 DHCP 服务所以没有相应的 tap 设备。
另外 网桥的名字与控制节点是一样的,都是 brq2b85ebb9-a6,表示是在同一个 network 上。
下图是我创建 VLAN 后 两台 Instance 分别在控制节点和计算机点的网络图
此时两台 Instance 在同一 valn100 下。相互之间是可以 ping 通的。
如果在创建一个 vlan101。如果两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。
如下图两个 vlan
两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。
因为 vlan 在二层是隔离的。如果想要互通,只能在三层通过路由转发。
openstack neutron网络介绍
由于网络部分出现了许多得新名词。将从整体到分部细致讲解。
来源于网络得一张图
如图所示,连成了一条线。重要得如何实现互联,接下来以表象论证这张图。
最好将图放在一边,边看边对照图。
这里先介绍从虚拟机访问外网。端口A开始:
表现出来就是虚拟机有张网卡A。
查询此虚拟机得子网ip为 10.1.1.5,以及所在节点,记住这个节点。
通过子网ip查询到端口id为 b65c1085-a971-4333-82dc-57012e9be490
记住这个id
图中A与B互联,意味着A与B一定具有某种映射关系。
若没有此命令则安装: yum install -y bridge-utils
可以看到这个id对应的tap设备!
veth pair是什么?后面再介绍。
由图可知,端口B(qvbXXX)和端口C(tapXXX)在同一个linux网桥上。它们俩互通了。
端口D在ovs网桥上。C和D的互联是veth pair的特性。
由图可以看出,qvoXXX在ovs网桥上,qvb在linux网桥上。它们之间的互联是veth pair的特性,它们就像基散段一根导线的两端。
ovs查询命令:
这里可以看到3种网桥: br-int、br-tun、br-ex。这里有个印象就好。
仔细的查看一下,可以看到qvoXXX在br-int网桥上。
至此D端口也找到了
E、F端口通过ovs网桥自身连接。
ovs-vsctl show 可以看到两个patch类型的端口,用于连接br-int和br-tun。类似于veth pair。
ovs-vsctl show 可以在br-tun网桥上看到vxlan类型的端口,并注明本地ip和remote ip,通过此类型端口,将不同的物理环境互联,对于上层好似就一个网桥。再者br-tun网桥还与br-int互联,这意味,对于再上一层的应用,似乎只有一个br-int。
和【E】【F】相同。
此时携带源ip为子网的流量到达M端口,而L端口得网段为外网网段,因此M网段的流量此时无法直接进入L端口。借助router(网络命名空间),使用iptables,将M端口流量的源ip转换为外网网段。此时流量可进入L端口从而访问外网。(M与N之间连通性非网络对实现,而是ovs tap设备实现。网络对的一个明显特征为 ip a 可以看到@符号连接两个端口)
找到虚拟机所在搏誉租户的路由id
本机为 894699dc-bc60-4b5e-b471-e95afa20f1d7
根据路由id找到网络命名空间
在所有节点上执行如下命令,找到对应id的qrouter
ip netns
本环境为:qrouter-894699dc-bc60-4b5e-b471-e95afa20f1d7
在此网络命名空间的节点上执行(如下命令意义为进入网络命名空间):
此时已进入网络命名空间。
查看ip
可以看到qg和qr开头的网卡名称。qg为弹性ip地址组,qr为子网网关。此时在虚拟机所在节点上查询ovs网桥,可以在br-int看到与此同名的qg和qr端口。
由于是源地址转换,因此先路由再转换源ip(iptables规则)。
查看路由规则:
route -n
第一掘顷条可以看到外网的网关,通过qg网卡发送,规则正好匹配。
选好路由规则之后,进行更改源ip。
可以看到 neutron-l3-agent-float-snat(配置了弹性ip才会出现)、neutron-l3-agent-snat。因为neutron-l3-agent-float-snat优先级高于neutron-l3-agent-snat,如果没有配置弹性ip,则会将源ip改为该路由的外网ip;如果配置了弹性ip则会将源ip改为弹性ip。
总的来说,流量从qr出去绕了一圈(网络命名空间)改变了源ip又从qg进入,然后通过ovs patch进入br-ex。
br-ex如何与外网连接的呢?进入网络节点查看ovs网桥:
可以看到 br-ex与em3网卡互联。因此流量直接走em3出去。还记得你这张网卡是干嘛的吗?是那张不配置ip的物理网卡!
通过iptables的prerouting可以看出,在进入之前修改了目的弹性ip为子网ip,后经路由转发。另,网络命名空间可以通过arp发现子网ip与mac地址的对应关系。
lbaas,负载均衡
dhcp,dhcp服务。
通过前面说的br-tun 实现。如果没有单独划分网络,则使用管理网网段。若单独配置了tunnel网络,则br-tun里的网络使用tunnel网络。
br-tun 里定义了vxlan,并且指定了 local_ip、remote_ip。根据这两个ip以及路由信息,可以确定 br-tun 通过哪张网卡与外部通信。也是因此可以为tunnel配置专用网卡。
都是通过iptables实现。
防火墙:qrouter网络命名空间中得iptables实现。
安全组:虚拟机所在得宿主机得iptables实现。
可以看到防火墙规则。
可以看到对应端口id得安全组规则。
已经知道了qrouter 利用nat表实现弹性ip与子网ip之间的映射,但是如何从外部访问到qg网卡的?
这里做了一个简单的模拟操作:
https://www.jianshu.com/p/44e73910c241
dnsmasq 实现。
kolla-ansible 的dnsmasq日志相对路径参考:neutron/dnsmasq.log(可通过dnsmasq.conf 找到日志路径)
日志中可以看到dhcp的详细过程。过程参考如下:
文档参考:
https://docs.openstack.org/neutron/stein/admin/intro-basic-networking.html#dhcp
dhcp也通过网络命名空间实现,名称由网络id决定。dhcp可以拥有多个,通过neutron.conf 中 dhcp_agents_per_network 决定。
另:centos7虚拟机中的 /var/log/messages 也记录了dhcp相关操作。
network qos 可以理解为网络流量限制,官方名称:网络质量即服务
本环境通过openvswitch实现的qos。
如上图为设置的 带宽限制规则。
根据端口号查看流表,命令参考:
上图标记的104就为dscp mark 乘 4 的结果,乘4是一种规范。
https://docs.openstack.org/neutron/queens/admin/deploy-ovs.html
在OpenStack里怎样配置Neutron让虚拟机访问外网
OpenStack里虚机(或者叫instance)只有在分配floating IP后才能访问外网,那么需要怎样做配置才能达到目的呢看
1. 需要在网络节点上确定一个可以访问外网的物理网卡,这个网卡可以和管理网卡培携键是一个。这里我们假定外网网卡和管理网卡是独立的,且外网网卡的名字叫做eth2。
2. 添加一个新的bridge br-ex,并将eth2作为port绑定到br-ex
[plain] view plain copy
# ovs-vsctl add-br br-ex
# ovs-vsctl add-port br-ex eth2
3. 创建/etc/sysconfig/network-scripts/ifcfg-eth2文件,并输入如下内容:
[plain] view plain copy
TYPE=OVSPort
BOOTPROTO=none
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
DEVICE=eth2
ONBOOT=yes
4. 创建/etc/sysconfig/network-scripts/ifcfg-br-ex文件,并输入如配巧下内容:
[plain] view plain copy
TYPE=OVSBridge
BOOTPROTO=none
DEVICETYPE=ovs
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
5. 重新启动网络服务让配置生效
[plain] view plain copy
# systemctl restart network.service
6. 用具有admin role的用户在Openstack Controller节点创建外网(external network)和相应子网,这里的外网是所谓的provider network,是不允许普通权限的租户创建的,普通的租户只能创建租户网络。注意"--router:external=true"选项表示这是一个外网,网络类型选的是flat(如果外网是VLAN,就选VLAN),子网的CIDR是192.168.100.0/24。
[plain] view plain copy
# neutron net-create --provider:network_type flat --provider:physical_network default --router:external=true public
# neutron subnet-create public --name public_subnet --allocation-pool start=192.168.100.100,end=192.168.100.150 192.168.100.0/24
创建完成后显示结果如下:
7. 如果要让租户的虚机访问外网,还需要创建一个router,用普通租户用户创建router,命令如下:
[plain] view plain copy
# neutron router-create router01
8. 将租户的私有子网(private_sub)作为interface加入router01,并将外网(public)设置为网关:
[plain] view plain copy
# neutron router-interface-add router01 private_sub
# neutron router-gateway-set router01 public
9. 然后就可以为虚拟机分配floating IP了。分配完成后虚拟隐颂机就可以访问外网了。
[plain] view plain copy
# neutron floatingip-create public
# neutron floatingip-list
[plain] view plain copy
# neutron floatingip-associate e12a6c2b-fc5e-4448-a6bb-3047638b850e 164f410e-6961-422d-b256-0609bfe6e9ff
本文地址:https://gpu.xuandashi.com/71419.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!