保姆级Openstack实践-从零开始手把手教你搭建私有云2
connygpt 2024-11-17 08:48 18 浏览
sf2gis@163.com
1 compute01
1.1 基础环境:使用rancher生成容器
(也可使用docker直接创建,命令如下:
创建容器:# docker run -d --name controller --privileged=true docker.io/sf2gis/openstack:ntp /usr/sbin/init
进入容器:# docker exec -it controller /bin/bash)
使用rancher时需要在网络中设置IP(10.42.0.11)和主机名(compute01),在命令中设置入口为/usr/sbin/init,在安全中选择全部权限。
进入容器,设置IP和域名:/etc/hosts
10.42.0.10 controller
10.42.0.11 compute01
1.2 设置时间同步:ntp
配置为同步controller时间。
1.3 安装nova服务(需要修改yum源)
yum install openstack-nova-compute -y
1.3.1 修改yum源:增加openstack源
1.3.1.1 备份源:cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak_tmp/
1.3.1.2 修改Base:CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-centos/7 - Base
#mirrorlist=http://mirrorlist.centos.org/?release=centos/7&arch=$basearch&repo=os
baseurl=https://mirrors.aliyun.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-centos/7 - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=centos/7&arch=$basearch&repo=updates
baseurl=https://mirrors.aliyun.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-centos/7 - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=centos/7&arch=$basearch&repo=extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-centos/7 - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=centos/7&arch=$basearch&repo=centosplus
baseurl=https://mirrors.aliyun.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-centos/7 - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=centos/7&arch=$basearch&repo=contrib
baseurl=https://mirrors.aliyun.com/centos/7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
1.3.1.3 修改CentOS-OpenStack-liberty.repo
# CentOS-OpenStack-liberty.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/Cloud for more
# information
[centos-openstack-liberty]
name=CentOS-$releasever - OpenStack liberty
baseurl=http://buildlogs.centos.org/centos/$releasever/cloud/$basearch/openstack-liberty/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
[centos-openstack-liberty-test]
name=CentOS-$releasever - OpenStack liberty Testing
baseurl=http://buildlogs.centos.org/centos/$releasever/cloud/$basearch/openstack-liberty/
gpgcheck=0
enabled=1
1.3.1.4 修改rdo-release.repo
[openstack-liberty]
name=OpenStack Liberty Repository
baseurl=http://buildlogs.centos.org/centos/7/cloud/$basearch/openstack-liberty/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
1.3.1.5 修改rdo-testing.repo
[openstack-liberty-testing]
name=OpenStack Liberty Testing
baseurl=http://buildlogs.centos.org/centos/7/cloud/$basearch/openstack-liberty/
gpgcheck=0
enabled=0
[rdo-trunk-liberty-tested]
name=OpenStack Liberty Trunk Tested
baseurl=http://buildlogs.centos.org/centos/7/cloud/$basearch/rdo-trunk-liberty-tested/
gpgcheck=0
enabled=0
1.3.2 配置nova
egrep -c '(vmx|svm)' /proc/cpuinfo #确定计算节点是否支持虚拟机的硬件加速 。如果这个命令返回 1或者更大的值,说明计算节点支持硬件加速,一般不需要进行额外的配置。如果这个命令返回``0``,则计算节点不支持硬件加速,必须配置 libvirt使用QEMU而不是使用KVM。
如果不支持更改
[compute01@ ~]# vi /etc/nova/nova.conf
[libvirt]
...
virt_type = qemu
:wq
配置nova
cd /etc/nova/
cp nova.conf nova.conf.bak
egrep -v "^#|^#34; nova.conf.bak > nova.conf
vi nova.conf
[DEFAULT]
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:abc123@controller
auth_strategy = keystone
my_ip = 10.42.0.11 #计算节点(本机)上的IP 地址
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver #网络包括防火墙服务,你必须使用nova.virt.firewall.NoopFirewallDriver驱动程序禁用计算机防火墙服务
[keystone_authtoken] #配置认证服务访问
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = nova
[vnc] #启用并配置远程控制台访问
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html #如果主机无法解析controller主机名,你可以将 controller替换为你控制节点管理网络的IP地址。
[glance]
api_servers = http://controller:9292 #配置镜像服务的位置
[oslo_concurrency]
lock_path = /var/lib/nova/tmp #配置锁路径
1.3.3 启动计算服务及其依赖,并将其配置为随系统自动启动
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
注意:polkit服务可能启动失败,重新安装后重启可以解决。
注意:重启后修改/etc/hosts保证controller可用(compute服务会连接controller的mq服务)。
1.3.4 controller控制端验证操作
. admin-openrc #获得 admin 凭证来获取只有管理员能执行命令的访问权限
openstack compute service list #在控制节点上执行新节点的检查
nova service-list #列出服务组件,以验证是否成功启动并注册了每个进程 该输出应该显示四个服务组件在控制节点上启用,一个服务组件在计算节点上启用
nova endpoints #列出身份认证服务中的 API 端点来验证身份认证服务的连通性
1.4 安装neutron网络服务
1.4.1 安装服务
[compute01@ ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
1.4.2 配置Networking通用组件,Networking 通用组件的配置包括认证机制、消息队列和插件
cd /etc/neutron/
cp neutron.conf neutron.conf.bak
egrep -v "^$|^#" neutron.conf.bak > neutron.conf
vi neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:abc123@controller #配置RabbitMQ消息队列访问
auth_strategy = keystone #配置认证服务访问,在[keystone_authtoken]中注释或者删除其他选项
[keystone_authtoken] #配置认证服务访问
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp #配置锁路径
1.4.3 配置Linux 桥接代理
cd /etc/neutron/plugins/ml2/
cp linuxbridge_agent.ini linuxbridge_agent.ini.bak
egrep -v "^$|^#" linuxbridge_agent.ini.bak >linuxbridge_agent.ini
vi linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME #映射公共虚拟网络到公共物理网络接口
[vxlan] #禁用VXLAN覆盖网络
enable_vxlan = False
[securitygroup] #启用安全组并配置 Linux 桥接 iptables 防火墙驱动
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
1.4.4 配置Linux 桥接代理
cd /etc/nova/
cp nova.conf nova.conf.nova
vi nova.conf
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
1.4.5 重启服务
[compute01@ nova]# systemctl restart openstack-nova-compute.service # 重启计算服务
#启动Linux桥接代理并配置它开机自启动
[compute01@ nova]# systemctl enable neutron-linuxbridge-agent.service
[compute01@ nova]# systemctl start neutron-linuxbridge-agent.service
1.4.6 验证安装结果-控制端Controller
[controller@ ~]# . admin-openrc #获得 admin 凭证来获取只有管理员能执行命令的访问权限
[controller@ ~]# neutron ext-list #列出加载的扩展,对neutron-server进程是否启动正常进行验证
[controller@ ~]# openstack network agent list
[controller@ ~]# neutron agent-list #列出代理以验证启动 neutron 代理是否成功 ,该输出应该显示在控制节点上有四个代理,在每个计算节点上有一个代理
2 PackStack快速安装
Packstack主要是由Redhat推出的用于概念验证(PoC)环境快速部署的工具。Packstack是一个命令行工具,它使用Python封装了Puppet模块,通过SSH在服务器上部署OpenStack。
Packstack支持三种运行模式:
快速运行
交互式运行
非交互式运行
Packstack支持两种部署架构:
All-in-One,即所有的服务部署到一台服务器上
Multi-Node,即控制节点和计算机分离
2.1 环境准备
yum -y erase openstack-{packstack*,puppet-modules}#清除冲突包
sudo yum install -y centos-release-openstack-stein
sudo yum -y install yum-utils
sudo yum-config-manager --enable openstack-stein
sudo yum update –y
2.2 安装packstack
sudo yum install -y openstack-packstack
sudo packstack --allinone
#输入ssh公钥地址:/root/.ssh/id_rsa.pub
#管理员密码:root
#如果出现rpo安装错误,请删除rpo后重置。
#rpm -qa | grep rdo然后yum remove rdo-release- *。然后再次尝试packstack --allinone。
#安装完成后所有配置信息可以通过根目录查看:packstack-answers-20191014-180333.txt
2.3 安装完成后创建cell
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
2.4 查看用户
source keystonerc_admin
可以看到用户名和密码
2.5 页面登录
IP/dashboard
2.6 日志查看
cat /var/log/nova/nova-compute.log
3 OpenStack管理
3.1 实例管理
3.1.1 环境准备
准备镜像,创建外部网络(上网)、内部网络(局域网)和路由器、创建安全组(防火墙)和密钥对(可以使用密钥对免密码登录)。
3.1.2 创建实例
项目-》计算-》实例-》创建实例(配置镜像、硬件配置、网络、安全组、密钥对其他默认)-》创建实例。
3.2 VNC:实例创建完成后,点击实例名称-》控制台或VNC进入系统界面。
3.3 SSH:绑定浮动IP,可以使用SSH进行远程管理。
ssh -i testkey.pem cirros@172.24.4.219
3.3.1 实例控制:实例的启动、停止、删除、编辑
在实例列表的操作栏,下拉列表可以操作实例。
3.4 计算节点扩展
3.4.1 环境准备
3.4.1.1 安装epel仓库
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
3.4.1.2 安装openstack仓库(注意与controller的openstack版本保持一致)
yum install -y centos-release-openstack-stein
3.4.1.3 安装Openstack客户端
yum install -y python-openstackclient
3.4.1.4 安装openstack SELinux管理包
yum install -y openstack-selinux
3.4.2 安装计算节点
yum install -y openstack-nova-compute
3.4.3 配置hostname:修改/etc/hosts
添加
192.168.71.2 controller
10.42.0.11 compute01
3.4.4 配置nova:具体参数参考controller上的配置
参考:配置nova
[DEFAULT]
enabled_apis = osapi_compute,metadata
#transport_url = rabbit://openstack:abc123@controller
transport_url = rabbit://guest:guest@192.168.71.2:5672/
auth_strategy = keystone
my_ip = 10.42.0.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[api_database]
[barbican]
[cells]
[cinder]
[conductor]
[cors]
[cors.subdomain]
[database]
[ephemeral_storage_encryption]
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[guestfs]
[hyperv]
[image_file_url]
[ironic]
[keymgr]
[keystone_authtoken]
auth_uri = http://controller:5000
#auth_url = http://controller:35357
#memcached_servers = controller:11211
auth_type = password
#project_domain_name = Default
#user_domain_name = Default
#project_name = service
#username = nova
#password = nova
auth_url=http://192.168.71.2:5000
username=nova
password=9924ae10975c43df
user_domain_name=Default
project_name=services
project_domain_name=Default
[libvirt]
virt_type=qemu
[matchmaker_redis]
[matchmaker_ring]
[metrics]
[neutron]
[osapi_v21]
[oslo_concurrency]
[oslo_messaging_amqp]
[oslo_messaging_qpid]
[oslo_messaging_rabbit]
[oslo_middleware]
[rdp]
[serial_console]
[spice]
[ssl]
[trusted_computing]
[upgrade_levels]
[vmware]
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
[workarounds]
[xenserver]
[zookeeper]
3.4.5 启动服务
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
3.4.6 验证安装结果-控制端Controller
[controller@ ~]# . keystonerc-admin #获得 admin 凭证来获取只有管理员能执行命令的访问权限
openstack compute service list #在控制节点上执行新节点的检查
nova service-list #列出服务组件,以验证是否成功启动并注册了每个进程 该输出应该显示四个服务组件在控制节点上启用,一个服务组件在计算节点上启用
nova endpoints #列出身份认证服务中的 API 端点来验证身份认证服务的连通性
在dashboard中查看
管理员-计算-虚拟机管理器,可以看到新的主机,以及新主机的cpu和内存、硬盘已经合并到资源中。
3.5 镜像管理
下载镜像:下载qcow2格式的文件。支持多种格式。
上传镜像:上传文件,并选择相应的类型。默认操作。
3.6 数据管理
3.6.1 swift:对象存储,web服务的网盘。
项目-对象存储-容器-》创建容器。
3.6.2 cinder:块存储,硬盘及网络存储。
项目-卷-卷
3.7 网络管理
3.7.1 创建外部网络(管理中创建):模拟物理网卡(物理网卡的代理)。
管理员-网络=》创建网络(输入名称,选择项目admin,类型为flat,物理网络选择)
创建完成后查看端口,确认是否绑定成功。
3.7.2 创建内部网络(项目中创建):模拟内部局域网。
项目-网络=》创建网络(输入名称)-》创建子网(名称、地址、网关)-》配置子网详情(地址段,DNS)
3.7.3 创建路由器:外部网络和内部网络的连接器。
项目-网络=》创建路由(输入名称,选择外部网络,这里选择net)-》点击创建的路由名称-》增加接口=》选择内部网络(这里选择int)
3.7.4 内网访问外网:路由器
路由器连接内外网后,内网就可以访问外网了。
3.7.5 外网访问内网:绑定浮动IP
外网访问内网需要绑定浮动IP。
3.8 系统管理
3.8.1 项目管理
身份管理-项目管理
3.8.2 用户管理
身份管理-用户管理
3.8.3 角色管理
身份管理-角色管理
3.9 安全管理
3.9.1 创建安全组
项目-网络-安全组=》创建安全组(输入名称,这里用ingress)=》添加规则:打开所有tcp、udp、icmp和任何协议的出口和入口(端口选择所有端口或范围,远程选择0.0.0.0/0)。
3.9.2 ssh登录(密钥对:客户端可以使用密钥对的私钥。公钥可在openstack中查看)。
1) 创建密钥对:项目-计算-密钥对-》创建密钥对-》创建完成后自动下载到本地。copy到controller可以在controller使用ssh直接登录。可以复用,不需要每次都创建。
2) 修改私钥权限(权限太开发无法使用,使用600):chmod 600 miyue.pem
3) 使用私钥免密码登录:在controller以指定的私钥进行登录
ssh -i testkey.pem cirros@172.24.4.219
4) 查看公钥:项目-计算-密钥对点击密钥对名称即可查看
4 聚合多物理节点创建云主机
4.1 整体规划
4.2 添加计算节点
使用测试服务器,增加一个Docker的虚拟CentOS环境,根据控制节点的环境,安装配置计算组件Nova。
4.3 安装操作系统镜像
下载CentOS系统的qcow2格式云镜像,并在Glance中上传,配置。
4.4 创建安全组
在web管理端,创建入站出站规则,开放或关闭协议和端口。
4.5 创建密钥对或使用已有的密钥对。
密钥对用于从远程登录虚拟机。
4.6 创建网络拓扑
根据物理网络环境,创建外部网络、内部网络、路由器。使用路由器连接内外部网络。
4.7 创建实例:分配资源、系统、网络。
根据引导,选择之前创建的系统、网络,指定资源。
4.8 控制台查看
点击实例,查看控制台
4.9 绑定浮动IP
4.10 使用SSH进行远程管理。
ssh -i testkey.pem cirros@172.24.4.219
4.11 整体概况
资源使用情况
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)