系统版本及环境

OpenStack如何下载 openstack安装过程_ide

 

Openstack介绍

参考文档:

 

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


  

OpenStack如何下载 openstack安装过程_ide_02

  其中rabbitmq_management用于web界面管理

  启动



rabbitmq-plugins enable rabbitmq_management



  默认启动端口为15672



lsof -i:15672



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

  默认用户名和密码均为guest

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

OpenStack如何下载 openstack安装过程_OpenStack如何下载_03

  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';



  

  验证

OpenStack如何下载 openstack安装过程_ide_04

  安装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



OpenStack如何下载 openstack安装过程_OpenStack如何下载_05

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



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



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



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



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

OpenStack如何下载 openstack安装过程_操作系统_06

  修改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地址

OpenStack如何下载 openstack安装过程_memcached_07

  修改令牌提供者(配置文件还是/etc/keystone/keystone.conf)

  在[token]部分,配置Fernet UUID令牌的提供者。



provider = fernet
driver = memcache


  

OpenStack如何下载 openstack安装过程_ide_08

  

OpenStack如何下载 openstack安装过程_memcached_09

  查看配置

  

OpenStack如何下载 openstack安装过程_数据库_10

  初始化Fernet key



keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone



 在/etc/keystone下面生成这两个配置文件

   

OpenStack如何下载 openstack安装过程_ide_11

   初始化标准认证服务(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库可以看到刚刚命令创建的信息

OpenStack如何下载 openstack安装过程_操作系统_12

  配置Apache Http服务

  a,编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点:



ServerName 192.168.0.112:80


  

OpenStack如何下载 openstack安装过程_操作系统_13

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



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



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

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

OpenStack如何下载 openstack安装过程_memcached_14

  c,启动httpd



systemctl enable httpd
systemctl start httpd



  启动httpd及启动了keystone

  验证

OpenStack如何下载 openstack安装过程_ide_15

  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


  

OpenStack如何下载 openstack安装过程_ide_16

 

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

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



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



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

OpenStack如何下载 openstack安装过程_memcached_17

    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_不是我创建的可能是系统默认的)

OpenStack如何下载 openstack安装过程_ide_18

  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后如果出现以下代表验证成功

OpenStack如何下载 openstack安装过程_ide_19

  如果输入密码错误报以下提示

OpenStack如何下载 openstack安装过程_memcached_20

  使用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,镜像包

OpenStack如何下载 openstack安装过程_操作系统_21

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:以上执行可能会报错

OpenStack如何下载 openstack安装过程_操作系统_22

  执行以下命令后在执行



source admin-openstack



OpenStack如何下载 openstack安装过程_memcached_23

  创建镜像服务的 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



OpenStack如何下载 openstack安装过程_操作系统_24

  安装glance



yum install openstack-glance



   修改配置文件

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

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



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


  

OpenStack如何下载 openstack安装过程_操作系统_25

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

  在[database]



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



OpenStack如何下载 openstack安装过程_OpenStack如何下载_26

  同步数据库



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



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

  查看



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


  

OpenStack如何下载 openstack安装过程_ide_27

  /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


  

OpenStack如何下载 openstack安装过程_OpenStack如何下载_28

   [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


  

OpenStack如何下载 openstack安装过程_OpenStack如何下载_29

   [paste_deploy]



flavor = keystone



  检查配置

OpenStack如何下载 openstack安装过程_memcached_30

  启动并且设置开机启动



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包

  首先安装控制节点

OpenStack如何下载 openstack安装过程_OpenStack如何下载_31

 

 



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


    

OpenStack如何下载 openstack安装过程_memcached_32

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

[oslo_concurrency]



  查看所有修改的配置

OpenStack如何下载 openstack安装过程_数据库_33

  同步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如何下载 openstack安装过程_操作系统_34

OpenStack如何下载 openstack安装过程_ide_35

  openstack host list

  PS:这个命令失败提示如下

OpenStack如何下载 openstack安装过程_操作系统_36

  因为前面没有给nova用户添加admin角色,解决方法



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



  验证成功

OpenStack如何下载 openstack安装过程_数据库_37

看到3个服务状态是up

OpenStack如何下载 openstack安装过程_memcached_38

 

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

  在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



OpenStack如何下载 openstack安装过程_数据库_39

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

 

  9,网络包

  在控制节点上面安装

OpenStack如何下载 openstack安装过程_操作系统_40

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

  安装组件



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

OpenStack如何下载 openstack安装过程_操作系统_41

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



  检查

OpenStack如何下载 openstack安装过程_操作系统_42

 

  创建网络服务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



  验证

OpenStack如何下载 openstack安装过程_memcached_43

添加``admin`` 角色到``neutron`` 用户:



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



验证网络节点



neutron agent-list



OpenStack如何下载 openstack安装过程_ide_44

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

  

  在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



  过滤查看一下

OpenStack如何下载 openstack安装过程_操作系统_45

  

  配置Linuxbridge代理

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

OpenStack如何下载 openstack安装过程_OpenStack如何下载_46

  

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

  编辑``/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


  

OpenStack如何下载 openstack安装过程_数据库_47

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

OpenStack如何下载 openstack安装过程_ide_48

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



neutron agent-list
nova service-list



  

  检查环境

  查看端口

OpenStack如何下载 openstack安装过程_操作系统_49

 



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如何下载 openstack安装过程_memcached_50

  子网是空的

  创建子网



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


  

OpenStack如何下载 openstack安装过程_OpenStack如何下载_51

OpenStack如何下载 openstack安装过程_数据库_52

  

  

  创建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



OpenStack如何下载 openstack安装过程_操作系统_53

   生成一个键值对

   生成和添加秘钥对:



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如何下载 openstack安装过程_操作系统_54

  列出可用镜像

OpenStack如何下载 openstack安装过程_数据库_55

  列出可用网络



openstack network list



OpenStack如何下载 openstack安装过程_数据库_56

  列出可用的安全组:



openstack security group list



OpenStack如何下载 openstack安装过程_ide_57

  启动实例



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



OpenStack如何下载 openstack安装过程_ide_58

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

OpenStack如何下载 openstack安装过程_数据库_59

  计算节点的

OpenStack如何下载 openstack安装过程_数据库_60

 

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



openstack console url show provider-instance



OpenStack如何下载 openstack安装过程_数据库_61

  PS:使用ip地址替换127.0.0.1

    使用火狐浏览器

    用户名和密码有提示

OpenStack如何下载 openstack安装过程_ide_62

  验证能否ping通网关和公网



ping 192.168.0.1
ping www.baidu.com



OpenStack如何下载 openstack安装过程_操作系统_63

 

  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

  

OpenStack如何下载 openstack安装过程_操作系统_64

 

 

OpenStack如何下载 openstack安装过程_操作系统_65

 

 

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

  

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

OpenStack如何下载 openstack安装过程_OpenStack如何下载_66

可以通过数据库表查看

OpenStack如何下载 openstack安装过程_操作系统_67