OpenStack基础
官网网址 openstack.org
版本网址 releases.openstack.org
搭建方案:16GB
controller 6G 4cpu 100GB 2块网卡 复用compute
compute 4GB 4cpu 100GB 2块网卡
ntp 1GB 1cpus 20GB 1块网卡
实验环境
(compute复用)
192.168.54.10 controller
192.168.54.20 compute
192.168.54.30 ntp
基础配置
配置hosts
[root@controller ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.54.10 controller
192.168.54.20 compute
192.168.54.30 ntp
[root@controller ~]#scp /etc/hosts root@compute:/etc/hosts
[root@controller ~]#scp /etc/hosts root@ntp:/etc/hosts
关闭防火墙及selinux
#关闭防火墙firewalld
[root@controller ~]# systemctl stop firewalld
systemctl dis[root@controller ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#关闭selinux
[root@controller ~]# setenforce 0
[root@controller ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled ##将enforcing改成disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
基础命令
管理OpenStack服务
#重启服务
systemctl restart openstack-nova-api.service
openstack-service restart nova
#查看openstack所有服务
[root@controller ~]# openstack-service status
nova命令
#创建云主机
[root@controller ~]# nova boot --flavor web1 --image centos6.5 --min-count 1 --security-groups group_web --nic net-name=int-net1 test-02
#查看云主机详细信息
[root@controller ~]# nova show test-02
#冷迁移虚拟机
[root@controller ~]# nova migrate --host controller test-02
#确认调整大小迁移
[root@controller ~]# nova resize-confirm test-02
#热迁移虚拟机
[root@controller ~]# nova live-migration test-02 controller
glance对接swift
[root@controller ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
[root@controller ~]# vim /etc/glance/glance-api.conf
default_store = swift
stores = swift,http
swift_store_auth_version = 3
swift_store_auth_address = http://controller:5000/v3
swift_store_user = admin:admin
swift_store_key = 000000
swift_store_container = glance
swift_store_large_object_size = 5120
swift_store_create_container_on_put = True
[root@controller ~]# openstack-service restart glance
Swift命令
#创建容器
swift post hj
#查看容器
swift list
#查看容器里面文件
swift list hj
#上传文件
swift upload hj file
#下载文件
swift download hj file
#删除文件
swift delete hj file
neutron命令
neutron net-list 查看所有的虚拟网络
neutron net-show <net_id> 查看指定虚拟网络的详细信息
neutron net-delete <net_id> 删除指定虚拟网络
neutron net-update <net_id> --shared True 设置虚拟网络为可共享
neutron net-update <net-id> --router:external True 设置虚拟网络为外部网络
neutron net-external-list 查看所有外部虚拟网络
neutron dhcp-agent-list-hosting-net <net_id> 查看指定网络部署dhcp-agent的节点
neutron port-list (--network-id <net_id>) 查看(指定虚拟网络下)所有的port
neutron port-show <port_id> 查看指定port的详细信息(绑定逻辑网络、虚拟机、qos-policy)
neutron port-delete <port_id> 删除某port
neutron subnet-list 显示所有的子网
neutron subnet-show <subnet_id> 查看某子网的详细信息
neutron subnet-update <subnet_id> --disable-dhcp 关闭子网的dhcp服务
neutron subnet-update <subnet_id> --enable-dhcp 开启子网的dhcp服务
neutron subnet-update <subnet_id> --allocation-pool start=<start_ip>,end=<end_ip> 修改子网ip池
neutron security-group-list 查看所有的安全组
neutron security-group-show <sg_id> 查看安全组详细信息(进出IP规则)
neutron qos-policy-list 查看网络qos列表
neutron qos-policy-show <qos_id> 查看qos详细信息
neutron qos-[bandwidth-limit]-rule-show <rule_id> <qos_id> 查看qos下指定【如带宽限制】规则的详细信息
neutron agent-list 查看neutron各组件状态
#查看命名空间
[root@controller ~]# ip netns
qrouter-35871374-16bb-40d9-ad42-201d1bfad3d1 (id: 0)
qdhcp-c199a937-b34f-46da-8645-f5c08697c926 (id: 1)
#使用命名空间查看的网卡信息
[root@controller ~]# ip netns exec qrouter-35871374-16bb-40d9-ad42-201d1bfad3d1 ip a
#查看防火墙规则
[root@controller ~]# ip netns exec qrouter-35871374-16bb-40d9-ad42-201d1bfad3d1 iptables -nL
openstack组件介绍
nova架构
nova-api:接受请求,校验参数的有效性
nova-scheduler:决定虚拟机运行在哪个计算节点,给每个计算节点计算一个权重值(0-1),权重越高,运行在哪个节点上,权重一样,随机选择一台
nova-conductor: 数据库操作,解耦其他组件(compute)数据库访问
nova-novncproxy:远程连接(访问虚拟机的代理)监听在控制节点的6080端口,当客户端访问6080端口将请求转发到计算节点5900端口
nova-consoleauth:novnc访问虚拟机鉴权 token口令认证
nova-compute:运行虚拟机的节点
可以通过openstack-service status 命令获取节点上运行了哪些服务
NOVA的重要概念
Glance架构
glance在openstack中主要为实例创建提供公共镜像服务能力以及镜像/虚拟机以及镜像/虚拟机快照管理功能
Keystone对象模型
Domain:域,keystone中资源(project、user、group)的持有者
Project:租户,其他组建中资源(虚拟机、镜像等)的持有者
User:用户,云系统的使用者
Group:用户组,可以把多个用户作为一个整体进行角色管理
Role:角色,基于角色进行访问控制
Service:服务,一组相关 功能的集合,避开如计算服务、网络服务、镜像服务、存储服务等
Endpoint: 必须和一个服务关联,代表这个服务的访问地址,一般一个服务需要提供三种类型的访问地址:public、internal、admin
Region:区域,在keystone里基本代表一个数据中心
Policy:访问控制策略,定义接口访问控制规则
每个服务里都会有一个policy.json文件,里面配置控制规则
Assignment:一个(actor,target,role)三元组叫一个assignment,actor包括user、group,target包括domain、project。每个assignment代表一个赋权操作
Token:令牌,用户访问服务的凭证,代表着用户的账户信息,一般需要包含user信息、scope信息(project、domain或者trust)、role信息。
toekn提供者分为PKI,UUID,PKIZ,Fernet类型
用户验证过程
RabbitMQ
rabbitmq属于消息队列
服务内组件之间的消息全部通过MQ来进行转发,包括控制/查询监控指标等。
producer(客户端)
用户发送消息
Connection(连接)
每个producer(生产者)或者consumer(消费者)要通过RabbitMQ发送与消费消息,首先就要与RabbitMQ建立连接,这个连接就是Connection。Connection是一个TCP长连接
Exchange(交换机)
Exchange是一个比较重要的概念,消息代理交换,它是消息到达RabbitMQ的第一站,主要负责根据不同的分发规则将消息分发到不同的Queue,供订阅了相关Queue的消费者消费到指定的消息。那Exchange有哪些分发消息的规则呢?这就要说到Exchange的4种类型了:direct、fanout、topic、headers。
Queue(队列)
Queue是一个用来存放消息的队列,生产者发送的消息会被放到Queue中,消费者消费消息时也是从Queue中取走消息。
Channel(信道)
Channel是在Connection的基础上建立的虚拟连接,RabbitMQ中大部分的操作都是使用Channel完成的,比如:声明Queue、声明Exchange、发布消息、消费消息等。
Virtual host(虚拟主机)
Virtual host是一个虚拟主机的概念,一个Broker中可以有多个Virtual host,每个Virtual host都有一套自己的Exchange和Queue,同一个Virtual host中的Exchange和Queue不能重名,不同的Virtual host中的Exchange和Queue名字可以一样。这样,不同的用户在访问同一个RabbitMQ Broker时,可以创建自己单独的Virtual host,然后在自己的Virtual host中创建Exchange和Queue,很好地做到了不同用户之间相互隔离的效果
consumer(接受者)
用户接受消息
Swift
是什么?
- 高可用、分布式对象存储服务(多副本存储)
- 最终一致性模型
- 适合解决互联网应用场景下非结构化数据存储问题
- 构筑在比较便宜的标准硬件存储基础设施之上
数据模型
- 层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象)
- 每层节点数均没有限制,可以任意扩招。
Swift组件
- Proxy Server: 对外提供对象服务API,由于采用无状态的REST请求协议,可以进行横向扩展来均衡负载。
- Account Server:提供账号元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在一个SQLite数据库中。
- Container Server:提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储在一个SQLite数据库中。
- Object Server:提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统
Cinder
是什么?
- Openstack的一个组件,从Folsom版本从Nova-Volume中分离出来。
- 为云平台提供统一接口,按需分配的,持久化的块存储服务(类似于Amazon EBS服务)
- 通过驱动的方式接入不同种类的后端存储(本地存储,网络存储,FCSAN,IPSAN)
逻辑架构
- cinder-api:cinder模块对外唯一入口,cinder的endpoint,接收和处理rest请求。
- cinder-scheduler:根据预定的调度过滤策略以及权重计算策略,选择出合适的后端来处理任务
- cinder-volume:负责与后端存储进行对接,通过各厂商提供的driver将openstack操作转换为存储操作
内部逻辑
cinder对接glusterfs
小实验
文章评论