Openstack安装前环境准备

Posted minseo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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仓库的包。

yum install centos-release-openstack-newton

   2,安装 OpenStack 客户端(两个节点都需要)

yum install python-openstackclient

   3,RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理:(两个节点都需要)

 yum install openstack-selinux

   4,安装数据库服务 (node1上面需要安装以下都是)

 yum install mariadb mariadb-server python2-Pymysql

   数据库配置/etc/my.cnf.d/openstack.cnf

  在[mysqld]中,设置“bind-address”值为控制节点的管理网络IP地址以是的其他节点可以通过管理网络访问访问数据库。设置其他关键字来设置一些有用的选项和UTF-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并且设置自启动

systemctl enable mariadb.service
systemctl start mariadb.service

  设置MySQL安全

mysql_secure_installation

  5,在控制节点安装消息队列 参考 https://docs.openstack.org/newton/zh_CN/install-guide-rdo/environment-messaging.html

yum install rabbitmq-server

   启动消息队列并且设置自启动

systemctl enable rabbitmq-server
systemctl start rabbitmq-server

  添加openstack用户

rabbitmqctl add_user openstack openstack

  PS:这里最后那个openstack是密码

    修改主机名以后需要重启主机才能设置openstack用户否则报错

  给openstack用户设置权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

  有一个web界面监控的插件

  使用命令列出所以插件

rabbitmq-plugins list

  

  其中rabbitmq_management用于web界面管理

  启动

rabbitmq-plugins enable rabbitmq_management

  默认启动端口为15672

lsof -i:15672

  在浏览器输入地址加端口号登陆http://192.168.0.112:15672/

  默认用户名和密码均为guest

  PS:使用火狐浏览器登陆,使用其他可能会出现空白页面

  6,身份认证包(在数据库服务操作)

  先决条件

  创建数据库(进入MySQL命令行操作)

create database keystone;

create database glance;

create database nova;

create database nova_api;

create database neutron;

create database cinder;

  授权

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

yum install openstack-keystone httpd mod_wsgi

   配置文件

  vim /etc/keystone/keystone.conf

  在[database]下修改(640行左右)

connection = mysql+pymysql://keystone:keystone@192.168.0.112/keystone

  初始化数据库认证库(使用的是keystone用户)

su -s /bin/sh -c "keystone-manage db_sync" keystone

  检查初始化数据库是否正确

mysql -ukeystone -pkeystone -e "use keystone;show tables;"

  有表显示表示数据库初始化正常

  修改memcache配置

  vim /etc/keystone/keystone.conf

  模块[memcache]下面修改

servers = 192.168.0.112:11211

  安装memcache

yum -y install memcached python-memcached

  启动memcache

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令牌的提供者。

provider = fernet
driver = memcache

  

  

  查看配置

  

  初始化Fernet key

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地址)

 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`` 选项为控制节点:

ServerName 192.168.0.112:80

  

  b,创建一个链接到``/usr/share/keystone/wsgi-keystone.conf``文件

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

  PS:该配置作用为apache和python进行通信

  查看配置(监听了两个端口5000和35357)要记住每一个服务的端口

  c,启动httpd

systemctl enable httpd
systemctl start httpd

  启动httpd及启动了keystone

  验证

  d,配置admin用户

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)

openstack user list
openstack project list
openstack service list
openstack endpoint list

  

 

  8,创建域、项目、用户和角色

    a,本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目

openstack project create --domain default \\
  --description "Service Project" service

    查看项目是否创建成功(nova 等放在这个项目里面其实也可以放在admin这样是模块化清晰)

    b,常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。

    创建demo项目

openstack project create --domain default \\
  --description "Demo Project" demo

    创建demo用户(密码输入demo)

openstack user create --domain default \\
  --password-prompt demo

    创建user角色(这个角色是keystone的)

openstack role create user

    添加 user``角色到 ``demo 项目和用户(把demo用户添加到demo项目并且赋予user角色)

openstack role add --project demo --user demo user

    创建其他用户

    创建glance用户把用户添加到service项目并且赋予admin角色(密码glance)

openstack user create --domain default --password-prompt glance
openstack role add --project service --user glance admin

    创建nove用户用户把用户添加到service项目并且赋予admin角色(密码nova)

openstack user create --domain default --password-prompt nova
openstack role add --project demo --user nova admin

    创建neutron用户用户把用户添加到service项目并且赋予admin角色(密码neutron)

openstack user create --domain default --password-prompt neutron
openstack role add --project demo --user neutron admin

    创建cinder用户用户把用户添加到service项目并且赋予admin角色(密码cinder)

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``

unset OS_AUTH_URL OS_PASSWORD

  作为 admin 用户,请求认证令牌:

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)

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文档添加以下内容

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 并添加如下内容

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

  验证

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是类型必须写对)

openstack service create --name glance \\
  --description "OpenStack Image" image

  PS:以上执行可能会报错

  执行以下命令后在执行

source admin-openstack 

  创建镜像服务的 API 端点:

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

  验证

openstack endpoint list

  安装glance

yum install openstack-glance

   修改配置文件

  编辑文件 /etc/glance/glance-api.conf 

  在 [database] 部分,配置数据库访问

connection = mysql+pymysql://glance:glance@192.168.0.112/glance

  

  修改配置文件vim /etc/glance/glance-registry.conf

  在[database]

connection = mysql+pymysql://glance:glance@192.168.0.112/glance

  同步数据库

su -s /bin/sh -c "glance-manage db_sync" glance

  PS:同步数据库有警告可以忽略

  查看

mysql -uroot -plym5401061 -e \'use glance;show tables;\'

  

  /etc/glance/glance-api.conf在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问

  [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 = glance
password = glance

  

   [paste_deploy]

flavor = keystone

  /etc/glance/glance-api.conf在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:

  (默认配置文件注释打开即可)

stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

  

  /etc/glance/glance-registry.conf[keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问

  [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 = glance
password = glance

  

   [paste_deploy]

flavor = keystone

  检查配置

  启动并且设置开机启动

systemctl enable openstack-glance-api.service   openstack-glance-registry.service
systemctl start openstack-glance-api.service   openstack-glance-registry.service

  确认镜像的上传并验证属性(没有返回就是正确)

openstack image list

  官方验证方法

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包

  首先安装控制节点

 

 

yum install openstack-nova-api openstack-nova-conductor \\
  openstack-nova-console openstack-nova-novncproxy \\
  openstack-nova-scheduler

   编辑``/etc/nova/nova.conf``文件并完成下面的操作:

    在``[DEFAULT]``部分,只启用计算和元数据API:

enabled_apis = osapi_compute,metadata

    

    在``[api_database]``和``[database]``部分,配置数据库的连接:

[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``消息队列访问权限:

 [DEFAULT]
transport_url=rabbit://openstack:openstack@192.168.0.112

    在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问

[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]``部分,启用网络服务支持

[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

  PS:默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务

    在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :

vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.0.112

    在 [glance] 区域,配置镜像服务 API 的位置:

[glance]
api_servers=http://192.168.0.112:9292

    在 [oslo_concurrency] 部分,配置锁路径:

[oslo_concurrency]
lock_path=/var/lib/nova/tmp

  查看所有修改的配置

  同步Compute 数据库

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有警告

  验证

mysql -h 192.168.0.112 -u nova -pnova -e \'use nova;show tables;\'

  启动并且设置开机自启动

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服务实体

openstack service create --name nova \\
  --description "OpenStack Compute" compute

  创建 Compute 服务 API 端点 :

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角色,解决方法

openstack role add --project service --user nova admin

  验证成功

看到3个服务状态是up

 

  以上就安装完控制节点了,下面安装计算节点

  在node2上面安装

  安装软件包

yum install openstack-nova-compute

  修改配置文件,直接把控制节点的nova.conf拷贝过来,先把数据库配置删除

  修改[vnc] 

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即可)

egrep -c \'(vmx|svm)\' /proc/cpuinfo

  修改配置在[libvirt]下

    [libvirt]

virt_type=kvm

  启动计算服务及其依赖,并将其配置为随系统自动启动:

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service

  启动后会自动注册

  在控制节点验证

openstack compute service list

   PS:需要在安装前确认主机名并且永不修改

 

  9,网络包

  在控制节点上面安装

  先按照官方文档安装提供者网络

  安装组件

yum install openstack-neutron openstack-neutron-ml2 \\
  openstack-neutron-linuxbridge ebtables

   编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作

  在 [database] 部分,配置数据库访问:

[database]
connection = mysql+pymysql://neutron:neutron@192.168.0.112/neutron

  在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:

[DEFAULT]
core_plugin = ml2
service_plugins =

  在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:

transport_url = rabbit://openstack:openstack@192.168.0.112

  在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问

[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]``部分,配置网络服务来通知计算节点的网络拓扑变化

[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] 部分,配置锁路径:

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

  

  

配置 Modular Layer 2 (ML2) 插件

  编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作

  在``[ml2]``部分,启用flat和VLAN网络:

[ml2]
...
type_drivers = flat,vlan,local

  PS:官方文档没有local我自己加上去的,如果没有会导致后面启动失败neutron-server查看日志如下

  tail -f /var/log/neutron/server.log

  在``[ml2]``部分,禁用私有网络:

[ml2]
...
mechanism_drivers = linuxbridge

  在``[ml2]`` 部分,启用端口安全扩展驱动:

[ml2]
...
extension_drivers = port_security

  在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:

[ml2_type_flat]
...
flat_networks = provider

  在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:

[securitygroup]
...
enable_ipset = True

  

配置Linuxbridge代理

  

  Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。

  • 编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:

    • 在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:

      [linux_bridge]
      physical_interface_mappings = provider:eth0

    PS:后面eth0是公共网络接口名称

  在``[vxlan]``部分,禁止VXLAN覆盖网络:

[vxlan]
enable_vxlan = False

  在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:

[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置DHCP代理

  编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作

  在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据

[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]`` 部分,配置元数据主机以及共享密码:

[DEFAULT]
...
nova_metadata_ip = 192.168.0.112
metadata_proxy_shared_secret = oldboy

  配置计算服务来使用网络服务

  编辑``/etc/nova/nova.conf``文件并完成以下操作:

  在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:

[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``。如果超链接不存在,使用下面的命令创建它:

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

  同步数据库

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 服务:

systemctl restart openstack-nova-api.service

  当系统启动时,启动 Networking 服务并配置它启动。

  对于两种网络选项1:

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``服务实体

openstack service create --name neutron \\
  --description "OpenStack Networking" network

  检查

 

  创建网络服务API端点

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`` 用户:

openstack role add --project service --user neutron admin

验证网络节点

neutron agent-list

 看到三个笑脸就表示控制节点正常

  

  在node2安装计算节点

  安装组件

yum install openstack-neutron-linuxbridge ebtables ipset

  编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作

  在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。

  在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限

[DEFAULT]
...
transport_url = rabbit://openstack:openstack@192.168.0.112

  在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[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] 部分,配置锁路径:

lock_path = /var/lib/neutron/tmp

  过滤查看一下

  

  配置Linuxbridge代理

   把控制节点的/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件复制过来即可

  

  配置计算服务来使用网络服务

  编辑``/etc/nova/nova.conf``文件并完成下面的操作

  在``[neutron]`` 部分,配置访问参数:

[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:再安装其他计算节点直接把配置文件拷贝过去即可

  

  完成安装

  重启计算服务

systemctl restart openstack-nova-compute.service

  启动Linuxbridge代理并配置它开机自启动

systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

  验证,在控制节点

neutron agent-list

  

  PS:看到4个笑脸代表neutron控制节点和计算节点均配置完毕

  PS:安装完创建虚拟机之前使用命令检查,如果正常基本创建虚拟机没有问题

neutron agent-list
nova service-list

  

  检查环境

  查看端口

 

 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 凭证来获取管理员能执行的命令访问权限:

 source admin-openstack

  

openstack network create  --share --external \\
  --provider-physical-network provider \\
  --provider-network-type flat provider

  share创建共享网络  网络类型单一扁平网络 

  查看

neutron net-list

  子网是空的

  创建子网

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

  检查

neutron subnet-list

  

  

  

  创建m1.nano类型

  默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像

  使用的是admin的环境变量

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano 

   生成一个键值对

   生成和添加秘钥对:

source demo-openstack 
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

  PS:环境变量是demo的,以下使用的都是demo的环境变量,千万不要搞错,否则创建会失败,或者创建以后错误。

  验证公钥的添加:

openstack keypair list

  增加安全组规则

  默认情况下, ``default``安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。

openstack security group rule create --proto icmp default

  允许安全 shell (SSH) 的访问

openstack security group rule create --proto tcp --dst-port 22 default

  启动一个实例

  列出可用类型:

openstack flavor list

  列出可用镜像

  列出可用网络

openstack network list

  列出可用的安全组:

openstack security group list

  启动实例

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

  查看刚刚创建的实例

openstack server list

  创建完毕在控制和计算节点会自动生成一个名称一样的桥接网卡

  计算节点的

 

  获取你势力的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它

openstack console url show provider-instance

  PS:使用ip地址替换127.0.0.1

    使用火狐浏览器

    用户名和密码有提示

  验证能否ping通网关和公网

ping 192.168.0.1
ping www.baidu.com

 

  10,安装配置Horizon

  Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务。

  这个部署示例使用的是 Apache Web 服务器。

  安装在node2上面(如果安装在控制节点可能会导致包冲突)两台机器的时间必须完全一致

  安装软件包

yum install openstack-dashboard

  编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作

  在 controller 节点上配置仪表盘以使用 OpenStack 服务:(这里是控制节点代表是是keystone的ip地址)

OPENSTACK_HOST = "192.168.0.112"

  允许所有主机访问仪表板:

ALLOWED_HOSTS = [\'*\', ]

  配置 memcached 会话存储服务(官方文档有本次未配置):

SESSION_ENGINE = \'django.contrib.sessions.backends.cache\'

CACHES = {
    \'default\': {
         \'BACKEND\': \'django.core.cache.backends.memcached.MemcachedCache\',
         \'LOCATION\': \'controller:11211\',
    }
}

  启用第3版认证API:

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

  启用对域的支持(共有云有用途,私有云一般一个域即可)

  只有openstack v3版本支持域v2版本不正常

  查看默认域使用命令openstack domain list

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

  配置API版本:

OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
}

  通过仪表盘创建用户时的默认域配置为 default :

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"

  通过仪表盘创建的用户默认角色配置为 user :

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

  如果您选择网络参数1,禁用支持3层网络服务

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,
}

  可以选择性地配置时区:

TIME_ZONE = "Asia/Shanghai"

  重启web服务器以及会话存储服务(因为本次未配置memcached所以不用启动memcached):

systemctl restart httpd.service memcached.service

  

  使用火狐登陆http://192.168.0.115/dashboard/

  默认域default 用户名admin 密码admin

  

 

 

 

 

  admin可以看到所有主机,可以使用demo(密码demo)登陆只能查看demo用户自己创建的主机

  

  子网的网络地址不够用可以通过以下方法添加(使用admin登陆)

可以通过数据库表查看

 

 下一篇随笔:Openstack虚拟机创建流程

学习:SOA 消息队列

 

以上是关于Openstack安装前环境准备的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack手动安装手册即错误排查(Icehouse)

OpenStack-Ocata版的官方安装文档

OpenStack教程-02.在CentOS7.5上安装OpenStack-Rocky-系统环境准备-计算节点(其他节点相同)

OpenStack Pike Minimal安装:环境准备

OpenStack Train:系统环境实施准备

(转)基于OpenStack构建企业私有云实验环境准备