首页 文章 精选 留言 我的

精选列表

搜索[openstack],共3159篇文章
优秀的个人博客,低调大师

LBaaS 实现机制 - 每天5分钟玩转 OpenStack(125)

上一节我们已经配置并测试 LBaaS,今天重点分析 Neutron 是如何用 Haproxy 来实现负责均衡的。 在控制节点上运行 ip netns,我们发现 Neutron 创建了新的 namespace qlbaas-xxx。 该 namespace 对应我们创建的 pool “web servers”。 其命名格式为 qlbaas-< pool ID>。 可以通过 ip a 查看其设置。 VIP 172.16.100.11 已经配置在 namespace interface 上。 在 subnet 的 Port 列表中也可以找到该 interface 的相应配置。 对于每一个 pool,Neutron 都会启动一个 haproxy 进程提供 load balancering 功能。 通过 ps 命令查找 haproxy 进程: haproxy 配置文件保存在 /opt/stack/data/neutron/lbaas/< pool ID>/conf 中。 查看 “web servers” 的配置内容: 可以看到: 1. frontend 使用的 HTTP 地址为 VIP:80 2. backend 使用的 HTTP 地址为 172.16.100.10:80 和 172.16.100.9:80 3. balance 方法为 roundrobin 这些内容与我们前面的配置一致。 以上就是 Neutron 实现 LBaaS 的理。下一节我们讨论如何通过 floating IP 访问 VIP。

优秀的个人博客,低调大师

理解 Neutron FWaaS - 每天5分钟玩转 OpenStack(117)

前面我们学习了安全组,今天学习另一个与安全相关的服务 -- FWaaS。理解概念 Firewall as a Service(FWaaS)是 Neutron 的一个高级服务。用户可以用它来创建和管理防火墙,在 subnet 的边界上对 layer 3 和 layer 4 的流量进行过滤。 传统网络中的防火墙一般放在网关上,用来控制子网之间的访问。 FWaaS 的原理也一样,是在 Neutron 虚拟 router 上应用防火墙规则,控制进出租户网络的数据。 FWaaS 有三个重要概念: Firewall、Policy 和 Rule。 Firewall租户能够创建和管理的逻辑防火墙资源。 Firewall 必须关联某个 Policy,因此必须先创建 Policy。 Firewall PolicyPolicy 是 Rule 的集合,Firewall 会按顺序应用 Policy 中的每一条 Rule。 Firewall RuleRule 是访问控制的规则,由源与目的子网 IP、源与目的端口、协议、allow 或 deny 动作组成。例如,我们可以创建一条 Rule,允许外部网络通过 ssh 访问租户网络中的 instance,端口为 22。 与 FWaaS 容易混淆的概念是安全组(Security Group)。 安全组的应用对象是虚拟网卡,由 L2 Agent 实现,比如 neutron_openvswitch_agent 和 neutron_linuxbridge_agent。安全组会在计算节点上通过 iptables 规则来控制进出 instance 虚拟网卡的流量。也就是说:安全组保护的是 instance。 FWaaS 的应用对象是 router,可以在安全组之前控制外部过来的流量,但是对于同一个 subnet 内的流量不作限制。也就是说:FWaaS 保护的是 subnet。 所以,可以同时部署 FWaaS 和安全组实现双重防护。 启用 FWaaS 因为 FWaaS 是在 router 中实现的,所以 FWaaS 没有单独的 agent。 已有的 L3 agent 负责提供所有 FWaaS 功能。 要启用 FWaaS,必须在 Neutron 的相关配置文件中做些设置。 配置 firewall driver Neutron 在 /etc/neutron/fwaas_driver.ini 文件中设置 FWaaS 使用的 driver。 如下图所示: 这里 driver 为 iptables。如果以后支持更多的 driver,可以在这里替换。 配置 Neutron 在 Neutron 配置文件 /etc/neutron/neutron.conf 中启用 FWaaS plugin。 配置完毕!下节我们开始创建 Firewall。

优秀的个人博客,低调大师

创建 floating IP - 每天5分钟玩转 OpenStack(106)

先复习一下前面我们讨论的知识。 当租户网络连接到 Neutron router,通常将 router 作为默认网关。当 router 接收到 instance 的数据包,并将其转发到外网时: 1. router 会修改包的源地址为自己的外网地址,这样确保数据包转发到外网,并能够从外网返回。 2. router 修改返回的数据包,并转发给真正的 instance。 这个行为被称作 Source NAT。 如果需要从外网直接访问 instance,则可以利用 floating IP。下面是关于 floating IP 必须知道的事实: 1. floating IP 提供静态 NAT 功能,建立外网 IP 与 instance 租户网络 IP 的一对一映射。 2. floating IP 是配置在 router 提供网关的外网 interface 上的,而非 instance 中。 3. router 会根据通信的方向修改数据包的源或者目的地址。 下面我们通过实验深入学习 floating IP。点击 Project -> Compute -> Access & Security 菜单,打开 Floating IPs 标签页。 点击 “Allocate IP To Project” 按钮。 floating IP Pool 为 ext_net,点击 “Allocate IP” 按钮。 从 Pool 中成功分配了一个 IP 10.10.10.3。 下面我们将它分配给 cirror-vm3,点击 “Associate” 按钮。 在下拉列表中选择 cirror-vm3,点击 “Associate” 按钮。 分配成功,floating IP 10.10.10.3 已经对应到 cirros-vm3 的租户 IP 172.16.101.3。 下一节我们将观察底层网络发生了怎样的变化,并分析 floating IP 是如何工作的。

优秀的个人博客,低调大师

Routing 功能概述 - 每天5分钟玩转 OpenStack(98)

路由服务(Routing)提供跨 subnet 互联互通功能。 例如前面我们搭建了实验环境: cirros-vm1 172.16.100.3 vlan100 cirros-vm3 172.16.101.3 vlan101 这两个 instance 要通信必须借助 router。 可以是物理 router 或者虚拟 router。 物理 router 使用物理 router,如下图所示: 接入的物理 router 有两个 interface ip: 172.16.100.1 对应 vlan100 的网关。 172.16.101.1 对应 vlan101 的网关。 当 cirros-vm1 要跟 cirros-vm3 通信时,数据包的流向是这样的: 1. 因为 cirros-vm1 的默认网关指向 172.16.100.1,cirros-vm1 发送到 cirros-vm3 的数据包首先通过 vlan100 的 interface 进入物理 router。 2. router 发现目的地址 172.16.101.3 与 172.16.101.1 为同一个 vlan,则从 vlan101 的 interface 发出。 3. 数据包经过 brq1d7040b8-01 最终到达 cirros-vm3。 虚拟 router 虚拟 router 的路由机制与物理 router 一样,只是由软件实现。 Neutron 两种方案都支持。如果要使用虚拟 router,需要启用 L3 agent。L3 agent 会在控制节点或者网络节点上运行虚拟 router,为 subnet 提供路由服务。 下节开始详细讨论 Neutron 的虚拟 router 实现。

优秀的个人博客,低调大师

配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)

前面章节我们看到 instance 在启动过程中能够从 Neutron 的 DHCP 服务获得 IP,本节将详细讨论其内部实现机制。 Neutron 提供 DHCP 服务的组件是 DHCP agent。 DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能。 配置 DHCP agent DHCP agent 的配置文件位于 /etc/neutron/dhcp_agent.ini。 dhcp_driver使用 dnsmasq 实现 DHCP。 interface_driver使用 linux bridge 连接 DHCP namespace interface。 当创建 network 并在 subnet 上 enable DHCP 时,网络节点上的 DHCP agent 会启动一个 dnsmasq 进程为该 network 提供 DHCP 服务。 dnsmasq 是一个提供 DHCP 和 DNS 服务的开源软件。 dnsmasq 与 network 是一对一关系,一个 dnsmasq 进程可以为同一 netowrk 中所有 enable 了 DHCP 的 subnet 提供服务。 回到我们的实验环境,之前创建了 flat_net,并且在 subnet 上启用了 DHCP,执行 ps 查看 dnsmasq 进程,如下图所示: DHCP agent 会为每个 network 创建一个目录 /opt/stack/data/neutron/dhcp/,用于存放该 network 的 dnsmasq 配置文件。 下面讨论 dnsmasq 重要的启动参数: --dhcp-hostsfile存放 DHCP host 信息的文件,这里的 host 在我们这里实际上就是 instance。 dnsmasq 从该文件获取 host 的 IP 与 MAC 的对应关系。 每个 host 对应一个条目,信息来源于 Neutron 数据库。 对于 flat_net,hostsfile 是 /opt/stack/data/neutron/dhcp/f153b42f-c3a1-4b6c-8865-c09b5b2aa274/host,记录了 DHCP,cirros-vm1 和 cirros-vm2 的 interface 信息。 --interface指定提供 DHCP 服务的 interface。 dnsmasq 会在该 interface 上监听 instance 的 DHCP 请求。 对于 flat_net,interface 是 ns-19a0ed3d-fe。 或许大家还记得,之前我们看到的 DHCP interface 叫 tap19a0ed3d-fe(如下图所示),并非 ns-19a0ed3d-fe。 从名称上看,ns-19a0ed3d-fe 和 tap19a0ed3d-fe 应该存在某种联系,但那是什么呢? 要回答这个问题,需要先搞懂一个概念:Linux Network Namespace,我们下一节详细讨论。

优秀的个人博客,低调大师

创建 flat network - 每天5分钟玩转 OpenStack(87)

上一节我们讨论了 flat network 的原理,今天就来创建 "flat_net" 并分析底层网络的实现。 打开菜单 Admin -> Networks,点击 “Create Network” 按钮。 显示创建页面。 Provider Network Type 选择 “Flat”。 Physical Network 填写 “default”,与 ml2_conf.ini 中 flat_networks 参数保持一致。 点击 “Create Network”,flat_net 创建成功。 点击 flat_net 链接,进入 network 配置页面,目前还没有 subnet,点击 “Create Subnet” 按钮。 设置 IP 地址为 “172.16.1.0/24”。 点击 “Next”,设置 IP 地址范围为 172.16.1.101-172.16.1.200。 点击 “Create”,subnet 创建成功。 底层网络发生了什么变化 执行 brctl show,查看控制节点当前的网络结构。 Neutron 自动新建了 flat_net 对应的网桥 brqf153b42f-c3,以及 dhcp 的 tap 设备 tap19a0ed3d-fe。 另外,tap19a0ed3d-fe 和物理网卡 eth1 都已经连接到 bridge。 此时 flat_net 结构如图所示: flat_net准备就绪,下一节将部署 instance 到此 flat 网络。

优秀的个人博客,低调大师

Service Plugin / Agent - 每天5分钟玩转 OpenStack(73)

Core Plugin/Agent 负责管理核心实体:net, subnet 和 port。而对于更高级的网络服务,则由 Service Plugin/Agent 管理。Service Plugin 及其 Agent 提供更丰富的扩展功能,包括路由,load balance,firewall等,如图所示: DHCPdhcp agent 通过 dnsmasq 为 instance 提供 dhcp 服务。 Routingl3 agent 可以为 project(租户)创建 router,提供 Neutron subnet 之间的路由服务。路由功能默认通过 IPtables 实现。 Firewalll3 agent 可以在 router 上配置防火墙策略,提供网络安全防护。 另一个与安全相关的功能是 Security Group,也是通过 IPtables 实现。 Firewall 与 Security Group 的区别在于: Firewall 安全策略位于 router,保护的是某个 project 的所有 network。 Security Group 安全策略位于 instance,保护的是单个 instance。 Firewall 与 Security Group 后面会详细分析。 Load BalanceNeutron 默认通过 HAProxy 为 project 中的多个 instance 提供 load balance 服务。 后面的章节会结合 linux bridge 和 open vswitch 详细讨论每一种 service。 至此,我们已经学习了 Core 和 Service Plugin/Agent,下一节将对 Neutron 架构做个小结。

优秀的个人博客,低调大师

Boot from Volume - 每天5分钟玩转 OpenStack(61)

Volume 除了可以用作 instance 的数据盘,也可以作为启动盘(Bootable Volume),那么如何使 volume 成为 bootable 呢? 现在我们打开 instance 的 launch 操作界面。 这里有一个下拉菜单“Instance Boot Source”。以前我们 launch instance 要么直接从 image launch(Boot from image),要么从 instance 的 snapshot launch(Boot from snapshot)。 这两种 launch 方式下,instance 的启动盘 vda 均为镜像文件,存放路径为计算节点 /opt/stack/data/nova/instances/<Instance ID>/disk,例如: 下拉列表的后三项则可以将 volume 作为 instance 的启动盘 vda,分别为: Boot from volume直接从现有的 bootable volume launch Boot from image (create a new volume)创建一个新的 volume,将 image 的数据 copy 到 volume,然后从该 volume launch Boot from volume snapshot (create a new volume)通过指定的 volume snapshot 创建 volume,然后从该 volume launch,当然前提是该snapshot 对应的源 volume 是 bootable 的。 下面我们以 Boot from image (create a new volume)为例,看如何从 volume 启动。 选择 cirros 作为 image,instance 命名为“c3” 如果希望 terminate instance 的时候同时删除 volume,可以勾选“Delete on Terminate” c3 成功 Launch 后,volume 列表中可以看到一个新 bootable volume,以 volume ID 命名,并且已经 attach 到 c3。 该 volume 已经配置为 c3 的启动盘 vda。 如果用该 volume 创建 snapshot,之后就可以通过 Boot from volume snapshot (create a new volume) 部署新的 instance,这个操作留给大家练习。 这里再给大家留个练习:boot from volume 的 instance 也可以执行 live migrate,请大家思考一下 volume 是如何 migrate 到目标节点的,并通过日志验证。 到这里,cinder 的主要操作就讲解完了。前面的实验使用的是 LVM provider,cinder 当然也支持其他 provider。为了让大家对这点有感性认识,下一节我们将接入 NFS volume provider。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册