系统版本及环境

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安装配置_数据库_02

  其中rabbitmq_management用于web界面管理

  启动



rabbitmq-plugins enable rabbitmq_management


  默认启动端口为15672



lsof -i:15672


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

  默认用户名和密码均为guest

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

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安装配置_mysql_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安装配置_数据库_05

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



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


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



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


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

Openstack安装配置_memcached_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安装配置_memcached_07

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

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



provider = fernet
driver = memcache


  Openstack安装配置_memcached_08

  Openstack安装配置_数据库_09

  查看配置

  Openstack安装配置_linux_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安装配置_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安装配置_mysql_12

  配置Apache Http服务

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



ServerName 192.168.0.112:80


  Openstack安装配置_linux_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安装配置_ide_14

  c,启动httpd



systemctl enable httpd
systemctl start httpd


  启动httpd及启动了keystone

  验证

Openstack安装配置_数据库_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安装配置_ide_16

 

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

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



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


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

Openstack安装配置_mysql_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安装配置_数据库_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安装配置_数据库_19

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

Openstack安装配置_数据库_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安装配置_memcached_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安装配置_mysql_22

  执行以下命令后在执行



source admin-openstack 


Openstack安装配置_数据库_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安装配置_memcached_24

  安装glance



yum install openstack-glance


   修改配置文件

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

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



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


  Openstack安装配置_mysql_25

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

  在[database]



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


Openstack安装配置_mysql_26

  同步数据库



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


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

  查看



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


  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安装配置_memcached_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安装配置_memcached_29

   ​​[paste_deploy]​



flavor = keystone


  检查配置

Openstack安装配置_ide_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安装配置_mysql_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安装配置_linux_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


  查看所有修改的配置

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安装配置_ide_34

Openstack安装配置_数据库_35

  openstack host list

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

Openstack安装配置_mysql_36

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



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


  验证成功

Openstack安装配置_linux_37

看到3个服务状态是up

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安装配置_数据库_39

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

 

  9,网络包

  在控制节点上面安装

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安装配置_ide_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安装配置_数据库_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安装配置_ide_43

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



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


验证网络节点



neutron agent-list


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安装配置_数据库_45

  

  配置Linuxbridge代理

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

Openstack安装配置_memcached_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安装配置_mysql_47

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

Openstack安装配置_mysql_48

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



neutron agent-list
nova service-list


  

  检查环境

  查看端口

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安装配置_ide_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安装配置_linux_51

Openstack安装配置_linux_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安装配置_数据库_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安装配置_ide_54

  列出可用镜像

Openstack安装配置_mysql_55

  列出可用网络



openstack network list


Openstack安装配置_ide_56

  列出可用的安全组:



openstack security group list


Openstack安装配置_数据库_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安装配置_linux_58

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

Openstack安装配置_数据库_59

  计算节点的

Openstack安装配置_数据库_60

 

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



openstack console url show provider-instance


Openstack安装配置_mysql_61

  PS:使用ip地址替换127.0.0.1

    使用火狐浏览器

    用户名和密码有提示

Openstack安装配置_数据库_62

  验证能否ping通网关和公网



ping 192.168.0.1
ping www.baidu.com


Openstack安装配置_memcached_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安装配置_ide_64

 

 Openstack安装配置_mysql_65

 

 

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

  

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

Openstack安装配置_数据库_66

可以通过数据库表查看

Openstack安装配置_数据库_67

 

 

学习:SOA 消息队列