Openstack简介

  • 官方文档(中文):https://docs.openstack.org/zh_CN/

什么是Openstack

​ Openstack是由NASA(美国国家航空航天局)和Rackspace合作研发的IaaS解决方案,是以Apache许可证为授权的开源云计算管理平台。

组件

1)Horizon组件

​ Horizon为Openstack服务的Web控制面板,它可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。基于python的Django web框架进行开发。

  • 特点:

实例管理:创建/停止实例、查看终端日志、VNC连接、添加卷等;

访问与安全管理:创建安全群组、管理密钥对、设置浮动IP等;

镜像管理:编辑、删除镜像;

管理用户、配额及项目用途;

2)Keystone组件

认证组件,为其它服务提供认证和授权的集中身份管理服务和集中的目录管理服务。支持多种身份认证模式(如密码认证、令牌认证、AWS登录),也为用户和其它服务提供了SSO认证服务。

3)Nova组件

计算组件,在节点上用于管理虚拟机的服务。Nova是一个分布式的服务,能够与keystone交互实现认证,与Glance交互实现镜像管理。

​ Nova被设计成在标准硬件上能够进行水平扩展。启动实例时,如果有则需要下载镜像。

4)Glance组件

镜像管理组件,扮演虚拟机镜像注册的角色,允许用户为直接存储拷贝服务器镜像,这些镜像可以用于新建虚拟机的模板。

5)Swift组件

对象存储组件,对于大部分用户来说,swift组件不是必须的。只有存储数量达到一定级别且是非结构化

的数据才有这样的需求。

6)Neutron组件

网络管理组件,从软件定义网络服务,用于创建网络、子网、路由器、管理浮动IP地址等。可以实现虚拟交换机、虚拟路由器,可用于在项目中创建VPN。

7)Cinder组件

存储卷管理组件,为虚拟机管理存储卷的服务,为允许在Nova中的实例提供永久的块存储,可以通过快照进行数据备份,经常应用在实例存储环境中(如数据库文件等)。

架构图

OpenStack 概念架构

版本

  • [ ] Mitaka
  • [ ] Liberty
版本 最初发布时间 支持
Yoga 2022 年 3 月 30 日

二、部署Openstack集群

2.1 环境

1)主机清单

IP地址 主机名 角色 备注
192.168.2.120 openstack-console 管理节点
192.168.2.121 openstack-work01 计算节点

2)硬件环境要求

  • CPU需要支持虚拟化指令集。
$ grep -E  "vmx|svm"  /proc/cpuinfo
  • 64位操作系统
$ getconf LONG_BIT     #查看操作系统位数
64

3)网络拓扑

管理节点:openstack

计算节点:node1 node2

2.2 主机初始化

1)时间同步

所以节点主机时间必须一致

$ yum install  -y chrony
$ vim  /etc/chrony.conf
server ntp.aliyun.com iburst
bindacqaddress 0.0.0.0
allow 0/0
local stratum 10
$ systemctl enable  --now chronyd
$ chronyc sources  -v  #检测时间同步

2)禁用防火墙

​ Openstack会自动管理防火墙。

$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config
$ yum -y remove firewalld-*

3)禁用NetworkManager

Openstack会自动管理网络,卸载NetworkManager服务,并启用network服务。

$ systemctl disable --now NetworkManager
$ yum remove -y NetworkManager
$ systemctl enable  --now network

4)配置/etc/hosts

格式:IP地址 主机名

$ cat <<EOF >> /etc/hosts
192.168.2.120 openstack-console
192.168.2.121 openstack-work01
192.168.2.122 openstack-work02
EOF

5)配置/etc/resolv.conf

openstack所有节点必须有一个可用的DNS

$ cat /etc/resolv.conf
nameserver 8.8.8.8

search开头的行必须删除。

2.3 安装libvirtd虚拟机平台

在node1、node2节点安装

$ yum install -y qemu-kvm  libvirt-daemon libvirt-daemon-driver-qemu  libvirt-client python-setuptools
$ systemctl enable --now libvirtd      #启动libvirtd服务
$ systemctl status libvirtd

2.4 安装Packstack

Packstack是Openstack的安装工具。在openstack节点安装,

$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo  -O  /etc/yum.repos.d/CentOS7-Base-163.repo
$ yum clean all && yum makecache
$ yum install -y centos-release-openstack-stein 
$ yum install -y openstack-packstack  python-setuptools

生成并修改应答文件

Openstack采用应答文件安装,生成应答文件:

$ packstack --gen-answer-file=amswer.ini   #生成应答文件
$ ls 
amswer.ini
$ vim amswer.ini   #修改应答文件
CONFIG_SWIFT_INSTALL=n   #42,存储对象组件
CONFIG_CEILOMETER_INSTALL=n   #45,计费模块
CONFIG_AODH_INSTALL=n     #49,计费模块
CONFIG_GNOCCHI_INSTALL=n   #53,计费模块
CONFIG_NTP_SERVERS=192.168.1.254   #75,时间服务器
CONFIG_COMPUTE_HOSTS=192.168.1.11  #98,管理节点IP
CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11  #102,计算节点IP
CONFIG_KEYSTONE_ADMIN_PW=a               #333,管理员密码
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan    #840,支持协议
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex  #910,网桥设备
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0  #921,出口网卡
CONFIG_PROVISION_DEMO=n  #1179,演示模块

安装Openstack

​ 使用packstack安装openstack

$ packstack --answer-file=answer.ini
16.	Welcome to the Packstack setup utility
17.	The installation log file is available at: /var/tmp/packstack/20190423-170603-b43g_i/openstack-setup.log
18.	Installing:
19.	Clean Up                                             [ DONE ]
20.	Discovering ip protocol version                      [ DONE ]
21.	root@192.168.1.11's password: 
22.	root@192.168.1.10's password: 
23.	Setting up ssh keys
24.	 **** Installation completed successfully ******        //出现这个为成功

登录horizon

​ 默认的配置文件中有一个BUG,无法显示登录页面。

1)修改Horizon配置

$ vim  /etc/httpd/conf.d/15-horizon_vhost.conf
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL}    # 添加这一行
WSGIScriptAlias /dashboard  "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"

2)重载http服务

$ apachectl  graceful   #重新载入配置文件

三、Openstack配置

3.1 命令行登录管理

命令行登录需要认证文件(keystonerc_admin)

$ cat keystonerc_admin  #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

$ sorces  /root/keystonerc_admin

四、Operstack管理

4.1 命令行管理项目(Project)

创建项目

$ openstack project create [项目名称]

查看项目

$ openstack project list

删除项目

$ openstack project delete [项目名称]

4.2 命令行管理用户(User)

用户在openstack中用于身份认证,管理员(admin)一般在安装时便会创建,其它用户则由管理员创建并分配权限。

创建用户并指定密码

$ openstack user create --password [密码]  [用户名]

列出已有用户

$ openstack user list

删除用户

$ openstack user delete [用户名]

修改用户密码

$ openstack user set --password [新密码] [用户名]