本文共 13756 字,大约阅读时间需要 45 分钟。
目录
概念:
IaaS 基础设施,通常分为:公有云,私有云,混合云
PaaS 平台,
SaaS 软件,
介绍
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目
OpenStack是一套IaaS解决方案
OpenStack是一个开源的云计算管理平台
以Apache许可证为授权
组件
web组件(页面)horizon 客户端nova 后端盘(相当于yum源共享给其他)glance 数据快速转移和共享 swift 网络互联互通的问题(建vlan) quantum (逻辑)卷存储 cinder 身份认证 keystoneHorizon
– 用于管理Openstack各种服务的、基于web的管理接口
– 通过图形界面实现创建用户、管理网络、启动实例等操作
keystone
– 为其他服务提供认证和授权的集中身份管理服务
– 也提供了集中的目录服务 – 支持多种身份认证模式,如密码认证、令牌认证、以 及AWS(亚马逊Web服务)登陆 – 为用户和其他服务提供了SSO认证服务
Cinder
– 为虚拟机管理存储卷的服务
– 为运行在Nova中的实例提供永久的块存储 – 可以通过快照进行数据备份 – 经常应用在实例存储环境中,如数据库文件
Neutron
– 一种软件定义网络服务
– 用于创建网络、子网、路由器、管理浮动IP地址 – 可以实现虚拟交换机、虚拟路由器 – 可用于在项目中创建VPN
Glance
– 扮演虚拟机镜像注册的角色
– 允许用户为直接存储拷贝服务器镜像 – 这些镜像可以用于新建虚拟机的模板
Nova
– 在节点上用于管理虚拟机的服务
– Nova是一个分布式的服务,能够与Keystone交互实现 认证,与Glance交互实现镜像管理 – Nova被设计成在标准硬件上能够进行水平扩展 – 启动实例时,如果有则需要下载镜像
准备三台虚拟机
openstack 管理主机
2CPU , 6G内存,50G硬盘
配置静态IP:192.168.1.10
nova01,nova02计算几点*2
2CPU , 4.5G内存,100G硬盘
配置静态IP:192.168.1.11(12)
真机:
]# cd /var/lib/libvirt/images
]# ls -a
]# virsh domblklist A 随便看一个虚拟机找出后端盘
目标 源
------------------------------------------------ vda /var/lib/libvirt/images/A.img ]# qemu-img info /var/lib/libvirt/images/nova01.img image: /var/lib/libvirt/images/nova01.img file format: qcow2 virtual size: 100G (107374182400 bytes) disk size: 724M cluster_size: 65536 backing file: /var/lib/libvirt/images/.node_base.qcow2 #后端盘 Format specific information: compat: 1.1 lazy refcounts: false]# qemu-img create -b /var/lib/libvirt/images/.node_base.qcow2 -f qcow2 openstack.img 50G 创建硬盘文件
]# qemu-img create -b /var/lib/libvirt/images/.node_base.qcow2 -f qcow2 nova01.img 100G
]# qemu-img create -b /var/lib/libvirt/images/.node_base.qcow2 -f qcow2 nova02.img 100G
]# ll
]# cd /etc/libvirt/qemu #随便改这里的xml的文件输出做新的
]# sed 's,A,nova01,' A.xml > nova01.xml
]# sed 's,A,nova02,' A.xml > nova02.xml
]# sed 's,A,openstack,' A.xml > openstack.xml
]# virsh define openstack.xml #用文件创建虚拟机
]# virsh define nova02.xml
]# virsh define nova01.xml
]# virsh edit openstack #修改内存
<domain type='kvm'>
<name>openstack</name> <uuid>2aa5d74e-d9d3-4862-b09f-72acf27db577</uuid> <memory unit='KiB'>7888282</memory> #没有6G多安装不了openstack <currentMemory unit='KiB'>7888282</currentMemory> <vcpu placement='static'>2</vcpu>]# virsh edit nova01
<domain type='kvm'>
<name>nova01</name> <uuid>31d90ce6-4399-4ba8-bfff-8b3a20a26b33</uuid> <memory unit='KiB'>4688282</memory> <currentMemory unit='KiB'>4688282</currentMemory> <vcpu placement='static'>2</vcpu>]# virsh edit nova02
<domain type='kvm'> <name>nova02</name> <uuid>9c64c746-8fbe-4aae-adf8-74e8d6a08ba2</uuid> <memory unit='KiB'>4688282</memory> <currentMemory unit='KiB'>4688282</currentMemory> <vcpu placement='static'>2</vcpu>]# virsh start openstack
]# virsh start nova01
]# virsh start nova02
]# virsh list
]# virsh console openstack/nova01/nova02 --->
vim /etc/sysconfig/network-scripts/ifcfg-eth0 #这里以192.168.1.10为例,其他一样这样配
# Generated by dracut initrd
DEVICE="eth0" ONBOOT="yes" NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="static" #静态IP IPADDR="192.168.1.10" #IP地址 NETMASK="255.255.255.0" GATEWAY="192.168.1.254" #真机的ip(网关)
重启机器reboot或者systemctl restart network
这时可以直接ssh 连接,方便识别修改主机名为openstack , nova01, nova02
df -h ; free 检查内存和磁盘大小
配置DNS
vim /etc/resolv.conf #192.168.1.10-12配置一样
去掉search开头的所有行,DNS默认无需修改,注:DNS服务器不能与openstack 安装在同一台主机上
vim /etc/hosts #将主机名对应的ip解析到openstack服务器,192.168.1.10-12也配置一样
192.168.1.10 openstack 192.168.1.11 nova01 192.168.1.12 nova02测试能互相ping通
NTP时间同步
vim /etc/chrony.conf #192.168.1.10-12也配置一样
#server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server 192.168.1.254 iburst #同步真机时间
[root@nova01 ~]# systemctl restart chronyd
[root@nova01 ~]# chronyc sources -v===============================================================================
^* gateway 3 6 37 22 +4292ns[ +86us] +/- 4219us # ^* 为OK ^?为失败
真机上操作
[root@tedu-cn 04]# cd /var/ftp/
[root@tedu-cn ftp]# mkdir extras
[root@tedu-cn ftp]# mkdir openstack mount /linux-soft/04/openstack/RHEL7OSP-10.iso openstack/mount /linux-soft/04/openstack/RHEL7-extras.iso extras/
[root@tedu-cn ftp]# vim /etc/fstab
/linux-soft/04/openstack/RHEL7OSP-10.iso /var/ftp/openstack iso9660 defaults 0 0
/linux-soft/04/openstack/RHEL7-extras.iso /var/ftp/extras iso9660 defaults 0 0mount -a
cat /proc/sys/net/ipv4/ip_forward #查看路由转发功能开启了没
1
虚拟机192.168.1.10-12上操作
搭yum源
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[RHEL7OSP-10.iso]
name=devtools baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms/" enabled=1 gpgcheck=0[RHEL7OSP]
name=10-rpms baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms/" enabled=1 gpgcheck=0[RHEL7-extras.iso]
name=extras baseurl="ftp://192.168.1.254/extras/" enabled=1 gpgcheck=0 ]# yum repolist #软件包共有10670,只能多不能少
yum -y install qemu-kvm libvirt-daemon libvirt-daemon-driver-qemu libvirt-client python-setuptools #安装依赖包
grep vmx /proc/cpuinfo #检查cpu支不支持这功能
grep ssse3 /proc/cpuinfo
如果没有vmx,ssse3就在真机执行
vim /etc/modprobe.d/kvm.conf
options kvm_intel nested=1
重启真机
是否卸载firewalld 和 NetworkManager
• 检查配置主机网络参数(静态IP) • 主机名必须能够相互 ping 通 • 检查配置主机yum源(4个,10670) • 依赖软件包是否安装 • 检查NTP服务器是否可用 • 检查 /etc/resolv.conf 不能有 search 开头的行yum install -y openstack-packstack
packstack --gen-answer-file=answer.ini
修改应答文件
[root@openstack ~]# vim answer.ini 42: CONFIG_SWIFT_INSTALL=n 45: CONFIG_CEILOMETER_INSTALL=n 49: CONFIG_AODH_INSTALL=n 53: CONFIG_GNOCCHI_INSTALL=n 75: CONFIG_NTP_SERVERS=192.168.1.254 98: CONFIG_COMPUTE_HOSTS=192.168.1.11 102: CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11 333: CONFIG_KEYSTONE_ADMIN_PW=a 840: CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan 910: CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex 921: CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 1179: CONFIG_PROVISION_DEMO=n
packstack --answer-file=answer.ini #一键部署openstack
如果前期环境准备无误,只要耐心等待安装结束即可,禁止终于Ctrl +C
• 根据主机配置不同,安装过程需要20分钟左右或更久 • 如果出现错误,根据屏幕上给出的日志文件进行排错
br-ex:虚拟交换机
打vlan标记隔离
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex #br-ex为外部OVS网桥
ONBOOT="yes" NM_CONTROLLED="no" IPADDR="192.168.1.10" NETMASK="255.255.255.0" GATEWAY="192.168.1.254" DEVICE=br-ex NAME=br-ex DEVICETYPE=ovs #虚拟交换机网卡类型 OVSBOOTPROTO="static" TYPE=OVSBridge[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 #查看外部ovs网桥端口eth0
DEVICE=eth0 NAME=eth0 DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ex ONBOOT=yes BOOTPROTO=none [root@openstack ~]# ovs-vsctl show #验证OVS配置 5f897b10-b34a-43fa-92ef-1956cbea12f1 Manager "ptcp:6640:127.0.0.1" is_connected: true Bridge br-tun Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure Port patch-int Interface patch-int type: patch options: {peer=patch-tun} Port br-tun Interface br-tun type: internal Port "vxlan-c0a8010b" Interface "vxlan-c0a8010b" type: vxlan options: {df_default="true", in_key=flow, local_ip="192.168.1.10", out_key=flow, remote_ip="192.168.1.11"} Bridge br-int Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure Port br-int Interface br-int type: internal Port int-br-ex Interface int-br-ex type: patch options: {peer=phy-br-ex} Port patch-tun Interface patch-tun type: patch options: {peer=patch-int} Bridge br-ex Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure Port "eth0" Interface "eth0" Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Port br-ex Interface br-ex type: internal ovs_version: "2.5.0" |
]# vim /etc/httpd/conf.d/15-horizon_vhost.conf #Horizon 的BUG,需加此项才能访问网页
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} ]# apachectl graceful 重新加载文件真机上访问192.168.1.10然后登陆,密码忘了看下方:
[root@openstack ~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN export OS_USERNAME=admin export OS_PASSWORD=a export OS_AUTH_URL=http://192.168.1.10:5000/v2.0 export PS1='[\u@\h \W(keystone_admin)]\$ ' export OS_TENANT_NAME=admin export OS_REGION_NAME=RegionOne
是一个用以管理,控制Openstack服务的WEB控制面板,也称之Dashboard仪盘表
可以管理实例,镜像,创建密钥对,对实例添加卷,操作Swift容器等.除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
基于python的diango web 框架开发
功能与特点
• 实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
• 访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等 • 偏好设定:对虚拟硬件模板可以进行不同偏好设定 • 镜像管理:编辑或删除镜像 • 用户管理:创建用户等 • 卷管理:创建卷和快照 • 对象存储处理:创建、删除容器和对象
命令行接口:
[root@openstack ~]# source ~/keystonerc_admin
[root@openstack ~(keystone_admin)]# env | grep OS
HOSTNAME=openstack OS_REGION_NAME=RegionOne OS_PASSWORD=a OS_AUTH_URL=http://192.168.1.10:5000/v2.0 OS_USERNAME=admin OS_TENANT_NAME=admin[root@openstack ~(keystone_admin)]# openstack --help
项目:一组隔离的资源和对象。由一组关联的用户进行管理
• 在旧版本里,也用租户(tenant)来表示
• 根据配置的需求,项目对应一个组织、一个公司或是一个使用客户等 • 项目中可以有多个用户,项目中的用户可以在该项目创建、管理虚拟资源 • 具有admin角色的用户可以创建项目 • 项目相关信息保存到MariaDB中• 缺省情况下,packstack安装的openstack中有两个独立的项目
– admin:为admin账户创建的项目
– services:与安装的各个服务相关联
基本概念
• 用户在openstack中用于身份认证 • 管理员用户admin一般在packstack安装过程中创建 • 其他用户由管理员用户创建,并指定可以访问的项目 • 非管理员用户创建后,保存到MariaDB中• 非管理员用户具有以下权限
– 启动实例 – 创建卷和快照 – 创建镜像 – 分配浮动IP – 创建网络和路由器 – 创建防火墙以及规则、规则策略 – 查看网络拓扑、项目使用概况等
网络地址--->写网段地址
创建云主机时状态错误时重启nova01该服务
[root@nova01 ~]# systemctl stop openstack-nova-compute.service
[root@nova01 ~]# systemctl start openstack-nova-compute.service[root@nova01 ~]# virsh list
1006错误(原因之前DNS没有删除search那行)13:42视频
[root@nova01 ~]# sed -n '8430p' /etc/nova/nova.conf
vncserver_proxyclient_address=nova01或不知道是什么巴拉巴拉一大串
把那串写进/etc/hosts 能够给他解析
192.168.1.11 不知道是什么巴拉巴拉一大串
环境检查[192.168.1.12]
[root@nova02 ~]# free -h --->4G多
[root@nova02 ~]# df -h -->100G
[root@nova02 ~]# cat /etc/resolv.conf --->删除search的行
[root@nova02 ~]# cat /etc/hosts
192.168.1.10 openstack
192.168.1.11 nova01 192.168.1.12 nova02[root@nova02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd DEVICE="eth0" ONBOOT="yes" NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.1.12" NETMASK="255.255.255.0" GATEWAY="192.168.1.254"[root@nova02 ~]# head /etc/chrony.conf
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst server 192.168.1.254 iburst [root@nova02 ~]# chronyc sources -v^* gateway 3 7 377 118 -14us[ -20us] +/- 5364us
[root@nova02 ~]# cat /etc/yum.repos.d/local.repo
[local_repo] name=CentOS-$releasever - Base baseurl="ftp://192.168.1.254/centos-1804" enabled=1 gpgcheck=1[RHEL7OSP-10.iso]
name=devtools baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms" enabled=1 gpgcheck=0[RHEL7OSP]
name=10-rpms baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms/" enabled=1 gpgcheck=0[RHEL7-extras.iso]
name=extras baseurl="ftp://192.168.1.254/extras/" enabled=1 gpgcheck=0yum repolist ---> repolist: 10,670个
[root@nova02 ~]# yum -y install qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
查看cpu
top -->按1
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st[root@openstack ~]# vim answer.ini
98 CONFIG_COMPUTE_HOSTS=192.168.1.11,192.168.1.12
102 CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11,192.168.1.12
确保openstack能够ssh远程nova02
[root@openstack ~]# packstack --answer-file answer.ini
完成后
[root@openstack ~]# vim /etc/httpd/conf.d/15-horizon_vhost.conf #该文件又被还原了
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL}[root@openstack ~]# apachectl graceful #重载配置网页就可以进去了
基础
• 管理员可以通过配额限制,防止资源的过度使用
• 配额基本项目,限制每个项目可以使用多少资源 • 这些操作上的功能限制,赋予了管理员对每个项目的精准控制资源参数
• 安全组规则:指定每个项目可用的规则数
• 核心:指定每个项可用的VCPU核心数 • 固定IP地址:指定每个项目可用的固定IP数 • 浮动IP地址:指定每个项目可用的浮动IP数 • 注入文件大小 :指定每个项目内容大小 • 注入文件路径:指定每个项目注入的文件路径长度• 注入文件:指定每个项目允许注入的文件数目
• 实例:指定每个项目可创建的虚拟机实例数目 • 密钥对:指定每个项可创建的密钥数 • 元数据:指定每个项目可用的元数据数目 • 内存:指定每个项目可用的最大内存 • 安全组:指定每个项目可创建的安全组数目
• Name:云主机类型名称
• ID:云主机类型ID,系统自动生成一个UUID • VCPUs:虚拟CPU数目 • RAM(MB):内存大小 • Root disk(GB):外围磁盘大小。如果希望使用本地磁盘,设置为0 • 临时磁盘:第二个外围磁盘 • swap磁盘:交换磁盘大小
• raw:非结构化磁盘镜像格式
• vhd:VMware、Xen、Microsoft、VirtualBox等均支持的通用磁盘格式 • vmdk:是Vmware的虚拟磁盘格式 • vdi:VirtualBox虚拟机和QEMU支持磁盘格式 • iso:光盘数据内容的归档格式 • qcow2:QEMU支持的磁盘格式。空间自动扩展,并支持写时复制copy-on-write
• 镜像服务提供了服务器镜像的拷贝、快照功能,可以作为模板快速建立、起动服务器
• 镜像服务维护了镜像的一致性 • 当上传镜像时,容器格式必须指定 • 容器格式指示磁盘文件格式是否包含了虚拟机元数据
• bare:镜像中没有容器或元数据封装
• ovf:一种开源的文件规范,描述了一个开源、安全、有效、可拓展的便携式虚拟打包以及软件分布格式 • ova:OVA归档文件 • aki:亚马逊内核镜像 • ami:亚马逊主机镜像
• 实例被分配到子网中,以实现网络连通性
• 每个项目可以有一到多个子网 • 在红帽的Openstack平台中,OpenStack网络服务是缺省的网络选项,Nova网络服务作为备用 • 管理员能够配置丰富的网络,将其他Openstack服务连接到这些网络的接口上 • 每个项目都能拥有多个私有网络,各个项目的私有网络互相不受干扰
• 项目网络:由Neutron提供的项目内部网络,网络间可用VLAN隔离
• 外部网络:可以让虚拟机接入外部网络,但需要配置浮动IP地址 • 提供商网络:将实例连接到现有网络,实现虚拟机实例与外部系统共享同一二层网络
• 浮动 IP 一般是花钱购买的
• 浮动IP地址用于从外界访问虚拟机实例 • 浮动IP地址只能从现有浮动IP地址池中分配 • 创建外部网络时,浮动IP地址池被定义 • 虚拟机实例起动后,可以为其关联一个浮动IP地址 • 虚拟机实例也可以解除IP地址绑定
• 安全组用于控制对虚拟机实例的访问
• 安全组在高层定义了哪些网络及哪些协议是被授权可以访问虚拟机实例的 • 每个项目都可以定义自己的安全组 • 项目成员可以编辑默认的安全规则,也可以添加新的安全规则 • 所有的项目都有一个默认的default安全组
• 安全组规则定义了如何处理网络访问
• 规则基于网络或协议定义 • 每个规则都有出和入两个方向 • 规则也可以指定ip协议版本 • 默认的安全组规则,允许虚拟机实例对外访问,但是阻止所有对虚拟机实例的访问
1.新建2台云主机
2.配浮动IP(公网ip)
3.真机要能ping通浮动IP
4.设置安全组,使外界(真机)可以ssh连接上
有多个 nova 计算节点的时候,我们可以选择性的把
某一个云主机从某台机器上迁移到另外一台机器上– nova 计算节点与 openstack 管理节点都能相互 ping通,主机名称也要能 ping 通
– 所有计算节点安装 qemu-img-rhev,qemu-kvm-rhev – 如未安装,在安装以后需要重启 libvirtd 服务迁移期间不断开连接
转载地址:http://oriqi.baihongyu.com/