OpenStack(二)安装部署
一、主要组件
Horizon
- 用于管理Openstack各种服务的、基于web的管理接口
- 通过图形界面实现创建用户、管理网络、启动实例等操作
Keystone
- 为其他服务提供认证和授权的集中身份管理服务
- 也提供了集中的目录服务
- 支持多种身份认证模式,如密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆
- 为用户和其他服务提供了SSO认证服务
Neutron
- 一种软件定义网络服务
- 用于创建网络、子网、路由器、管理浮动IP地址
- 可以实现虚拟交换机、虚拟路由器
- 可用于在项目中创建VPN
Cinder
- 为虚拟机管理存储卷的服务
- 为运行在Nova中的实例提供永久的块存储
- 可以通过快照进行数据备份
- 经常应用在实例存储环境中,如数据库文件
Glance
- 扮演虚拟机镜像注册的角色
- 允许用户为直接存储拷贝服务器镜像
- 这些镜像可以用于新建虚拟机的模板
Nova
- 在节点上用于管理虚拟机的服务
- Nova是一个分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理
- Nova被设计成在标准硬件上能够进行水平扩展
- 启动实例时,如果有则需要下载镜像
Swift
本次不安装,swift主要是用来创建数据卷的
二、安装部署
1.虚拟机配置
镜像:CentOS7-1804.iso
链接:https://pan.baidu.com/s/1yBrcvFCOL13xLvfBdi08qg?pwd=vr6i
提取码:vr6i
#使用VMware安装环境
#虚拟机网络可以使用桥接模式,能够访问互联网
#cpu开启虚拟化:虚拟机->设置->处理器->虚拟化引擎->勾选"虚拟化Intel VT-x/EPT或AMD-V/RVI(V)"
#修改网卡名参考:https://www.cnblogs.com/WEIWEI1095/p/17279451.html
openstack管理主机:2cpu、6G内存,50G硬盘;静态IP:192.168.0.100
NAME=eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=yes
TYPE=Ethernet
DNS1=192.168.0.1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
nova01计算节点:2cpu、4G内存,100G硬盘;静态IP:192.168.0.101
NAME=eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.101
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=yes
TYPE=Ethernet
DNS1=192.168.0.1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
nova02计算节点:2cpu、4G内存,100G硬盘;静态IP:192.168.0.102
NAME=eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.102
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=yes
TYPE=Ethernet
DNS1=192.168.0.1
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
2.配置DNS
vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
#如果有search开头的行删除这行
3.本地解析
vi /etc/hosts
192.168.0.100 openstack
192.168.0.101 nova01
192.168.0.102 nova02
4.NTP
yum install -y chrony
vi /etc/chrony.conf
server ntp.tencent.com iburst #修改为腾讯的NTP服务器
systemctl restart chronyd
systemctl enable chronyd
测试NTP时间同步是否成功:
chronyc sources -v
===============================================================================
^* 106.55.184.199 2 6 77 5 -9080us[ -14ms] +/- 67ms #测试结果出现^*表示成功
5.修改主机名
openstack节点: vi /etc/hostname
openstack
nova01节点: vi /etc/hostname
nova01
nova02节点: vi /etc/hostname
nova02
配置完成后重新登录
6.配置yum源
CentOS7-1804.iso #系统软件
RHEL7-extras.iso #提供python依赖软件包
RHEL7OSP-10.iso #openstack软件包
链接:https://pan.baidu.com/s/1yBrcvFCOL13xLvfBdi08qg?pwd=vr6i
提取码:vr6i
将镜像挂载后内容复制出来做yum源,再卸载:
mkdir -p /test/base
mkdir -p /test/extras
mkdir -p /test/openstack/
mount CentOS7-1804.iso /test/base/
mount RHEL7-extras.iso /test/extras/
mount RHEL7OSP-10.iso /test/openstack/
mkdir /iso
cp -r /test/* /iso
umount /test/base/
umount /test/extras/
umount /test/openstack/
rm -rf /test
删除其他yum配置,配置新源:
cd /etc/yum.repos.d/
rm -rf *
vi openstack.repo
[CentOS7-Base]
name=CentOS7-Base
baseurl=file:///iso/base
enabled=1
gpgcheck=0
[RHEL7-Extras]
name=RHEL7-Extras
baseurl=file:///iso/extras
enabled=1
gpgcheck=0
[RHEL7-Package]
name=RHEL7-Package
baseurl=file:///iso/openstack/rhel-7-server-openstack-10-rpms
enabled=1
gpgcheck=0
[RHEL7-DevTools]
name=RHEL7-DevTools
baseurl=file:///iso/openstack/rhel-7-server-openstack-10-devtools-rpms
enabled=1
gpgcheck=0
yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
CentOS7-Base CentOS7-Base 9,911
RHEL7-DevTools RHEL7-DevTools 3
RHEL7-Extras RHEL7-Extras 76
RHEL7-Package RHEL7-Package 680
repolist: 10,670
7.安装依赖包
yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
8.安装前检查
#是否卸载firewalld和NetworkManager,OpenStack会接管防火墙和网络的工作,会和这两个原生的服务冲突
卸载firewalld:
systemctl stop firewalld
systemctl disable firewalld
yum autoremove -y firewalld #autoremove 可以将即使是不使用的依赖包也删除
rm -rf /etc/firewalld/
rm -rf /var/lib/firewalld/
rm -rf /var/log/firewalld/
卸载NetworkManager:
systemctl stop NetworkManager
systemctl disable NetworkManager
yum autoremove -y NetworkManager #autoremove 可以将即使是不使用的依赖包也删除
rm -rf /etc/NetworkManager/
rm -rf /var/lib/NetworkManager/
rm -rf /var/log/NetworkManager/
检查是否卸载成功:
rpm -qa|grep -i firewalld 返回空
rpm -qa|grep -i networkmanager 返回空
#是否静态IP
ifcfg-eth0文件中BOOTPROTO=static
#主机名能够相互ping通
ping openstack
ping nova01
ping nova02
#检查yum源
yum repolist
4个源,10670个包
#依赖包是否安装
systemctl start libvirtd 无报错
#检查NTP是否可用
chronyc sources -v 返回结果中有^*
#检查/etc/resolv.conf不能有search开头的行
grep search /etc/resolv.conf 返回空
9.安装OpenStack(两节点模型)
openstack管理节点:
安装openstack-packstack
yum install -y openstack-packstack
使用packstack创建通用应答文件
packstack --gen-answer-file=answer.ini
修改应答文件
vi 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=ntp.tencent.com #NTP时间服务器地址
98: CONFIG_COMPUTE_HOSTS=192.168.0.101 #在哪个IP上部署nova
102: CONFIG_NETWORK_HOSTS=192.168.0.100,192.168.0.101 #在哪个IP上部署neutron
330: CONFIG_KEYSTONE_ADMIN_USERNAME=admin #管理员用户名
333: CONFIG_KEYSTONE_ADMIN_PW=000000 #管理员密码
840: CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan #支持多少种网络
910: CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex #能划分vlan的虚拟交换机 #物理机前缀头:虚拟交换机名字
921: CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0 #虚拟交换机端口 #交换机名字:端口名字
1179: CONFIG_PROVISION_DEMO=n #是否需要openstack提供的演示案例
根据应答文件安装
packstack --answer-file=answer.ini #输入节点密码后预计执行20分钟,如果出错会自动回滚到最近一个成功的节点,根据报错解决问题即可
10.安装完成后各节点网络有哪些变化
新增一个交换机配置文件ifcfg-br-ex
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=yes
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs #设备类型,ovs表示交换机
OVSBOOTPROTO=static #静态IP
TYPE=OVSBridge #ovs交换机,Ethernet表示网卡
vi ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs #设备类型为ovs
TYPE=OVSPort #表示eth0现在为交换机端口
OVS_BRIDGE=br-ex #表示属于br-ex交换机的子端口
ONBOOT=yes
BOOTPROTO=none
ovs-vsctl show查看交换机信息
...
Bridge br-ex #交换机br-ex
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Port br-ex
Interface br-ex
type: internal
Port "eth0" #eth0是br-ex的一个port
Interface "eth0"
...
11.Horizon配置
概述:
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,也称之为Dashboard仪表盘
可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例
基于python的django web框架进行开发
功能特点:
实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等
偏好设定:对虚拟硬件模板可以进行不同偏好设定
镜像管理:编辑或删除镜像
用户管理:创建用户等
卷管理:创建卷和快照
对象存储处理:创建、删除容器和对象
bug修复:
默认可能无法打开horizon,添加一行解决
vi /etc/httpd/conf.d/15-horizon_vhost.conf
## Server aliases
ServerAlias 192.168.0.100
ServerAlias openstack
ServerAlias localhost
WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache
WSGIProcessGroup apache
WSGIApplicationGroup %{GLOBAL} #添加这行
WSGIScriptAlias /dashboard "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"
systemctl reload httpd #重载httpd配置文件
打开Horizon页面:
http://192.168.0.100/dashboard
用户名admin 密码000000
12.openstack命令
安装完成后会生成一个keystonerc_admin,导入这个环境变量就可以使用nova、glance等命令了
[root@openstack ~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD=000000
export OS_AUTH_URL=http://192.168.0.100:5000/v2.0
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne
[root@openstack ~]# source keystonerc_admin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现