Openstack安装配置
系统版本及环境
Openstack介绍
参考文档:https://www.cnblogs.com/jingtyu/p/6379490.html
Openstack安装前准备工作
参考文档:https://docs.openstack.org/newton/zh_CN/install-guide-rdo/
1,启用Openstack库(两个节点都需要 新加的计算节点都需要安装一下三个否则在后面yum安装的时候会找不到包名)
在CentOS中, ``extras``仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用``extras``仓库,因此你可以直接安装用于启用OpenStack仓库的包。
1 | yum install centos - release - openstack - newton |
2,安装 OpenStack 客户端(两个节点都需要)
1 | yum install python - openstackclient |
3,RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux
包实现对OpenStack服务的安全策略进行自动管理:(两个节点都需要)
1 | yum install openstack - selinux |
4,安装数据库服务 (node1上面需要安装以下都是)
1 | yum install mariadb mariadb - server python2 - PyMySQL |
数据库配置/etc/my.cnf.d/openstack.cnf
在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以是的其他节点可以通过管理网络访问访问数据库。设置其他关键字来设置一些有用的选项和UTF-8编码:
1 2 3 4 5 6 7 8 | [mysqld] bind - address = 192.168 . 0.112 default - storage - engine = innodb innodb_file_per_table max_connections = 4096 collation - server = utf8_general_ci character - set - server = utf8 |
PS:数据库默认的超时时间较长,后期需要修改
启动MySQL并且设置自启动
1 2 | systemctl enable mariadb.service systemctl start mariadb.service |
设置MySQL安全
1 | mysql_secure_installation |
5,在控制节点安装消息队列 参考 https://docs.openstack.org/newton/zh_CN/install-guide-rdo/environment-messaging.html
1 | yum install rabbitmq - server |
启动消息队列并且设置自启动
1 2 | systemctl enable rabbitmq - server systemctl start rabbitmq - server |
添加openstack用户
1 | rabbitmqctl add_user openstack openstack |
PS:这里最后那个openstack是密码
修改主机名以后需要重启主机才能设置openstack用户否则报错
给openstack用户设置权限
1 | rabbitmqctl set_permissions openstack ".*" ".*" ".*" |
有一个web界面监控的插件
使用命令列出所以插件
1 | rabbitmq - plugins list |
其中rabbitmq_management用于web界面管理
启动
1 | rabbitmq - plugins enable rabbitmq_management |
默认启动端口为15672
1 | lsof - i: 15672 |
在浏览器输入地址加端口号登陆http://192.168.0.112:15672/
默认用户名和密码均为guest
PS:使用火狐浏览器登陆,使用其他可能会出现空白页面
6,身份认证包(在数据库服务操作)
先决条件
创建数据库(进入MySQL命令行操作)
1 2 3 4 5 6 7 8 9 10 11 | create database keystone; create database glance; create database nova; create database nova_api; create database neutron; create database cinder; |
授权
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | grant all on keystone. * to 'keystone' @ 'localhost' identified by 'keystone' ; grant all on keystone. * to 'keystone' @ '%' identified by 'keystone' ; grant all on glance. * to 'glance' @ 'localhost' identified by 'glance' ; grant all on glance. * to 'glance' @ '%' identified by 'glance' ; grant all on nova. * to 'nova' @ 'localhost' identified by 'nova' ; grant all on nova. * to 'nova' @ '%' identified by 'nova' ; grant all on nova_api. * to 'nova' @ 'localhost' identified by 'nova' ; grant all on nova_api. * to 'nova' @ '%' identified by 'nova' ; grant all on neutron. * to 'neutron' @ 'localhost' identified by 'neutron' ; grant all on neutron. * to 'neutron' @ '%' identified by 'neutron' ; grant all on cinder. * to 'cinder' @ '%' identified by 'cinder' ; grant all on cinder. * to 'cinder' @ 'localhost' identified by 'cinder' ; |
验证
安装keystone
1 | yum install openstack - keystone httpd mod_wsgi |
配置文件
vim /etc/keystone/keystone.conf
在[database]下修改(640行左右)
1 | connection = mysql + pymysql: / / keystone:keystone@ 192.168 . 0.112 / keystone |
初始化数据库认证库(使用的是keystone用户)
1 | su - s / bin / sh - c "keystone-manage db_sync" keystone |
检查初始化数据库是否正确
1 | mysql - ukeystone - pkeystone - e "use keystone;show tables;" |
有表显示表示数据库初始化正常
修改memcache配置
vim /etc/keystone/keystone.conf
模块[memcache]下面修改
1 | servers = 192.168 . 0.112 : 11211 |
安装memcache
1 | yum - y install memcached python - memcached |
启动memcache
1 2 3 | systemctl start memcached systemctl status memcached systemctl enable memcached |
默认memcache配置在文件
cat /etc/sysconfig/memcached 下
修改一下把127.0.0.1修改成本机IP地址
修改令牌提供者(配置文件还是/etc/keystone/keystone.conf)
在[token]部分,配置Fernet UUID令牌的提供者。
1 2 | provider = fernet driver = memcache |
查看配置
初始化Fernet key
1 2 | keystone - manage fernet_setup - - keystone - user keystone - - keystone - group keystone keystone - manage credential_setup - - keystone - user keystone - - keystone - group keystone |
在/etc/keystone下面生成这两个配置文件
初始化标准认证服务(admin为admin用户的密码修改对应的服务器ip地址)
1 2 3 4 5 | keystone - manage bootstrap - - bootstrap - password admin \ - - bootstrap - admin - url http: / / 192.168 . 0.112 : 35357 / v3 / \ - - bootstrap - internal - url http: / / 192.168 . 0.112 : 35357 / v3 / \ - - bootstrap - public - url http: / / 192.168 . 0.112 : 5000 / v3 / \ - - bootstrap - region - id RegionOne |
查看MySQL数据库的keystone库可以看到刚刚命令创建的信息
配置Apache Http服务
a,编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点:
1 | ServerName 192.168 . 0.112 : 80 |
b,创建一个链接到``/usr/share/keystone/wsgi-keystone.conf``文件
1 | ln - s / usr / share / keystone / wsgi - keystone.conf / etc / httpd / conf.d / |
PS:该配置作用为apache和python进行通信
查看配置(监听了两个端口5000和35357)要记住每一个服务的端口
c,启动httpd
1 2 | systemctl enable httpd systemctl start httpd |
启动httpd及启动了keystone
验证
d,配置admin用户
1 2 3 4 5 6 7 | export OS_USERNAME = admin export OS_PASSWORD = admin export OS_PROJECT_NAME = admin export OS_USER_DOMAIN_NAME = Default export OS_PROJECT_DOMAIN_NAME = Default export OS_AUTH_URL = http: / / 192.168 . 0.112 : 35357 / v3 export OS_IDENTITY_API_VERSION = 3 |
用户名admin 密码admin 项目admin 域default(相当于公有云的区域)admin用的端口是35357 版本是3
验证(类似于刚刚在数据库select)
1 2 3 4 | openstack user list openstack project list openstack service list openstack endpoint list |
8,创建域、项目、用户和角色
a,本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目
1 2 | openstack project create - - domain default \ - - description "Service Project" service |
查看项目是否创建成功(nova 等放在这个项目里面其实也可以放在admin这样是模块化清晰)
b,常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo
项目和用户。
创建demo项目
1 2 | openstack project create - - domain default \ - - description "Demo Project" demo |
创建demo用户(密码输入demo)
1 2 | openstack user create - - domain default \ - - password - prompt demo |
创建user角色(这个角色是keystone的)
1 | openstack role create user |
添加 user``角色到 ``demo
项目和用户(把demo用户添加到demo项目并且赋予user角色)
1 | openstack role add - - project demo - - user demo user |
创建其他用户
创建glance用户把用户添加到service项目并且赋予admin角色(密码glance)
1 2 | openstack user create - - domain default - - password - prompt glance openstack role add - - project service - - user glance admin |
创建nove用户用户把用户添加到service项目并且赋予admin角色(密码nova)
1 2 | openstack user create - - domain default - - password - prompt nova openstack role add - - project demo - - user nova admin |
创建neutron用户用户把用户添加到service项目并且赋予admin角色(密码neutron)
1 2 | openstack user create - - domain default - - password - prompt neutron openstack role add - - project demo - - user neutron admin |
创建cinder用户用户把用户添加到service项目并且赋予admin角色(密码cinder)
1 2 | openstack user create - - domain default - - password - prompt cinder openstack role add - - project demo - - user cinder admin |
验证(用户有6个用户有3个项目有3个角色_memer_不是我创建的可能是系统默认的)
PS:假如创建错误了使用类似openstack user delete ID命令删除
验证操作
撤销临时环境变量``OS_AUTH_URL``和``OS_PASSWORD``
1 | unset OS_AUTH_URL OS_PASSWORD |
作为 admin
用户,请求认证令牌:
1 2 3 | openstack - - os - auth - url http: / / 192.168 . 0.112 : 35357 / v3 \ - - os - project - domain - name Default - - os - user - domain - name Default \ - - os - project - name admin - - os - username admin token issue |
输入admin的密码admin后如果出现以下代表验证成功
如果输入密码错误报以下提示
使用demo用户验证(端口是5000项目是demo用户的demo)
1 | openstack - - os - auth - url http: / / 192.168 . 0.112 : 5000 / v3 - - os - project - domain - name Default - - os - user - domain - name Default - - os - project - name demo - - os - username demo token issue |
创建 OpenStack 客户端环境脚本
编辑admin-openstack文档添加以下内容
1 2 3 4 5 6 7 8 | export OS_PROJECT_DOMAIN_NAME = Default export OS_USER_DOMAIN_NAME = Default export OS_PROJECT_NAME = admin export OS_USERNAME = admin export OS_PASSWORD = admin export OS_AUTH_URL = http: / / 192.168 . 0.112 : 35357 / v3 export OS_IDENTITY_API_VERSION = 3 export OS_IMAGE_API_VERSION = 2 |
编辑文件 demo-openrc
并添加如下内容
1 2 3 4 5 6 7 8 | export OS_PROJECT_DOMAIN_NAME = Default export OS_USER_DOMAIN_NAME = Default export OS_PROJECT_NAME = demo export OS_USERNAME = demo export OS_PASSWORD = demo export OS_AUTH_URL = http: / / 192.168 . 0.112 : 5000 / v3 export OS_IDENTITY_API_VERSION = 3 export OS_IMAGE_API_VERSION = 2 |
验证
1 2 3 4 | source admin - openstack openstack token issue source demo - openstack openstack token issue |
7,镜像包
PS:简单来说,本指南描述了使用`file``作为后端配置镜像服务,能够上传并存储在一个托管镜像服务的控制节点目录中。默认情况下,这个目录是 /var/lib/glance/images/。
在你继续后面的操作之前,请确保控制节点上的这个目录下至少有几个G的可用空间。请记住,因为对于控制节点来说一般“文件”后端都是本地的,部署多glance节点的场景不是很常见。
创建glance库 及glance用户并授权(上面已完成)
添加 admin
角色到 glance
用户和 service
项目上(上面已完成)
创建``glance``服务实体(描述可以自定义后面的image是类型必须写对)
1 2 | openstack service create - - name glance \ - - description "OpenStack Image" image |
PS:以上执行可能会报错
执行以下命令后在执行
1 | source admin - openstack |
创建镜像服务的 API 端点:
1 2 3 4 5 6 7 8 | openstack endpoint create - - region RegionOne \ image public http: / / 192.168 . 0.112 : 9292 openstack endpoint create - - region RegionOne \ image internal http: / / 192.168 . 0.112 : 9292 openstack endpoint create - - region RegionOne \ image admin http: / / 192.168 . 0.112 : 9292 |
验证
1 | openstack endpoint list |
安装glance
1 | yum install openstack - glance |
修改配置文件
编辑文件 /etc/glance/glance-api.conf
在 [database]
部分,配置数据库访问
1 | connection = mysql + pymysql: / / glance:glance@ 192.168 . 0.112 / glance |
修改配置文件vim /etc/glance/glance-registry.conf
在[database]
1 | connection = mysql + pymysql: / / glance:glance@ 192.168 . 0.112 / glance |
同步数据库
1 | su - s / bin / sh - c "glance-manage db_sync" glance |
PS:同步数据库有警告可以忽略
查看
1 | mysql - uroot - plym5401061 - e 'use glance;show tables;' |
/etc/glance/glance-api.conf在 [keystone_authtoken]
和 [paste_deploy]
部分,配置认证服务访问
[keystone_authtoken]
1 2 3 4 5 6 7 8 9 | auth_uri = http: / / 192.168 . 0.112 : 5000 auth_url = http: / / 192.168 . 0.112 : 35357 memcached_servers = 192.168 . 0.112 : 11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance |
[paste_deploy]
1 | flavor = keystone |
/etc/glance/glance-api.conf在 [glance_store]
部分,配置本地文件系统存储和镜像文件位置:
(默认配置文件注释打开即可)
1 2 3 | stores = file ,http default_store = file filesystem_store_datadir = / var / lib / glance / images / |
/etc/glance/glance-registry.conf[keystone_authtoken]
和 [paste_deploy]
部分,配置认证服务访问
[keystone_authtoken]
1 2 3 4 5 6 7 8 9 | auth_uri = http: / / 192.168 . 0.112 : 5000 auth_url = http: / / 192.168 . 0.112 : 35357 memcached_servers = 192.168 . 0.112 : 11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = glance |
[paste_deploy]
1 | flavor = keystone |
检查配置
启动并且设置开机启动
1 2 | systemctl enable openstack - glance - api.service openstack - glance - registry.service systemctl start openstack - glance - api.service openstack - glance - registry.service |
确认镜像的上传并验证属性(没有返回就是正确)
1 | openstack image list |
官方验证方法
1 2 3 4 | source admin - openstack wget http: / / download.cirros - cloud.net / 0.3 . 4 / cirros - 0.3 . 4 - x86_64 - disk.img openstack image create "cirros" - - file cirros - 0.3 . 4 - x86_64 - disk.img - - disk - format qcow2 - - container - format bare - - public openstack image list |
8,nova包
首先安装控制节点
1 2 3 | yum install openstack - nova - api openstack - nova - conductor \ openstack - nova - console openstack - nova - novncproxy \ openstack - nova - scheduler |
编辑``/etc/nova/nova.conf``文件并完成下面的操作:
在``[DEFAULT]``部分,只启用计算和元数据API:
1 | enabled_apis = osapi_compute,metadata |
在``[api_database]``和``[database]``部分,配置数据库的连接:
1 2 3 4 | [api_database] connection = mysql + pymysql: / / nova:nova@ 192.168 . 0.112 / nova_api [database] connection = mysql + pymysql: / / nova:nova@ 192.168 . 0.112 / nova |
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
1 2 | [DEFAULT] transport_url = rabbit: / / openstack:openstack@ 192.168 . 0.112 |
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
1 2 3 4 5 6 7 8 9 10 11 12 13 | [DEFAULT] ... auth_strategy = keystone [keystone_authtoken] auth_uri = http: / / 192.168 . 0.112 : 5000 auth_url = http: / / 192.168 . 0.112 : 35357 memcached_servers = 192.168 . 0.112 : 11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova |
PS:官方文档的my_ip不配置了
在 ``[DEFAULT]``部分,启用网络服务支持
1 2 3 4 | [DEFAULT] ... use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver |
PS:默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务
在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
1 2 | vncserver_listen = 0.0 . 0.0 vncserver_proxyclient_address = 192.168 . 0.112 |
在 [glance]
区域,配置镜像服务 API 的位置:
1 2 | [glance] api_servers = http: / / 192.168 . 0.112 : 9292 |
在 [oslo_concurrency]
部分,配置锁路径:
1 | [oslo_concurrency]lock_path = / var / lib / nova / tmp |
查看所有修改的配置
同步Compute 数据库
1 2 | su - s / bin / sh - c "nova-manage api_db sync" nova su - s / bin / sh - c "nova-manage db sync" nova |
PS:api的没有提示,db sync有警告
验证
1 | mysql - h 192.168 . 0.112 - u nova - pnova - e 'use nova;show tables;' |
启动并且设置开机自启动
1 2 3 4 5 6 7 | systemctl enable openstack - nova - api.service \ openstack - nova - consoleauth.service openstack - nova - scheduler.service \ openstack - nova - conductor.service openstack - nova - novncproxy.service systemctl start openstack - nova - api.service \ openstack - nova - consoleauth.service openstack - nova - scheduler.service \ openstack - nova - conductor.service openstack - nova - novncproxy.service |
创建nova服务实体
1 2 | openstack service create - - name nova \ - - description "OpenStack Compute" compute |
创建 Compute 服务 API 端点 :
1 2 3 4 5 6 7 8 | openstack endpoint create - - region RegionOne \ compute public http: / / 192.168 . 0.112 : 8774 / v2. 1 / % \(tenant_id\)s openstack endpoint create - - region RegionOne \ compute internal http: / / 192.168 . 0.112 : 8774 / v2. 1 / % \(tenant_id\)s openstack endpoint create - - region RegionOne \ compute admin http: / / 192.168 . 0.112 : 8774 / v2. 1 / % \(tenant_id\)s |
验证
openstack host list
PS:这个命令失败提示如下
因为前面没有给nova用户添加admin角色,解决方法
1 | openstack role add - - project service - - user nova admin |
验证成功
看到3个服务状态是up
以上就安装完控制节点了,下面安装计算节点
在node2上面安装
安装软件包
1 | yum install openstack - nova - compute |
修改配置文件,直接把控制节点的nova.conf拷贝过来,先把数据库配置删除
修改[vnc]
1 2 3 4 | enabled = true vncserver_listen = 0.0 . 0.0 vncserver_proxyclient_address = 192.168 . 0.115 xvpvncproxy_base_url = http: / / 192.168 . 0.112 : 6080 / console |
PS:计算节点多只有vncserver_proxyclient_address配置不一样,其他一样
vncserver_proxyclient_address为计算节点IP地址
确定您的计算节点是否支持虚拟机的硬件加速(结果不为0即可)
1 | egrep - c '(vmx|svm)' / proc / cpuinfo |
修改配置在[libvirt]下
[libvirt]
1 | virt_type = kvm |
启动计算服务及其依赖,并将其配置为随系统自动启动:
1 2 | systemctl enable libvirtd.service openstack - nova - compute.service systemctl start libvirtd.service openstack - nova - compute.service |
启动后会自动注册
在控制节点验证
1 | openstack compute service list |
PS:需要在安装前确认主机名并且永不修改
9,网络包
在控制节点上面安装
先按照官方文档安装提供者网络
安装组件
1 2 | yum install openstack - neutron openstack - neutron - ml2 \ openstack - neutron - linuxbridge ebtables |
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作
在 [database]
部分,配置数据库访问:
1 2 | [database] connection = mysql + pymysql: / / neutron:neutron@ 192.168 . 0.112 / neutron |
在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:
1 2 3 | [DEFAULT] core_plugin = ml2 service_plugins = |
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
1 | transport_url = rabbit: / / openstack:openstack@ 192.168 . 0.112 |
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http: / / 192.168 . 0.112 : 5000 auth_url = http: / / 192.168 . 0.112 : 35357 memcached_servers = 192.168 . 0.112 : 11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = neutron password = neutron |
在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [DEFAULT] ... notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True [nova] auth_url = http: / / 192.168 . 0.112 : 35357 auth_type = password project_domain_name = Default user_domain_name = Default region_name = RegionOne project_name = service username = nova password = nova |
在 [oslo_concurrency]
部分,配置锁路径:
1 2 | [oslo_concurrency] lock_path = / var / lib / neutron / tmp |
配置 Modular Layer 2 (ML2) 插件
编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作
在``[ml2]``部分,启用flat和VLAN网络:
1 2 3 | [ml2] ... type_drivers = flat,vlan,local |
PS:官方文档没有local我自己加上去的,如果没有会导致后面启动失败neutron-server查看日志如下
tail -f /var/log/neutron/server.log
在``[ml2]``部分,禁用私有网络:
1 2 3 | [ml2] ... mechanism_drivers = linuxbridge |
在``[ml2]`` 部分,启用端口安全扩展驱动:
1 2 3 | [ml2] ... extension_drivers = port_security |
在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:
1 2 3 | [ml2_type_flat] ... flat_networks = provider |
在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:
1 2 3 | [securitygroup] ... enable_ipset = True |
配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
-
编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
-
在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
12[linux_bridge]
physical_interface_mappings
=
provider:eth0
-
PS:后面eth0是公共网络接口名称
在``[vxlan]``部分,禁止VXLAN覆盖网络:
1 2 | [vxlan] enable_vxlan = False |
在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
1 2 3 4 | [securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver |
配置DHCP代理
编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作
在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
1 2 3 4 5 | [DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True |
配置元数据代理
编辑``/etc/neutron/metadata_agent.ini``文件并完成以下操作:
在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:
1 2 3 4 | [DEFAULT] ... nova_metadata_ip = 192.168 . 0.112 metadata_proxy_shared_secret = oldboy |
配置计算服务来使用网络服务
编辑``/etc/nova/nova.conf``文件并完成以下操作:
在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:
1 2 3 4 5 6 7 8 9 10 11 12 | [neutron] url = http: / / 192.168 . 0.112 : 9696 auth_url = http: / / 192.168 . 0.112 : 35357 auth_type = password project_domain_name = Default user_domain_name = Default region_name = RegionOne project_name = service username = neutron password = neutron service_metadata_proxy = True metadata_proxy_shared_secret = oldboy |
PS:metadata_proxy_shared_secret是上面配置的密码
改完需要重启
完成安装
网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件
/etc/neutron/plugins/ml2/ml2_conf.ini``。如果超链接不存在,使用下面的命令创建它:
1 | ln - s / etc / neutron / plugins / ml2 / ml2_conf.ini / etc / neutron / plugin.ini |
同步数据库
1 2 | su - s / bin / sh - c "neutron - db - manage - - config - file / etc / neutron / neutron.conf \ - - config - file / etc / neutron / plugins / ml2 / ml2_conf.ini upgrade head" neutron |
同步有信息,最后有确定或者ok
重启计算API 服务:
1 | systemctl restart openstack - nova - api.service |
当系统启动时,启动 Networking 服务并配置它启动。
对于两种网络选项1:
1 2 3 4 5 6 7 | systemctl enable neutron - server.service \ neutron - linuxbridge - agent.service neutron - dhcp - agent.service \ neutron - metadata - agent.service systemctl start neutron - server.service \ neutron - linuxbridge - agent.service neutron - dhcp - agent.service \ neutron - metadata - agent.service |
PS:官方文档的对于网络选项2不执行
创建``neutron``服务实体
1 2 | openstack service create - - name neutron \ - - description "OpenStack Networking" network |
检查
创建网络服务API端点
1 2 3 4 5 6 | openstack endpoint create - - region RegionOne \ network public http: / / 192.168 . 0.112 : 9696 openstack endpoint create - - region RegionOne \ network internal http: / / 192.168 . 0.112 : 9696 openstack endpoint create - - region RegionOne \ network admin http: / / 192.168 . 0.112 : 9696 |
验证
添加``admin`` 角色到``neutron`` 用户:
1 | openstack role add - - project service - - user neutron admin |
验证网络节点
1 | neutron agent - list |
看到三个笑脸就表示控制节点正常
在node2安装计算节点
安装组件
1 | yum install openstack - neutron - linuxbridge ebtables ipset |
编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作
在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。
在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限
1 2 3 | [DEFAULT] ... transport_url = rabbit: / / openstack:openstack@ 192.168 . 0.112 |
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [DEFAULT] ... auth_strategy = keystone [keystone_authtoken] auth_uri = http: / / 192.168 . 0.112 : 5000 auth_url = http: / / 192.168 . 0.112 : 35357 memcached_servers = 192.168 . 0.112 : 11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = neutron password = neutron |
在 [oslo_concurrency]
部分,配置锁路径:
1 | lock_path = / var / lib / neutron / tmp |
过滤查看一下
配置Linuxbridge代理
把控制节点的/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件复制过来即可
配置计算服务来使用网络服务
编辑``/etc/nova/nova.conf``文件并完成下面的操作
在``[neutron]`` 部分,配置访问参数:
1 2 3 4 5 6 7 8 9 10 | [neutron] url = http: / / 192.168 . 0.112 : 9696 auth_url = http: / / 192.168 . 0.112 : 35357 auth_type = password project_domain_name = Default user_domain_name = Default region_name = RegionOne project_name = service username = neutron password = neutron |
PS:再安装其他计算节点直接把配置文件拷贝过去即可
完成安装
重启计算服务
1 | systemctl restart openstack - nova - compute.service |
启动Linuxbridge代理并配置它开机自启动
1 2 | systemctl enable neutron - linuxbridge - agent.service systemctl start neutron - linuxbridge - agent.service |
验证,在控制节点
1 | neutron agent - list |
PS:看到4个笑脸代表neutron控制节点和计算节点均配置完毕
PS:安装完创建虚拟机之前使用命令检查,如果正常基本创建虚拟机没有问题
1 2 | neutron agent - list nova service - list |
检查环境
查看端口
1 2 3 4 5 6 7 8 9 10 | 3306 MySQL 11211 Memcache 9292 9191 glance 15672 rabbitmqctl的web界面 53 DNS 6080 VNC 8774 8775 nova 5000 keystone 5672 35357 keystone admin 9696 |
创建提供者网络
在控制节点上,加载 admin
凭证来获取管理员能执行的命令访问权限:
1 | source admin - openstack |
1 2 3 | openstack network create - - share - - external \ - - provider - physical - network provider \ - - provider - network - type flat provider |
share创建共享网络 网络类型单一扁平网络
查看
1 | neutron net - list |
子网是空的
创建子网
1 2 3 4 | openstack subnet create - - network provider \ - - allocation - pool start = 192.168 . 0.200 ,end = 192.168 . 0.210 \ - - dns - nameserver 192.168 . 0.1 - - gateway 192.168 . 0.1 \ - - subnet - range 192.168 . 0.0 / 24 provider - subet |
分配的地址是从192.168.0.200-192.168.0.210 dns和网关都是192.168.0.1 子网地址是192.168.0.0 子网名称是provider-subet
检查
1 | neutron subnet - list |
创建m1.nano类型
默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像
使用的是admin的环境变量
1 | openstack flavor create - - id 0 - - vcpus 1 - - ram 64 - - disk 1 m1.nano |
生成一个键值对
生成和添加秘钥对:
1 2 3 | source demo - openstack ssh - keygen - q - N "" openstack keypair create - - public - key ~ / .ssh / id_rsa.pub mykey |
PS:环境变量是demo的,以下使用的都是demo的环境变量,千万不要搞错,否则创建会失败,或者创建以后错误。
验证公钥的添加:
1 | openstack keypair list |
增加安全组规则
默认情况下, ``default``安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。
1 | openstack security group rule create - - proto icmp default |
允许安全 shell (SSH) 的访问
1 | openstack security group rule create - - proto tcp - - dst - port 22 default |
启动一个实例
列出可用类型:
1 | openstack flavor list |
列出可用镜像
列出可用网络
1 | openstack network list |
列出可用的安全组:
1 | openstack security group list |
启动实例
1 | openstack server create - - flavor m1.nano - - image cirros - - nic net - id = 1cef260f - 9e0b - 416e - be71 - 80aeb3e344df - - security - group default - - key - name mykey provider - instance |
PS:net-id为刚刚列出的网络id
查看刚刚创建的实例
1 | openstack server list |
创建完毕在控制和计算节点会自动生成一个名称一样的桥接网卡
计算节点的
获取你势力的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它
1 | openstack console url show provider - instance |
PS:使用ip地址替换127.0.0.1
使用火狐浏览器
用户名和密码有提示
验证能否ping通网关和公网
1 2 | ping 192.168 . 0.1 ping www.baidu.com |
10,安装配置Horizon
Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务。
这个部署示例使用的是 Apache Web 服务器。
安装在node2上面(如果安装在控制节点可能会导致包冲突)两台机器的时间必须完全一致
安装软件包
1 | yum install openstack - dashboard |
编辑文件 /etc/openstack-dashboard/local_settings
并完成如下动作
在 controller
节点上配置仪表盘以使用 OpenStack 服务:(这里是控制节点代表是是keystone的ip地址)
1 | OPENSTACK_HOST = "192.168.0.112" |
允许所有主机访问仪表板:
1 | ALLOWED_HOSTS = [ '*' , ] |
配置 memcached
会话存储服务(官方文档有本次未配置):
1 2 3 4 5 6 7 8 | SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default' : { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache' , 'LOCATION' : 'controller:11211' , } } |
启用第3版认证API:
1 | OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST |
启用对域的支持(共有云有用途,私有云一般一个域即可)
只有openstack v3版本支持域v2版本不正常
查看默认域使用命令openstack domain list
1 | OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True |
配置API版本:
1 2 3 4 5 | OPENSTACK_API_VERSIONS = { "identity" : 3 , "image" : 2 , "volume" : 2 , } |
通过仪表盘创建用户时的默认域配置为 default
:
1 | OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default" |
通过仪表盘创建的用户默认角色配置为 user
:
1 | OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" |
如果您选择网络参数1,禁用支持3层网络服务
1 2 3 4 5 6 7 8 9 10 11 | OPENSTACK_NEUTRON_NETWORK = { ... 'enable_router' : False , 'enable_quotas' : False , 'enable_distributed_router' : False , 'enable_ha_router' : False , 'enable_lb' : False , 'enable_firewall' : False , 'enable_vpn' : False , 'enable_fip_topology_check' : False , } |
可以选择性地配置时区:
1 | TIME_ZONE = "Asia/Shanghai" |
重启web服务器以及会话存储服务(因为本次未配置memcached所以不用启动memcached):
1 | systemctl restart httpd.service memcached.service |
使用火狐登陆http://192.168.0.115/dashboard/
默认域default 用户名admin 密码admin
admin可以看到所有主机,可以使用demo(密码demo)登陆只能查看demo用户自己创建的主机
子网的网络地址不够用可以通过以下方法添加(使用admin登陆)
可以通过数据库表查看
下一篇随笔:Openstack虚拟机创建流程
学习:SOA 消息队列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!