Openstack 笔记

一、云和虚拟化有什么区别?

openstack 不是虚拟化

openstack 的架构定位于技术范畴:

openstack 只是系统的控制面。

openstack 不包括系统的数据面组件,如hypervisor,存储和网络设备等

openstack 和虚拟化有着关键 的区分:

openstack 本身不提供虚拟化技术,调度多种技术实现多资源池管理,对外提供统一管理接口

虚拟化提供环境隔离,资源雇佣,降低隔离损耗,提升运行效率,提供高级虚拟化特性

二、openstack 和 云计算的关系

0

openstack 只是构建云计算的关键组件:内核,骨干,框架,总线

为了构建云计算,我们还需要很多东西:云控制台,基础设施等等

所以简单来说 openstack 并不能说是云计算【过于广泛了】

openstack 的设计思想:【开放,灵活 ,可扩展】

Apache2.0 license

约70%的代码(核心代码)使用python开发

高度模块化,无中心化的。

所以2014 openstack 社区出身,中国的华为是黄金会员,国内代码贡献量最多

www.openstack.org

三、商业版本openstack 做了什么呢?

1、开发对应的部署工具,不然用开源工具 部署会疯掉的

2、开发各类驱动和接口,开源是肯定没有对接华为fusioncompute 的接口

3、提供各种高可用,容灾等解决方案

开源都是单节点的,没有高可用这种说法的。

4、提供强大的告警,日志,监控功能,这些都是开源中没有的

5、管理和升级工具

6、开发更多的云服务

IaaS --- 基础设施即服务 --- openstack 管理的

PaaS ---- 容器代表

SaaS ----- 比如在线链接等

而华为云现在是基于IaaS 提供了很多云服务,云主机、裸金属【IaaS】、容器【PaaS】、人工智能【SaaS】

众多功能。

私有云 ------ HCS 华为的私有云建设解决方案,之前叫做fusionsphere方案

公有云

混合云

怎么查询openstack 基于哪个版本开发?没有具体的指令show 出版本

在对应的控制节点 rpm -qa nova

到releases.openstack.org 去查看对应的版本

openstack 九大组件

horizon 【翻译过来就是地平面,名字都是随便起的】

------ 概念:tenant 租户、佃户 ----- 现在商业一遍称为project

keystone【身份认证,注册服务】

ceilmeter【计量服务】

heat【编排服务】 ----适合批量,需要懂yaml 语言

nova【openstack 核心组件】

0

neutron【提供网络基础】

华为的三种云计算网络部署方式

type1 软SDN

type2 硬SDN

type3 融合架构 ------ 实际就是neutron 做简单入口,就如传统网络架构,需在数通做很多配置

cinder【提供块存储】

glance【提供镜像服务】

swift【提供对象存储服务】

四、 openstack部署方式

1、按照开源文档部署---- 不适合商用

2、packstack 部署openstack ----推荐

华为也是基于packstack 做了自己的部署工具 FCD 【fusionCloud Depoly】

3、近年来出现的ansible 工具开发的相关部署手段

一般自己的电脑建议安装开源的openstack 或者红帽的openstack【接近源生】

例如装redhat OSP 6.0 ----相当于红帽将原生的openstack 做成了iso 光盘,本人实验采用OSP 7.0

0

实验环境:

【三个节点】

1、controller glance database cinder neutron 复用为compute 角色 【192.168.211.100 4G 内存以上,部署太多openstack 角色】

2、compute 计算节点【192.168.211.101】

3、ntp 时间服务器 复用yum源 、ntp 【192.168.211.102】

安装部署流程【简单描述版】

1、配置网络,以及配置hosts 文件

2、关闭防火墙和selinux,关闭NetworkManager 服务

3、配置yum源和ntp服务器

ntp在 红帽7.1 后新zeng chrony 服务,同步时间服务包

4、安装packstack部署工具

yum -y insatll openstack-packstack

生成packstack 应答文件,填写参数,自动跑服务

5、部署openstack 各个组件

6、在controller 节点,配置桥接器

为联通外部网络准备

有些预备操作是只要管理员能做,比如上传共同的镜像,创建用户,创建公共资源

管理openstack

1、使用admin身份登录openstack web界面

2、上次镜像

3、创建规格

4、创建网络【对外网络】

5、创建租户,创建用户,将用户管理到租户中

======================【1-5 管理员操作】

6、使用租户身份登录【这个就是在公有云登录进去 我们才开始操作的步骤】

租户创建租户网络

新建安全组

新建虚机

新建路由器

关联浮动IP

==============

五、公有云相关概念

VPC【virtual private cloud ,可支持多个子网,如果没有特别设置网关,默认第一个地址就是网关,】

同region下同一VPC 下的不同子网可以互通,同region不同VPC 默认不互通。

【VPC是在某个region下的概念,本地网络,不能跨region】

ip netns ls // 在网络节点查看命名空间 【私有云可以查,公有云因为在提供商那,用户不具备查看权限】

0

region 区域,代表一个数据中心,比如北京,上海,广州,新加坡

数据中心之间内网默认不能互通

AZ 【Availability zone 】 可用区

一个数据中心可以有多个AZ,每个AZ 一般情况下 都有独立的供电和网络系统,为了保障可靠性,一般部署多个AZ

,同一个region的不同AZ 之间内网是互通的,如果对性能和延迟有要求,建议将多个互访的业务放在同一个AZ中。

举例:region 有AZ1、AZ2、AZ3

当apache 需要 mysql 频繁交互时,建议放在同一AZ 下。缩短延时。

当mysql 需要进行主备部署时,建议放在不同AZ 下,增强可靠性。

EIP【弹性IP 】

私有云可以在网络节点查看到,到对应的namespce 查看iptables 规则、

0

安全组

【可以给同台虚机关联多个安全组】

NATGW 【适用于同VPC下 不同子网访问外网需求】对应数通的SNAT、DNAT

【在网络节点查询】,开源中在web页面删除后,底层可能不会同步,需要手工删除

ip netns ls

ip netns exec qrouter-01c502c0-2a78-4562-8a82-137ade05a4d6 iptables -t nat -vnL

ip netns exec qrouter-01c502c0-2a78-4562-8a82-137ade05a4d6 ip add li

0

六、openstack 命令行【建立云主机指令流程】

openstack 开发比较标准,许多配置文件都在 / etc 下

例如 /etc/nova/* /etc/neutron/* 等等

openstack 怎么排错,查看日志 【入门排查方法,先定位到具体的文件夹目录,一步步查】 ----- 都在/var/log/XXX/* 下

tail -f * //查看 目录下所有动态日志

tail -f * | grep -iE '(warn|err)'

tail -f * | grep -iE -A3 -B3 '(warn|err)'

-i 表示忽略大小写,-E 表示扩展规则,-A 表示显示前几行 -B 表示显示多后几行

新版N 版之后都是openstack 打头

N版之前仍然是 某个项目开始,N 版也能兼容旧版的指令

在网络可通情况下,可以在任何节点安装nova 客户端加载环境变量执行openstack 指令

which nova ----显示具体的路径 /usr/bin/nova

rpm -qf /usr/bin/nova ----- 查看依赖的软件包,到对应的节点安装客户端软件包

nova list | grep vm //查看虚机

nova instance-action-list 虚机id

nova delete web01 // 删除虚机

nova boot --flavor XXX --image --nic net-id vm2023 //新建虚机

cinder list

cinder delete 卷id

如果卷删不掉

可以cinder force-delete 卷id //强制删除

==========

网络常见操作指令

neutron router-list //查看路由器列表信息

neutron subnet-list //显示子网信息

neutron router-interface-delete router0 subnet=it_network //删除路由器接口

neutron router-delete router0 //删除路由器

neutron subnet-delete it_subnet //删除子网

neutron net-delete private // 删除网络

安全组

neutron security-group-list

neutron security-group-delete SG01 //删除安全组,开源默认default是无法删除的

密钥对

nova keypair-list //查询密钥对

novakeypair-delete XXX //删除密钥对

浮动IP

neutron floatingip-list //显示浮动IP

neutron floatingip-delete XX //删除浮动IP

对象存储

swift list //显示对象存储列表

swift delete XXX //删除对象存储

镜像

glance image-list

glance image-show XXX

glance image-update is-protected False XXX

glance image-delete XXX

规格flavor

nova flavor-list

nova flavor-delete xXX

用户管理

keystone user-list

keysteon user-delete user1

keystone tenant-list //显示项目列表,实际就是租户

help帮助【举例:nova --help | grep delete

nova help delete //显示用法】

openstack创建流程

1、创建租户,创建用户,用户关联租户

keystone user-create --name user1 --tenant binayuanyun --pass user1

2、上传镜像

glance image-create --name web1.img --disk-format qcow2 --container-format bare --file /root/small.img --is-public True --progress

// --container-format ---表示支持直接在裸设备配置, --progress 表示显示进度条

3、创建网络,子网

neutron net-create --tenant-id bianyuanyun --shared public //命令行只能设置共享的,net-create 不存在外部的参数

neutron net-show public // 可以看到 router-external:false ,表示并非外部网络,需要net-update 进行修改

neutron net-update --router:external=Ture public // 更新该网络为外部网络

0

neutron net-create --name publicsub01 --allocation-pool start=192.168.9.21,end=192,168.9.79 --disable-dhcp public 192.168.9.0/24

// --disable-dhcp 是关闭外部网络的DHCP,外部网络不需要发布IP

4、创建规格

nova flavor-create m1.web auto 1024 20 2 //创建规格

nova help flavor-create ---- 查看对应的规格

【1-4 是管理员创建的】

切换到租户账号

1、创建租户网络【公有云叫VPC】

neutron net-create --name it_subnetwork01 --allocation-pool start=192.168.9.21,end=192,168.9.79 --enable-dhcp private 192.168.9.0/24

2、创建路由器【将VPC 和 路由器关联在一起,公有云是自动关联的,无需创建】

neutron router-create router0 //创建路由器

neutron router-gateway-set router0 public //相当于给router0 加个出口网络

neutron router-interface-add router0 subnet=it_subnetwork01 //将VPC 中的子网关联起来,并且会配置该子网的网关在router0上

3、创建安全组

neutron security-group-create SG01 //先创建安全组

neutron security-group-rule-create --direction ingress --ethertype ipv4 --protocol tcp

--port-range-min 22 --port-range-max 22 SD01 //在安全组下添加规则

4、创建密钥对【怎么下载密钥对】 使用文件输处重定向

nova keypair-add key888 > key888.pem

chmod 400 key888.pem【修改文件权限为400 去掉写权限不安全】

5、创建浮动IP

neutron floating-ip-create public // 自动从public 内分配一个公网IP

6、开始创建云主机

nova boot --flavor m1.web --image web.img --key-name key888 --security-group SG1 --nic net-id=网络id vm2023

7、关联浮动IP

neutron floatingip-associate 【浮动IP id】 【端口 id】

浮动IP id ----使用neutron floatingip-list

端口 id ----使用neutron port-list

0

七、openstack 相关服务查询

openstack-service status // 查看本设备运行何种openstack 服务

systemctl restart openstack-nova-api.service 【openstack 为了最小化减低影响,可单独重启某个组件的某项服务】

0

作为初学者可能不知道重启哪些服务【实验可用,生产勿用,例如】

openstack-servie nova restart

怎么查询openstack 底层对接的虚拟化是啥?

在控制节点/etc/nova/nova.conf ----- virt-type== [kvm xen 等等]

0

如果使用同一个镜像发放的云主机【使用本地磁盘】,发放在同一个compute上的主机,共享母盘,云主机使用差分盘。

0

八、具体服务工作过程

0

novnc 技术

vnc 是分为vncserver 和 vncviewer ,一般情况下需要客户端需要安装vncviewer ,vncserver 在nova-compute上

在云中为了不让客户直接对接计算节点,nova提供novncproxy 的功能,将novnc 集成到web 中,使得客户端可以不用下载客户端直接使用novnc 的技术去访问计算节点上的虚拟机

nova-conductor

nova-compute 回写数据到数据库【比如虚机的信息】,不会直接对接数据库,因为涉及的nova-compute 虚拟化厂家众多,这么对接需要开发很多驱动,而且计算节点直接写数据库不安全,因此开发出nova-conductor 进行数据库操作和复杂流程控制。

然而在执行nova list 是由nova api 直接发送到mq 再转发数据库查询信息。

nova-consoleauth 是再novnc 登录的时候生成的token 认证,这样使用novncproxy 服务去登录同一台虚机的时候不用重复获取keystone 认证

开源的快照和商业版的区分

开源的

0

商业版的云 现在华为也是这样的,只有目前阿里云支持类似虚拟化下的快照功能

0

下图是cinder 对接后的情况

0

cinder 可以在vmworkstation 搭配 RHS 的glusterfs 进行分布式存储系统的搭建实现

keystone 有很多模型

0

0

其中endpoint 模型分为 public internal admin

0

怎么判断自己的token ,到keystone 去认证

0

keystone 只管认证 和 token ,不管权限,而是 由目的服务来决定的

那各个服务怎么实现的呢,是通过每个服务的配置文件下的 policy.json 来决定的

0

重点戏 :

neutron

华为的 HCS 6.0 网络平面 【包含用户平面 还有 运维平面 系统平面】共有20多个

华为的HCS 8.0 网络平面缩减了,减少很多不需要用户感知的平面

开源的就没那么复杂

neutron 分为三部分

neutron server 【不止包含了api 类似的功能,分为core api 、extent api,core api主要实现标准api,比如要创建

一个网络,如果要创建一个EIP、LB等需要丢给extent api】

0

plugin 【类似于driver,因为要对接不同的网络 以及不同的设备,需要不同的插件】

agent 【类似于nova-compute----- neutron 主要有ovs、bridge L3 agent router】

0

L3 agent 部署在哪个节点哪个就是网络节点【本机实现是控制节点和网络节点复用了】

0

可以使用neutron agent-list 【看看运行了什么agent】

0

在新版之后,为了防止针对不同的plugin 写重复的代码,提出了 ml2 plugin配置

0

8.1 传统flat 网络模型

0

为什么需要加个qbr

0

br-int 是一个内部桥

/etc/neutron/plugins/openvswitch

0

控制节点 会有ml2 文件夹

0

ovs常见指令

ovs-vsctl show //查看ovs 交换机基础信息

ovs-ofctl dump-flows ovs名称 //查看某个ovs交换机流表信息

ovs-ofctl show ovs名称 // 查看某个ovs交换机的端口等基础信息

备注flat 网络模型不涉及vlan间的转化

8.2 vlan网络模型tag的转化在于br-eth1 ,只要出宿主机才会进行转化VLAN

0

br-int 收到从br-ethX 来的数据会进行vlan tag 转化

0

如果在同一个宿主机内 相同租户不同 VM 则无需进行 进行vlan 转化,br-int 的内部表示在vlan 网络模型

是为neutron 分配的,不是由客户来定义的

在VLAN 网络模型中,自己本身的实验【Vmware workstation】跨主机需要外层交换机放行对应VLAN。

8.3 Vxlan 模型

0

br-ex 连接外部external 网络的网桥

br-int 集成inetgration 网桥,所有instance 的虚拟网卡和其他虚拟万拿过来设备都将连接到该网桥。

br-tun 是隧道网桥,基于隧道技术的vxlan 和 GRE网络将使用该网桥进行通信

这些网桥都是neutron 自动为我们创建的,但是通过brctl show 命令却看不到它们,这是因为我们使用的是

openvswitch 而非Linux brifdge ,需要用open vswitch 的命令ovs-vsctl show 查看,

ovs-ofctl dump-flows br-tun

0

0

为什么虚机方法,在web页面写的是web100 ,而发放出来的主机 没有更改主机名,

cloud-init 有什么用?meta

0

不同vxlan网络如何打通【默认两个网络是独立的】

0

0

通过路由器实现通信

0

并且添加路由器之后,重启虚机,虚机的主机名都正常了?为什么?

0

需要在镜像包中安装有cloud-init,系统启动后,cloud-init 会想169.254.169.254 去发送http 请求信息,获取对应客户自定义信息

0

那么169.254.169.254是在怎么来的,是最早亚马逊设计出来的,后面openstack 继承了

根据DHCP 获取地址、生成默认路由指向网关,网关所在命名空间会存在iptables

其中9697 是由neutron metadata的进程运行的。由neutron metadata再中转到nova api metadata

0

如果没有路由器,可以通过修改neutron dhcp.agent 配置文件 去下发路由。引导到dhcp去中转

0

rabbitmq -------- kafaka 大数据中的消息队列

什么是消息队列

串联各个组件的重要组件

MQ 全称是message queue,应用程序通过读写出入队列的消息(针对应用程序的数据)

来通信,而无需专用连接来连接它们【有序控制消息顺序】

0

MQ 只要在组件内走消息队列

0

怎么查询rabbitmq

rabbitmqctl list_users //查询有多少个用户

在每个组件的配置文件都会有写MQ 的用户名、密码等信息

其中,在大型公有云中 MQ 可能会成为瓶颈,所以MQ 有可能会单独用服务器部署,增强能力

MQ 监听的服务端口是 TCP 5672 【不加密的MQ】

【加密的MQ 监听的TCP 5671】

模拟MQ 崩了,核查业务能否正常下发

0

假设创建硬盘,会发现一直在转,查看日志

tail -f /var/log/cinder/* ----显示AMQP【advanced message queue protocol 】不可达,排查是否为网络问题

0

rabbitmqctl list_queues // 显示有多少条消息

MQ 主要占用CPU、内存更多

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值