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]``部分,将公共虚拟网络和公共物理网络接口对应起来:

      1
      2
      [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 消息队列

 

posted @   minseo  阅读(1117)  评论(0编辑  收藏  举报
编辑推荐:
· 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代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示