openvswitch在centos freebsd centos

其实openvswitch在centos的问题并不复杂,但是又很多的朋友都不太了解freebsd centos,因此呢,今天小编就来为大家分享openvswitch在centos的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

OpenShift (OKD) 简介

OpenShift(OKD):云平台的创新力量

OpenShift,由红帽(Red Hat)主导的开源云平台,以其独特的PaaS(平台即服务)特性崭露头角。作为容器应用部署的前沿,它让开发者能在Kubernetes核心架构之上,加速应用的开发、部署和扩展,为企业的应用持续集成与交付提供了强大支持。

在OpenShift的广阔天地里,开发、测试、部署与运维全程自动化,无论是对容器管理(Docker)的需求,还是对Kubernetes容器编排的掌控,都一应俱全。它是首个在企业级环境中为Java开发者量身打造的PaaS平台,兼容JEE6、JBoss和Eclipse,以及Maven和Jenkins的自动化流程。

OpenShift的底层技术基石

OpenShift的构建基于Docker的高效容器引擎和Kubernetes的容器编排力量。Docker为应用提供稳定、安全的运行环境,而Kubernetes则在集群管理、高可用性、安全性和持续集成上发挥核心作用,满足大规模容器集群的调度、网络、存储和性能要求。

OpenShift的功能包括:Docker容器引擎、Kubernetes编排、支持Java、Python等多语言的开发框架和中间件,如Tomcat、MySQL等;应用及服务目录、自动化构建工具S2I,以及OpenVSwitch的软件定义网络,确保了性能监控与日志管理的强大功能。此外,它还提供了友好的用户界面、oc命令行工具和Ansible的自动化部署与管理。

OpenShift与Kubernetes的对比与协作

尽管OpenShift内嵌了Kubernetes,但两者在概念上有所区分:OpenShift是PaaS,而Kubernetes是CaaS。OpenShift支持多种Linux发行版,如RHEL和CentOS,而Kubernetes则更倾向于Ubuntu、Fedora和Debian等。OpenShift的Web UI提供直观的管理界面,而Kubernetes的可视化需要额外配置和身份验证。

在网络层面,OpenShift自带OpenVSwitch的网络解决方案,而Kubernetes则为第三方网络插件提供接口。然而,共同点在于,两者都提供了关键的容器调度、弹性伸缩、异常处理和持久卷等功能。

OpenShift v4的革新突破

OpenShift v4带来了显著的更新。安装过程更简化,通过配置清单文件快速部署,同时引入Red Hat CoreOS,与集群紧密集成,减少了底层主机的管理负担。Kubernetes Operators的引入,使得应用程序的部署和管理更为智能化和高效。最后,新的Web界面拆分为开发者和管理员部分,集群配置统一管理,提升了用户体验。

总结来说,OpenShift以其强大的功能、自动化流程和不断演进的特性,成为企业云平台的首选,助力企业在容器化世界中实现无缝的开发、部署和运维。

Ubuntu 23.10通过APT安装Open vSwitch

欢迎各位,新年好!

在前文讨论过OpenStack的架构时,提及了Open vSwitch作为构建虚拟网络环境的重要组件。然而,近期在CentOS上部署Open vSwitch遇到挑战,因此本文聚焦于如何在Ubuntu 23.10上安装和配置Open vSwitch,为搭建虚拟网络环境提供指导。

首先,进行系统更新确保软件包最新。

接着,查看与Open vSwitch相关的软件包,关注到包含IPsec、PKI、VTEP、DPDK等功能的版本为3.2.0,与最新版本3.2.1稍有差异,但不影响使用。

关键安装包括openvswitch-switch,作为Open vSwitch的核心,提供虚拟交换机功能;openvswitch-common,作为通用组件及依赖库,支持其他Open vSwitch软件包;openvswitch-doc,提供官方文档,包括用户手册和开发者指南。

安装后,确认Open vSwitch已启动,并设置为开机自启动。

检查当前安装的Open vSwitch版本,版本号为3.2.0,内建数据库schema版本为8.4.0,通过ovs-vsctl工具进行配置。

创建名为tietou的Open vSwitch网桥,操作后确认新网桥成功创建。

使用ovs-vsctl工具查看详细信息,确认OVS系统ID、网桥名称、端口等信息,展示Open vSwitch系统运行状态与配置。

至此,Ubuntu 23.10环境下Open vSwitch的安装与基本配置已完成,为构建虚拟化网络环境提供了基础。

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网卡的?

这里做了一个简单的模拟操作:

dnsmasq实现。

kolla-ansible的dnsmasq日志相对路径参考:neutron/dnsmasq.log(可通过dnsmasq.conf找到日志路径)

日志中可以看到dhcp的详细过程。过程参考如下:

文档参考:

dhcp也通过网络命名空间实现,名称由网络id决定。dhcp可以拥有多个,通过neutron.conf中 dhcp_agents_per_network决定。

另:centos7虚拟机中的/var/log/messages也记录了dhcp相关操作。

network qos可以理解为网络流量限制,官方名称:网络质量即服务

本环境通过openvswitch实现的qos。

如上图为设置的带宽限制规则。

根据端口号查看流表,命令参考:

上图标记的104就为dscp mark乘 4的结果,乘4是一种规范。

阅读剩余
THE END