设为首页 收藏本站
查看: 947|回复: 0

[经验分享] Openstack N版 双节点搭建

[复制链接]

尚未签到

发表于 2018-5-30 12:03:44 | 显示全部楼层 |阅读模式
  node1 控制节点
  yum -y install centos-release-openstack-newton
  yum upgrade
  yum -y install python-openstackclient
  yum -y install mariadb mariadb-server python2-PyMySQL
  yum -y  install rabbitmq-server
  yum -y install memcached python-memcached
  yum install -y openstack-keystone httpd mod_wsgi
  yum install openstack-glance
  yum install openstack-nova-api openstack-nova-conductor  openstack-nova-console openstack-nova-novncproxy  openstack-nova-scheduler
  yum install openstack-neutron openstack-neutron-ml2  openstack-neutron-linuxbridge ebtables
  yum install openstack-dashboard
  yum install openstack-cinder
  yum install openstack-cinder targetcli python-keystone
  node2  计算节点
  yum -y install centos-release-openstack-newton
  yum upgrade
  yum -y install python-openstackclient
  yum -y install mariadb mariadb-server python2-PyMySQL
  yum install openstack-nova-compute
  yum install openstack-neutron-linuxbridge ebtables ipset
  ###############################################总览##################################
  本向导描述了OpenStack Newton版本发布说明

  •   Conventions

    •   Notices
    •   Command prompts

  •   概况

    •   示例的架构
    •   网络

  •   环境

    •   安全
    •   主机网络
    •   网络时间协议(NTP)
    •   OpenStack包
    •   SQL数据库
    •   消息队列
    •   Memcached

  •   认证服务

    •   Identity service overview
    •   安装和配置
    •   创建域、项目、用户和角色
    •   验证操作
    •   创建 OpenStack 客户端环境脚本

  •   镜像服务

    •   Image service overview
    •   安装和配置
    •   验证操作

  •   计算服务

    •   Compute service overview
    •   安装并配置控制节点
    •   安装和配置计算节点
    •   验证操作

  •   网络服务

    •   Networking service overview
    •   网络(neutron)概念
    •   安装并配置控制节点
    •   安装和配置计算节点
    •   验证操作
    •   下一步

  •   仪表盘

    •   安装和配置
    •   验证操作
    •   下一步

  •   块存储服务

    •   块存储服务概览
    •   安装并配置控制节点
    •   安装并配置一个存储节点
    •   验证操作
    •   下一步

  •   其他服务

    •   裸金属服务(ironic)
    •   容器的基础设施管理服务(magnum)
    •   数据库服务(trove)
    •   秘钥管理器服务
    •   云消息服务(zaqar)
    •   对象存储服务(swift)
    •   编排服务(heat)
    •   共享文件系统服务(manila)
    •   监测告警服务(aodh)
    •   Telemetry 数据收集服务(ceilometer)

  •   启动一个实例

    •   创建虚拟网络
    •   创建m1.nano类型
    •   生成一个键值对
    •   增加安全组规则
    •   启动一个实例
    •   块设备存储
    •   编排
    •   共享文件系统



  •   社区支持


  •   术语表


  •   搜索页面
  #######################################################################################
  两台虚拟机搭建
  opensstack N版本搭建
  192.168.80.181
  192.168.80.182
  vim /etc/hosts
  192.168.80.181 linux-node1.com 控制节点
  192.168.80.182 linux-node2.com 计算节点
  #######################################################################################
  官方文档地址
  http://docs.openstack.org/newton/zh_CN/install-guide-rdo/
  中文文档
  https://docs.openstack.org/newton/zh_CN/install-guide-rdo/common/conventions.html
  ######################################################################################
                                                                                       概况
  ######################################################################################
  示例的架构
  控制器
  计算
  块设备存储
  对象存储
  网络
  网络选项1:提供者网络
  网络选项2:自服务网络
  #####################################################################################
  示例的架构
  为了启动一个基本 :term:`virtual machine <virtual machine (VM)>`或者实例,这个示例架构要求至少两个节点(主机)。诸如块存储和对象存储这样的可选服务需要额外的节点。
  这个示例架构不同于下面这样的最小生产结构
      1.网络代理驻留在控制节点上而不是在一个或者多个专用的网络节点上。
      2.私有网络的覆盖流量通过管理网络而不是专用网络
  控制节点:至少两块网卡
  The controller node runs the Identity service, Image service, management portions of Compute, management portion of Networking, various Networking agents, and the dashboard. It also includes supporting services such as an SQL database, message queue, and NTP.
  计算:每个节点至少两块网卡
  计算节点运行操作实例的 :term:`hypervisor`计算部分。默认情况下使用 :term:`KVM <kernel-based VM (KVM)>`作为hypervisor。计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:term:`security groups <security group>`为实例提供防火墙服务。instances via .
  块设备存储:
  可选的块存储节点上包含了磁盘,块存储服务和共享文件系统会向实例提供这些磁盘。
  为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。 你可以部署超过一个块存储节点。每个块存储节点要求至少一块网卡。
  对象存储:
  可选的对象存储节点包含了磁盘。对象存储服务用这些磁盘来存储账号,容器和对象。
  为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。 这个服务要求两个节点。每个节点要求最少一块网卡。你可以部署超过两个对象存储节点。
  网络
  1.提供者服务
  2.自服务网络
  ###########################################环境#####################################

  •   安全
  •   主机网络
  •   网络时间协议(NTP)
  •   OpenStack包
  •   SQL数据库
  •   消息队列
  •   Memcached
  控制节点: 1 处理器, 4 GB 内存, 及5 GB 存储
  计算节点: 1 处理器, 2 GB 内存, 及10 GB 存储
  ######################################################################################
  1.安全
  下面的表格给出了需要密码的服务列表以及它们在指南中关联关系:
  密码名称
  描述
  数据库密码(不能使用变量)
  数据库的root密码
ADMIN_PASS  admin 用户密码
CINDER_DBPASS  块设备存储服务的数据库密码
CINDER_PASS  块设备存储服务的 cinder 密码
DASH_DBPASSDatabase password for the dashboard
DEMO_PASS  demo 用户的密码
GLANCE_DBPASS  镜像服务的数据库密码
GLANCE_PASS  镜像服务的 glance 用户密码
KEYSTONE_DBPASS  认证服务的数据库密码
NEUTRON_DBPASS  网络服务的数据库密码
NEUTRON_PASS  网络服务的 neutron 用户密码
NOVA_DBPASS  计算服务的数据库密码
NOVA_PASS  计算服务中``nova``用户的密码
RABBIT_PASS  RabbitMQ的guest用户密码
  2.主机网络
  在你按照你选择的架构,完成各个节点操作系统安装以后,你必须配置网络接口。我们推荐你禁用自动网络管理工具并手动编辑你相应版本的配置文件。更多关于如何配置你版本网络信息内容,参考 documentation 。
  为了管理,所有节点都要求可以访问互联网,如安装包,安全更新,:term:’DNS <Domain Name System (DNS)>’和:term:’NTP<Network Time Protocol (NTP)>’。大部分情况下,节点应该通过管理网络接口访问互联网。为了突出网络隔离的重要性,这个架构示例中使用“私有地址空间 <https://tools.ietf.org/html/rfc1918>”用于网络管理,并假定物理网络设备通过:term:’NAT <Network Address Translation (NAT)>’或其他方式访问互联网。示例架构使用可路由的IP地址空间隔离服务商(外部)网络,并假定物理网络设备直接提供互联网访问。
  在提供者网络架构中,所有实例直接连接到提供商网络。在自服务(私有)网络架构,实例可以连接到自服务或提供网络。自服务网络可以完全在openstack环境中或者通过外部网络使用:term:’NAT<Network Address Translation (NAT)>’提供某种级别的外部网络访问
  示例架构假设使用如下网络:
      管理使用 10.0.0.0/24 带有网关 10.0.0.1,这个网络需要一个网关为所有节点提供网络访问用来管理,如安装包、安全更新,:term:’DNS<Domain Name System (DNS)>’和:term:’NTP <Network Time Protocol (NTP)>’。
      提供者网段 203.0.113.0/24,网关203.0.113.1这个网络需要一个网关来提供在环境中内部实例的访问。
  3.网络时间NTP
  你需要安装Chrony,一个在不同节点同步服务实现:term:’NTP <Network Time Protocol (NTP)>’的方案。我们建议你配置控制节点引用更准确的(lower stratum)NTP服务其,然后其他节点引用控制节点。
  配置时间
       ntpdate time1.aliyun.com 阿里云时间 或者
  (1)在控制节点上执行这些步骤。
  安装软件包:
  # yum install chrony
  编辑“/etc/chrony.conf”文件并在你的环境需要的情况下增加、修改或者删除这些键值:
  server NTP_SERVER iburst
  使用NTP服务器的主机名或者IP地址替换 NTP_SERVER 。配置支持设置多个 server 值。
  #注解
  控制节点默认跟公共服务器池同步时间。但是你也可以选择性配置其他服务器,比如你组织中提供的服务器。
  为了让其它节点可以连接到控制节点上的chrony守护程序,请在“/etc/chrony.conf”文件中增加这个键值:
  allow 10.0.0.0/24
  如有必要,将 10.0.0.0/24 替换成你子网的相应描述。
  启动 NTP 服务并将其配置为随系统启动:
  # systemctl enable chronyd.service
  # systemctl start chronyd.service
  (2)其他节点服务器:
  安装软件包:
  # yum install chrony
  编辑``/etc/chrony.conf`` 文件并注释除``server`` 键之外的所有内容。修改它引用控制节点:
  server controller iburst
  启动 NTP 服务并将其配置为随系统启动:
  # systemctl enable chronyd.service
  # systemctl start chronyd.service
  (3)验证
  我们建议您在继续进一步的操作之前验证 NTP 的同步。有些节点,特别是哪些引用了控制节点的,需要花费一些时间去同步。
  在控制节点上执行这个命令:
  # chronyc sources
    210 Number of sources = 2
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^- 192.0.2.11                    2   7    12   137  -2814us[-3000us] +/-   43ms
    ^* 192.0.2.12                    2   6   177    46    +17us[  -23us] +/-   68ms
  在 Name/IP address 列的内容应显示NTP服务器的主机名或者IP地址。在 S 列的内容应该在NTP服务目前同步的上游服务器前显示 *。
  在所有其他节点执行相同命令:
  # chronyc sources
    210 Number of sources = 1
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^* controller                    3    9   377   421    +15us[  -87us] +/-   15ms
  在 Name/IP address 列的内容应显示控制节点的主机名。
  ######################################################################################
  镜像
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  3.openstack包
  启用OpenStack库
  在CentOS中, ``extras``仓库提供用于启用 OpenStack 仓库的RPM包。 CentOS 默认启用``extras``仓库,因此你可以直接安装用于启用OpenStack仓库的包。
  yum -y install centos-release-openstack-newton   
  主机升级包
  yum upgrade
  安装openstack客户端
  yum -y install python-openstackclient
  不安装,不启用selinux
  RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理:
  # yum install openstack-selinux
  4.SQL数据库
  大多数 OpenStack 服务使用 SQL 数据库来存储信息。 典型地,数据库运行在控制节点上。指南中的步骤依据不同的发行版使用MariaDB或 MySQL。OpenStack 服务也支持其他 SQL 数据库,包括`PostgreSQL
  (1)在linux-node1上安装:
  yum -y install mariadb mariadb-server python2-PyMySQL
  vim /etc/my.cnf.d/openstack.cnf
  [mysqld]
  bind-address = 192.168.80.181
  default-storage-engine = innodb
  innodb_file_per_table
  max_connections = 10000
  collation-server = utf8_general_ci
  character-set-server = utf8
  启动数据库服务,并将其配置为开机自启:
  systemctl enable mariadb.service
  systemctl start mariadb.service
  mysql_secure_installation
  (2)openstack-node1
  安装消息队列:
       yum -y  install rabbitmq-server
  开机自启
       systemctl enable rabbitmq-server.service
       systemctl start rabbitmq-server.service
  添加openstack用户并设置密码为openstack
  rabbitmqctl add_user openstack openstack
  给openstack用户设置读写权限
  rabbitmqctl set_permissions openstack &quot;.*&quot; &quot;.*&quot; &quot;.*&quot;
  安装rabbitmq web管理插件
  rabbitmq-plugins enable rabbitmq_management
  systemctl restart rabbitmq-server.service
  http://192.168.80.181:15672/
  用户名:guest
  密  码:guest
  (3)openstack-node1
  安装包
  yum -y install memcached python-memcached
  vim /etc/memcached.conf
  192.168.80.181
  开机自启
  systemctl enable memcached.service
  systemctl start memcached.service
  ########################################认证服务################################################

  •   Identity service overview
  •   安装和配置

    •   先决条件
    •   安全并配置组件
    •   配置 Apache HTTP 服务器
    •   完成安装

  •   创建域、项目、用户和角色
  •   验证操作
  •   创建 OpenStack 客户端环境脚本

    •   创建脚本
    •   使用脚本

  1.Identity service overview
  服务器
  一个中心化的服务器使用RESTful 接口来提供认证和授权服务。
  Drivers
  驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
  Modules
  中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。
  2.安装和配置:
  (1)先决条件:
  openstack身份认证前,需要配置数据库和管理员令牌
  创建keystone数据库,并授权和配置密码
   mysql -u root -p123456
   CREATE DATABASE keystone;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';&quot;
  验证数据库是否创建成功
  [root@linux-node1 keystone]# mysql -h 192.168.80.181 -ukeystone -pkeystone -e &quot;use keystone; show tables;&quot;
  (2)安全并配置组件
  yum install -y openstack-keystone httpd mod_wsgi
  vim /etc/keystone/keystone.conf   配置数据库访问 keystone账号和密码
  [database]
  connection = mysql+pymysql://keystone:keystone@192.168.80.181/keystone
  [token]
  provider = fernet
  driver = memcache
  [memcache]
  servers = 192.168.80.181:11211
  systemctl start memcached.service
  systemctl enable memcached.service
  [root@linux-node1 keystone]# vim /etc/sysconfig/memcached
  PORT=&quot;11211&quot;
  USER=&quot;memcached&quot;
  MAXCONN=&quot;1024&quot;
  CACHESIZE=&quot;64&quot;
  OPTIONS=&quot;-l 192.168.80.181,::1&quot;
  systemctl start memcached.service
  systemctl enable memcached.service
  systemctl restart memcached.service
  [root@linux-node1 keystone]# netstat -ntlp
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
  tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      12892/beam.smp     
  tcp        0      0 192.168.80.181:3306     0.0.0.0:*               LISTEN      12089/mysqld      
  tcp        0      0 192.168.80.181:11211    0.0.0.0:*               LISTEN      43577/memcached     
  tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      12907/epmd         
  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1484/sshd           
  tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      12892/beam.smp     
  tcp6       0      0 :::5672                 :::*                    LISTEN      12892/beam.smp     
  tcp6       0      0 ::1:11211               :::*                    LISTEN      43577/memcached     
  tcp6       0      0 :::4369                 :::*                    LISTEN      12907/epmd         
  tcp6       0      0 :::22                   :::*                    LISTEN      1484/sshd
  [root@linux-node1 keystone]# egrep -n &quot;^[a-Z]&quot; /etc/keystone/keystone.conf
  640:connection = mysql+pymysql://keystone:keystone@192.168.80.181/keystone
  1472:servers = 192.168.80.181:11211
  2655:provider = fernet
  2665:driver = memcache
  从Keystone的配置文件中,我们可见,Token的提供者目前支持四种。 Token Provider:UUID, PKI, PKIZ, or Fernet
  结合源码及官方文档,我们用一个表格来阐述一下它们之间的差异。


Provider方式
生成方式|长度|加密方式
优点
缺点
UUID  uuid.uuid4().hex,32字符,没有加密方式。
生成的Token,长度较短,使用方便。url使用方便,回收的方式,就是从后端删除即可,实现逻辑较为清晰。需要持久化后端存储,每次访问需要keystone相关服务进行认证。
PKIcms_sign_data(),使用base64 encoded进行编码(替换不安全的字符)粗略统计过长度4602字符,使用 Cryptographic Message Syntax (CMS)进行加密(默认的方式sha256)。使用证书及私钥生成,可以线下验证(不需要走keystone认证服务),长度负载重,不推荐用于生产部署[size=1.1em]keystone-manage pki_setup ,需要使用由一个受信任的CA颁发的证书
PKIZ同PKI,使用base64url encoding进行编码,在此基础上,使用压缩机制,长度上减小了一半,并且Token使用PKIZ_开头。较PKI长度上缩小了很多,长度负载较重,同上PKI
FernetMessagePacked负载数据,并使用crypto.encrypt(payload)加密,粗略统计长度183字符。使用对称加密,为了安全度提升,同时支持定期轮换。设计的逻辑,引入序列化,负载格式加以控制,基于此进行加密,长度比PKI(Z)要短。对称加密算法,安全性低
  初始化认证服务的数据库:
  su -s /bin/sh -c &quot;keystone-manage db_sync&quot; keystone
  
  初始化Fernet key:
  keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
  keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  Bootstrap the Identity service:
  keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://192.168.80.181:35357/v3/ \
  --bootstrap-internal-url http://192.168.80.181:35357/v3/ \
  --bootstrap-public-url http://192.168.80.181:5000/v3/ \
  --bootstrap-region-id RegionOne
  配置apache服务
  #vim  /etc/httpd/conf/httpd.conf
  ServerName 192.168.80.181:80
  ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  systemctl enable httpd.service
  systemctl start httpd.service
  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.80.181:35357/v3
  export OS_IDENTITY_API_VERSION=3
  (3)创建域。项目。用户和角色
  本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目
  openstack project create --domain default --description &quot;Service Project&quot; service
  常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。
  创建“”demo“”项目
  openstack project create --domain default --description &quot;Demo Project&quot; demo
  创建demo用户
  openstack user create --domain default --password-prompt demo     密码我用的demo
  创建demo角色
  openstack role create user
  添加user角色到demo项目和用户:
  openstack role add --project demo --user demo user
  (4)验证操作
  ######################################不用做####################
       #因为安全性的原因,关闭临时认证令牌机制:
       #编辑 /etc/keystone/keystone-paste.ini 文件,从``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分删除           ``admin_token_auth
  ##################################################################
  撤销临时环境变量``OS_AUTH_URL``和``OS_PASSWORD``
  unset OS_AUTH_URL OS_PASSWORD
  作为admin用户,请求认证令牌  输入admin
  openstack --os-auth-url http://192.168.80.181:35357/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name admin --os-username admin token issue
  作为demo用户,请求认证令牌    输入demo
   openstack --os-auth-url http://192.168.80.181:5000/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name demo --os-username demo token issue
  (5)创建openstack 客户端环境脚本
  创建 admin``demo``项目和用户创建客户端环境变量脚本。本指南的接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证
  [root@linux-node1 ~]# vim admin-openstack.sh
  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.80.181:35357/v3
  export OS_IDENTITY_API_VERSION=3
  export OS_IMAGE_API_VERSION=2
  vim demo-openstack.sh
  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.80.181:5000/v3
  export OS_IDENTITY_API_VERSION=3
  export OS_IMAGE_API_VERSION=2
  加载脚本 来身份认证服务的环境变量位置和``admin``项目和用户证书:
  [root@linux-node1 ~]# source admin-openstack.sh
  请求认证令牌
  [root@linux-node1 ~]# openstack token issue
  同上
  [root@linux-node1 ~]# source demo-openstack.sh
  [root@linux-node1 ~]# openstack token issue
  ####################################镜像服务####################################

  •   Image service overview
  •   安装和配置

    •   先决条件
    •   安全并配置组件
    •   完成安装

  •   验证操作
  1.Image service overview
  OpenStack镜像服务是IaaS的核心服务,如同 :ref:`get_started_conceptual_architecture`所示。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
  大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
  OpenStack镜像服务包括以下组件:
  glance-api
  接收镜像API的调用,诸如镜像发现、恢复、存储。
  glance-registry
  存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
  警告:glance-registry是私有内部服务,用于服务OpenStack Image服务。不要向用户暴露该服务
  数据库
  存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
  镜像文件的存储仓库
  Various repository types are supported including normal file systems (or any filesystem mounted on the glance-api controller node), Object Storage, RADOS block devices, VMware datastore, and HTTP. Note that some repositories will only support read-only usage.
  元数据定义服务
  通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。
  (2)安装和配置openstack-node1
  mysql -u root -p123456 -e &quot;CREATE DATABASE glance;&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';&quot;
  获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  [root@linux-node1 ~]# source admin-openstack.sh
  创建glance用户
  openstack user create --domain default --password-prompt glance    设置密码为glance
  添加admin角色到glance用户和service项目上
  openstack role add --project service --user glance admin
  创建glance服务实体
  openstack service create --name glance   --description &quot;OpenStack Image&quot; image
  创建镜像服务的API端点
  openstack endpoint create --region RegionOne  image public http://192.168.80.181:9292
  openstack endpoint create --region RegionOne  image internal http://192.168.80.181:9292
  openstack endpoint create --region RegionOne  image admin http://192.168.80.181:9292
  安装包
   yum install openstack-glance -y
  vim  /etc/glance/glance-api.conf
  配置数据库访问
  1748
  connection = mysql+pymysql://glance:glance@192.168.80.181/glance
  #在 [keystone_authtoken][paste_deploy] 部分,配置认证服务访问:
  3178
  [keystone_authtoken]
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = glance
  password = glance
  [paste_deploy]
  3990
  flavor = keystone
  #在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:
  [glance_store]
  1864
  stores = file,http
  1896
  default_store = file
  2196
  filesystem_store_datadir = /var/lib/glance/images/
  数据库验证
  mysql -h 192.168.80.181 -uglance -pglance -e &quot;use glance; show tables;&quot;
  vim /etc/glance/glance-registry.conf
  #在 [database] 部分,配置数据库访问:
  1038
  connection = mysql+pymysql://glance:glance@192.168.80.181/glance
  #在 [keystone_authtoken][paste_deploy] 部分,配置认证服务访问:
  1127
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = glance
  password = glance
  [paste_deploy]
  1911
  flavor = keystone
  写入镜像服务器数据库    忽略输出中任何不推荐使用的信息。
  su -s /bin/sh -c &quot;glance-manage db_sync&quot; glance
  启动镜像服务并将其配置为随机启动:
  systemctl enable openstack-glance-api.service \
    openstack-glance-registry.service
  systemctl start openstack-glance-api.service \
    openstack-glance-registry.service
  (3)验证操作
  确认镜像的上传并验证属性:
  openstack image list
  获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  source admin-openstack.sh
  下载源镜像:
  wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
  使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
  openstack image create &quot;cirros&quot; \
    --file cirros-0.3.4-x86_64-disk.img \
    --disk-format qcow2 --container-format bare \
    --public
  确认镜像的上传并验证属性:
  openstack image list
  ################################计算服务################################

  •   Compute service overview
  •   安装并配置控制节点

    •   先决条件
    •   安全并配置组件
    •   完成安装

  •   安装和配置计算节点

    •   安全并配置组件
    •   完成安装

  •   验证操作
  1.Compute service overview
  Use OpenStack Compute to host and manage cloud computing systems. OpenStack Compute is a major part of an Infrastructure-as-a-Service (IaaS) system. The main modules are implemented in Python.
  OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。
  OpenStack计算服务由下列组件所构成:
  ``nova-api``服务
  接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
  ``nova-api-metadata``服务
  接受来自虚拟机发送的元数据请求。``nova-api-metadata``服务一般在安装``nova-network``服务的多主机模式下使用。更详细的信息,请参考OpenStack管理员手册中的链接`Metadata service <http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>`。
  ``nova-compute``服务
  一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:
      XenServer/XCP 的 XenAPI
      KVM 或 QEMU 的 libvirt
      VMware 的 VMwareAPI
  过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
  ``nova-scheduler``服务
  拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
  ``nova-conductor``模块
  Mediates interactions between the nova-compute service and the database. It eliminates direct accesses to the cloud database made by the nova-compute service. The nova-conductor module scales horizontally. However, do not deploy it on nodes where the nova-compute service runs. For more information, see Configuration Reference Guide.
  nova-cert 模块
  服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用
  nova-network worker 守护进程
  与``nova-compute``服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
  nova-consoleauth 模块
  授权控制台代理所提供的用户令牌。详情可查看``nova-novncproxy``和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。更多关于nova-consoleauth的信息,请查看`About nova-consoleauth <http://docs.openstack.org/admin-guide/compute-remote-console-access.html#about-nova-consoleauth>`__。
  nova-novncproxy 模块
  提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
  ``nova-spicehtml5proxy``守护进程
  提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
  nova-xvpvncproxy 守护进程
  提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
  nova-cert 守护进程
  X509 证书。
  nova 客户端
  用于用户作为租户管理员或最终用户来提交命令。
  队列
  A central hub for passing messages between daemons. Usually implemented with RabbitMQ, also can be implemented with another AMQP message queue, such as ZeroMQ.
  SQL数据库
  存储构建时和运行时的状态,为云基础设施,包括有:
      可用实例类型
      使用中的实例
      可用网络
      项目
  理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。
  (2)安装并配置控制节点
  mysql -u root -p123456 -e &quot;CREATE DATABASE nova;&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';&quot;
  mysql -u root -p123456 -e &quot;CREATE DATABASE nova_api;&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';&quot;
  数据库验证
  mysql -h 192.168.80.181 -unova -pnova -e &quot;use nova;show tables;&quot;
  mysql -h 192.168.80.181 -unova -pnova -e &quot;use nova_api;show tables;&quot;
  获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  [root@linux-node1 ~]# source admin-openstack.sh
  创建服务证书
       创建nova用户
  openstack user create --domain default --password=nova nova
       给nova添加admin角色
  openstack role add --project service --user nova admin
  创建 nova 服务实体:
  openstack service create --name nova  --description &quot;OpenStack Compute&quot; compute
  创建 Compute 服务 API 端点 :
  openstack endpoint create --region RegionOne \
    compute public http://192.168.80.181:8774/v2.1/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    compute internal http://192.168.80.181:8774/v2.1/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    compute admin http://192.168.80.181:8774/v2.1/%\(tenant_id\)s
  安装包
  yum install openstack-nova-api openstack-nova-conductor  openstack-nova-console openstack-nova-novncproxy  openstack-nova-scheduler
  [root@linux-node1 ~]# vim /etc/nova/nova.conf
  3661
  connection= mysql+pymysql://nova:nova@192.168.80.181/nova_api
  4678
  connection = mysql+pymysql://nova:nova@192.168.80.181/nova
  3052
  enabled_apis=osapi_compute,metadata
  3602
  transport_url = rabbit://openstack:openstack@192.168.80.181
  14
  auth_strategy=keystone
  5429
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = nova
  password = nova
  2062
  use_neutron = True
  3265
  firewall_driver = nova.virt.firewall.NoopFirewallDriver
  8386
  vncserver_listen=0.0.0.0
  8398
  vncserver_proxyclient_address=192.168.80.181
  4814
  api_servers=http://192.168.80.181:9292
  6707
  lock_path=/var/lib/nova/tmp
  同步Compute 数据库: 忽略输出中任何不推荐使用的信息
  su -s /bin/sh -c &quot;nova-manage api_db sync&quot; nova
  su -s /bin/sh -c &quot;nova-manage db sync&quot; nova
  启动 Compute 服务并将其设置为随系统启动:
  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
  systemctl restart openstack-nova-api.service \
    openstack-nova-consoleauth.service openstack-nova-scheduler.service \
    openstack-nova-conductor.service openstack-nova-novncproxy.service
  openstack host list
  nova service-list
  (3)安装和配置计算节点
  在openstack-node2上
  yum install centos-release-openstack-newton -y
  yum upgrade -y
  yum install python-openstackclient -y
  yum install openstack-nova-compute -y
  拷贝控制节点的配置文件,然后修改
  [root@linux-node1 ~]# scp /etc/nova/nova.conf 192.168.80.182:/etc/nova/nova.conf
  [root@openstack-node2 ~]#chown root:nova nova.conf  传过去后要修改权限
  https://docs.openstack.org/newton/zh_CN/install-guide-rdo/nova-compute-install.html  
  配置计算节点
  [root@linux-node2 nova]# vim  /etc/nova/nova.conf
  3662 注释掉 #connection=mysql+pymysql://nova:nova@192.168.80.181/nova_api
  4678 注释掉 #connection=mysql+pymysql://nova:nova@192.168.80.181/nova
  8396
  vncserver_proxyclient_address=192.168.80.182
  8415
  novncproxy_base_url=http://192.168.80.181:6080/vnc_auto.html
  8361
  enabled=true
  8377
  keymap=en-us
  5674
  virt_type=kvm
  #在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
  3602
  transport_url = rabbit://openstack:openstack@192.168.80.181
  [root@linux-node1 ~]#
  systemctl restart openstack-nova-api.service \
    openstack-nova-consoleauth.service openstack-nova-scheduler.service \
    openstack-nova-conductor.service openstack-nova-novncproxy.service
  [root@linux-node1 ~]#
  systemctl status openstack-nova-api.service \
    openstack-nova-consoleauth.service openstack-nova-scheduler.service \
    openstack-nova-conductor.service openstack-nova-novncproxy.service
  确定您的计算节点是否支持虚拟机的硬件加速。
  egrep -c '(vmx|svm)' /proc/cpuinfo
  如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
  如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM
  在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:
  [libvirt]
  ...
  virt_type = qemu
  开机自启
  [root@linux-node2 ~]#
  systemctl enable libvirtd.service openstack-nova-compute.service
  systemctl start libvirtd.service openstack-nova-compute.service
  systemctl status libvirtd.service openstack-nova-compute.service
  (4)验证操作
  ####################################################网络服务##################################

  •   Networking service overview
  •   网络(neutron)概念
  •   安装并配置控制节点
  •   安装和配置计算节点
  •   验证操作
  •   下一步
  1.Networking service overview
  OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。
  它包含下列组件:
  neutron-server
  接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。
  OpenStack网络插件和代理
  Plug and unplug ports, create networks or subnets, and provide IP addressing. These plug-ins and agents differ depending on the vendor and technologies used in the particular cloud. OpenStack Networking ships with plug-ins and agents for Cisco virtual and physical switches, NEC OpenFlow products, Open vSwitch, Linux bridging, and the VMware NSX product.
  常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。
  消息队列
  大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态
  OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。
  2.网络(neutron)概念
  网络服务提供网络,子网以及路由这些对象的抽象概念。每个抽象概念都有自己的功能,可以模拟对应的物理设备:网络包括子网,路由在不同的子网和网络间进行路由转发。
  对于任意一个给定的网络都必须包含至少一个外部网络。不想其他的网络那样,外部网络不仅仅是一个定义的虚拟网络。相反,它代表了一种OpenStack安装之外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问
  外部网络之外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接连接到虚拟机。仅仅在给定网络上的虚拟机,或那些在通过接口连接到相近路由的子网上的虚拟机,能直接访问连接到那个网络上的虚拟机。
  如果外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每一个路由都配有一个网关用于连接到外部网络,以及一个或多个连接到内部网络的接口。就像一个物理路由一样,子网可以访问同一个路由上其他子网中的机器,并且机器也可以访问路由的网关访问外部网络。
  另外,你可以将外部网络的IP地址分配给内部网络的端口。不管什么时候一旦有连接连接到子网,那个连接被称作端口。你可以给实例的端口分配外部网络的IP地址。通过这种方式,外部网络上的实体可以访问实例.
  网络服务同样支持安全组。安全组允许管理员在安全组中定义防火墙规则。一个实例可以属于一个或多个安全组,网络为这个实例配置这些安全组中的规则,阻止或者开启端口,端口范围或者通信类型。
  每一个Networking使用的插件都有其自有的概念。虽然对操作VNI和OpenStack环境不是至关重要的,但理解这些概念能帮助你设置Networking。所有的Networking安装使用了一个核心插件和一个安全组插件(或仅是空操作安全组插件)。另外,防火墙即服务(FWaaS)和负载均衡即服务(LBaaS)插件是可用的。
  3.安装并配置控制节点openstack-node1
  yum install openstack-neutron openstack-neutron-ml2  openstack-neutron-linuxbridge ebtables
  mysql -u root -p123456 -e &quot;CREATE DATABASE neutron;&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';&quot;
  获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
  [root@linux-node1 ~]# source admin-openstack.sh
  创建``neutron``用户:
  openstack user create --domain default --password=neutron neutron
  添加``admin`` 角色到``neutron`` 用户:
  openstack role add --project service --user neutron admin
  创建``neutron``服务实体:
  openstack service create --name neutron --description &quot;OpenStack Networking&quot; network
  创建网络服务API端点:
  openstack endpoint create --region RegionOne network public http://192.168.80.181:9696
  openstack endpoint create --region RegionOne network internal http://192.168.80.181:9696
  openstack endpoint create --region RegionOne network admin http://192.168.80.181:9696
  从以下的网络选项中选择一个来配置网络服务。之后,返回到这里,进行下一步:ref:neutron-controller-metadata-agent。

  •   网络选项1:提供者网络
  •   网络选项2:自服务网络
  以下是网络1
  [root@linux-node1 ~]# vim /etc/neutron/neutron.conf
  #在 [database] 部分,配置数据库访问:
  722
  connection = mysql+pymysql://neutron:neutron@192.168.80.181/neutron
  27
  auth_strategy = keystone
  #在``[DEFAULT]``部分,启用ML2插件并禁用其他插件
  30
  core_plugin = ml2
  33
  service_plugins =
  在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
  802
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = neutron
  password = neutron
  #在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
  530
  transport_url = rabbit://openstack:openstack@192.168.80.181
  #在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:
  118
  notify_nova_on_port_status_changes = true
  122
  notify_nova_on_port_data_changes = true
  1001
  [nova]
  auth_url = http://192.168.80.181:35357
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  region_name = RegionOne
  project_name = service
  username = nova
  password = nova
  [oslo_concurrency] 部分,配置锁路径:
  1123
  lock_path = /var/lib/neutron/tmp
  [root@linux-node1 ~]# egrep '^[a-Z]' /etc/neutron/neutron.conf
  auth_strategy = keystone
  core_plugin = ml2
  service_plugins =
  notify_nova_on_port_status_changes = true
  notify_nova_on_port_data_changes = true
  transport_url = rabbit://openstack:openstack@192.168.80.181
  connection = mysql+pymysql://neutron:neutron@192.168.80.181/neutron
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = neutron
  password = neutron
  auth_url = http://192.168.80.181:35357
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  region_name = RegionOne
  project_name = service
  username = nova
  password = nova
  lock_path = /var/lib/neutron/tmp
  配置Modular Layer 2 (ML2) 插件
  [root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
  ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
  编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:
  #在``[ml2]``部分,启用flat和VLAN网络:
  109
  type_drivers = flat,vlan,gre,vxlan,geneve
  在``[ml2]``部分,启用Linuxbridge机制:
  118
  mechanism_drivers = linuxbridge
  114
  tenant_network_types = flat,vlan,gre,vxlan,geneve
  #在``[ml2]`` 部分,启用端口安全扩展驱动:
  123
  extension_drivers = port_security
  160
  flat_networks = public
  #在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:
  237
  enable_ipset = true
  配置Linuxbridge代理
  [root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  #在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
  143
  physical_interface_mappings = public:eth0      我的是ens32
  #在``[vxlan]``部分,禁止VXLAN覆盖网络:
  177
  enable_vxlan = False
  #在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
  156
  firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  162
  enable_security_group = true
  配置DHCP代理
  在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
  [root@linux-node1 ~]#  vim /etc/neutron/dhcp_agent.ini
  17
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
  34
  dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  44
  enable_isolated_metadata = True
  配置元数据代理
  在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:
  [root@linux-node1 ~]# vim /etc/neutron/metadata_agent.ini
  22
  nova_metadata_ip = 192.168.80.181
  34
  在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:
  metadata_proxy_shared_secret = wl
  配置计算服务来使用网络服务
  在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:
  [root@linux-node1 ~]# vim /etc/nova/nova.conf
  6472
  url = http://192.168.80.181:9696
  auth_url = http://192.168.80.181: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 = wl
  网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。如果超链接不存在,使用下面的命令创建它:
  [root@linux-node1 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  同步数据库:
  su -s /bin/sh -c &quot;neutron-db-manage --config-file /etc/neutron/neutron.conf \
    --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head&quot; neutron
  重启计算api服务
  systemctl restart openstack-nova-api.service
  当系统启动时,启动 Networking 服务并配置它启动。
  systemctl enable neutron-server.service \
    neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
    neutron-metadata-agent.service
  systemctl restart neutron-server.service \
    neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
    neutron-metadata-agent.service
  最后再验证
  [root@linux-node1 ~]# neutron agent-list
  (4)安装并配置计算节点
  在openstack-node2
   yum install openstack-neutron-linuxbridge ebtables ipset
  [root@linux-node1 ~]# scp /etc/neutron/neutron.conf root@192.168.80.182:/etc/neutron/
  再2上修改权限
  [root@openstack-node2 neutron]# chown root:neutron neutron.conf
  https://docs.openstack.org/newton/zh_CN/install-guide-rdo/neutron-compute-install.html
  需要配置通用配置
  以下记录并不全
  [root@linux-node2 neutron]#  vim /etc/neutron/neutron.conf
  722 删除
  # connection = mysql+pymysql://neutron:neutron@192.168.80.181/neutron
  1002删除
  #删除如下内容-----------------
  [nova]           #保留此行
  auth_url = http://192.168.80.181:35357
  auth_type = password
  project_domain_name = default
  user_domain_name = default
  region_name = RegionOne
  project_name = service
  username = nova
  password = nova
  118删除
  # notify_nova_on_port_status_changes = true
  122删除
  # notify_nova_on_port_data_changes = true
  30删除  
  core_plugin = ml2
  33删除
  service_plugins =
  配置网络选项
  配置计算服务来使用网络服务
  在``[neutron]`` 部分,配置访问参数:
  [root@linux-node2 neutron]# vim /etc/nova/nova.conf
  6469
  url = http://192.168.80.181:9696
  auth_url = http://192.168.80.181:35357
  auth_type = password
  project_domain_name = default
  user_domain_name = default
  region_name = RegionOne
  project_name = service
  username = neutron
  password = neutron
  [root@linux-node1 ~]# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini root@192.168.80.182:/etc/neutron/plugins/ml2/
  选择与您之前在控制节点上选择的相同的网络选项。之后,回到这里并进行下一步

  •   网络选项1:提供者网络
  •   网络选项2:自服务网络
  [root@linux-node2 ~]# chown root:neutron /etc/neutron/plugins/ml2/linuxbridge_agent.ini
  (5)验证操作
  neutron ext-list

  •   网络选项1:提供者网络
  •   网络选项2:自服务网络
  systemctl restart openstack-nova-compute.service
  启动Linuxbridge代理并配置它开机自启动:
  # systemctl enable neutron-linuxbridge-agent.service
  # systemctl start neutron-linuxbridge-agent.service
  ##################################################################
                                          以下这部分可以先不做--先去安装仪表盘
  ###################################################################
  (6)下一步
  ##########################################仪表盘#####################################

  •   安装和配置

    •   安全并配置组件
    •   完成安装

  •   验证操作
  •   下一步
  1.安装和配置  控制节点配置
  # yum install openstack-dashboard
  [root@linux-node1 neutron]# cd /etc/openstack-dashboard/
  [root@linux-node1 openstack-dashboard]# ll
  total 108
  -rw-r----- 1 root apache   201 Nov  4 13:52 ceilometer_policy.json
  -rw-r----- 1 root apache  5391 Nov  4 13:52 cinder_policy.json
  -rw-r----- 1 root apache  1244 Nov  4 13:53 glance_policy.json
  -rw-r----- 1 root apache  4544 Nov  4 13:52 heat_policy.json
  -rw-r----- 1 root apache  9699 Nov  4 13:52 keystone_policy.json
  -rw-r----- 1 root apache 30940 Jan 22 18:21 local_settings
  -rw-r----- 1 root apache 10476 Nov  4 13:52 neutron_policy.json
  -rw-r----- 1 root apache 28383 Nov  4 13:52 nova_policy.json
  [root@linux-node2 openstack-dashboard]# vim local_settings
  controller 节点上配置仪表盘以使用 OpenStack 服务:
   29 ALLOWED_HOSTS = ['*','localhost']
  配置API版本:
   55 OPENSTACK_API_VERSIONS = {
   56     &quot;data-processing&quot;: 1.1,
   57     &quot;identity&quot;: 3,
   58     &quot;image&quot;: 2,
   59     &quot;volume&quot;: 2,
   60     &quot;compute&quot;: 2,
   61 }
  启用对域的支持
   66 OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
   74 OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default'
  启用第3版认证API:
  160 OPENSTACK_HOST = &quot;192.168.80.182&quot;
  161 OPENSTACK_KEYSTONE_URL = &quot;http://%s:5000/v3&quot; % OPENSTACK_HOST
  162 OPENSTACK_KEYSTONE_DEFAULT_ROLE = &quot;user&quot;
  如果您选择网络参数1,禁用支持3层网络服务:
  273 OPENSTACK_NEUTRON_NETWORK = {
  274     'enable_router': False,
  275     'enable_quotas': False,
  276     'enable_ipv6': False,
  277     'enable_distributed_router': False,
  278     'enable_ha_router': False,
  279     'enable_lb': False,
  280     'enable_firewall': False,
  281     'enable_vpn': False,
  282     'enable_fip_topology_check': False,
  可以选择性地配置时区:
  408 TIME_ZONE = &quot;Asia/Shanghai&quot;
  # systemctl restart httpd.service memcached.service
  2.验证操作
  验证仪表盘的操作。
  在浏览器中输入 ``http://controller/dashboard``访问仪表盘。
  验证使用 admin 或者``demo``用户凭证和``default``域凭证。
  ##############################################块存储服务# #############

  •   块存储服务概览
  •   安装并配置控制节点

    •   先决条件
    •   安全并配置组件
    •   配置计算节点以使用块设备存储
    •   完成安装

  •   安装并配置一个存储节点

    •   先决条件
    •   安全并配置组件
    •   完成安装

  •   验证操作
  •   下一步
  块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有很多驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。
  典型情况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器可以运行在控制节点、计算节点或单独的存储节点。
  1.块存储服务概览
  OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。
  块存储服务通常包含下列组件:
  cinder-api
  接受API请求,并将其路由到``cinder-volume``执行。
  cinder-volume
  与块存储服务和例如``cinder-scheduler``的进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。``cinder-volume``服务响应送到块存储服务的读写请求来维持状态。它也可以和多种存储提供者在驱动架构下进行交互。
  cinder-scheduler守护进程
  选择最优存储提供节点来创建卷。其与``nova-scheduler``组件类似。
  cinder-backup daemon
  ``cinder-backup``服务提供任何种类备份卷到一个备份存储提供者。就像``cinder-volume``服务,它与多种存储提供者在驱动架构下进行交互。
  消息队列
  在块存储的进程之间路由信息。
  装包
  yum install openstack-cinder
  2.安装并配置控制节点
  mysql -u root -p123456 -e &quot;CREATE DATABASE cinder;&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';&quot;
  mysql -u root -p123456 -e &quot;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';&quot;
  要创建服务证书,完成这些步骤:
  创建一个 cinder 用户:
  openstack user create --domain default --password=cinder cinder
  添加 admin 角色到 cinder 用户上。
  openstack role add --project service --user cinder admin
  创建 cindercinderv2 服务实体:
  openstack service create --name cinder \
    --description &quot;OpenStack Block Storage&quot; volume
   openstack service create --name cinderv2 \
    --description &quot;OpenStack Block Storage&quot; volumev2
  创建块设备存储服务的 API 入口点:
  openstack endpoint create --region RegionOne \
    volume public http://192.168.80.181:8776/v1/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    volume internal http://192.168.80.181:8776/v1/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    volume admin http://192.168.80.181:8776/v1/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    volumev2 public http://192.168.80.181:8776/v2/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    volumev2 internal http://192.168.80.181:8776/v2/%\(tenant_id\)s
  openstack endpoint create --region RegionOne \
    volumev2 admin http://192.168.80.181:8776/v2/%\(tenant_id\)s
  [root@openstack-node1 ~]#vim  /etc/cinder/cinder.conf
  [DEFAULT]
  auth_strategy = keystone
  transport_url = rabbit://openstack:openstack@192.168.80.181
  [database]
  connection = mysql+pymysql://cinder:cinder@192.168.80.181/cinder
  [keystone_authtoken]
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = cinder
  password = cinder
  [oslo_concurrency]
  lock_path = /var/lib/cinder/tmp
  初始化块设备服务的数据库:
  [root@openstack-node1 ~]#su -s /bin/sh -c &quot;cinder-manage db sync&quot; cinder
  配置计算节点使用块存储
  [root@openstack-node1 ~]#vim  /etc/nova/nova.conf
  [cinder]os_region_name = RegionOne
  重启计算API 服务:
  # systemctl restart openstack-nova-api.service
  启动块设备存储服务,并将其配置为开机自启:
  # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
  # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
  安装并配置一个存储节点   我这里就在192.168.80.181 本地 添加两块盘 配置了
  安装 LVM 包:
  # yum install lvm2
  启动LVM的metadata服务并且设置该服务随系统启动:
  # systemctl enable lvm2-lvmetad.service
  # systemctl start lvm2-lvmetad.service
  创建LVM 物理卷 /dev/sdb:
  # pvcreate /dev/sdb1 /dev/sdc1
  创建 LVM 卷组 cinder-volumes:
  # vgcreate cinder-volumes /dev/sdb1 /dev/sdc1
  #vim  /etc/lvm/lvm.conf  以下可以限制磁盘     不要做  导致服务不是up
  devices {
   #filter = [ &quot;a/sda/&quot;,&quot;a/sdb/&quot;,&quot;a/sdc&quot;, &quot;r/.*/&quot; ]
  yum install openstack-cinder targetcli python-keystone
  安装软件包:
  # yum install openstack-cinder targetcli python-keystone
  编辑 /etc/cinder/cinder.conf,同时完成如下动作:
  [database]
  connection = mysql+pymysql://cinder:cinder@192.168.80.181/cinder
  在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:
  [DEFAULT]
  transport_url = rabbit://openstack:openstack@192.168.80.181
  在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
  [DEFAULT]
  auth_strategy = keystone
  [keystone_authtoken]
  ...
  auth_uri = http://192.168.80.181:5000
  auth_url = http://192.168.80.181:35357
  memcached_servers = 192.168.80.181:11211
  auth_type = password
  project_domain_name = Default
  user_domain_name = Default
  project_name = service
  username = cinder
  password = cinder
  将其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替换为存储节点上的管理网络接口的IP 地址,例如样例架构 <overview-example-architectures>中所示的第一台节点 10.0.0.41 。
  在``[lvm]``部分中,配置LVM后端,包括LVM驱动,``cinder-volumes``卷组 ,iSCSI 协议和适当的 iSCSI服务。如果``[lvm]``部分不存在,则创建它:
  volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
  volume_group = cinder-volumes
  iscsi_protocol = iscsi
  iscsi_helper = lioadm
  [DEFAULT]
  enabled_backends = lvm
  后端名字是任意的。比如,本教程使用驱动的名字作为后端的名字。
  在 [DEFAULT] 区域,配置镜像服务 API 的位置:
  [DEFAULT]
  glance_api_servers = http://192.168.80.181:9292
  在 [oslo_concurrency] 部分,配置锁路径:
  [oslo_concurrency]
  lock_path = /var/lib/cinder/tmp
  启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:
  # systemctl enable openstack-cinder-volume.service target.service
  # systemctl start openstack-cinder-volume.service target.service
  [root@openstack-node1 ~]# openstack volume service list
  +------------------+---------------------+------+---------+-------+----------------------------+
  | Binary           | Host                | Zone | Status  | State | Updated At                 |
  +------------------+---------------------+------+---------+-------+----------------------------+
  | cinder-scheduler | openstack-node1     | nova | enabled | up    | 2017-07-13T08:46:18.000000 |
  | cinder-volume    | openstack-node1@lvm | nova | enabled | up    | 2017-07-13T08:46:18.000000 |
  +------------------+---------------------+------+---------+-------+----------------------------+
  [root@openstack-node1 ~]#
  ####################################启动一个实例###########################
  https://docs.openstack.org/newton/zh_CN/install-guide-rdo/launch-instance.html#launch-instance
  创建虚拟网络
  创建m1.nano类型
  生成一个键值对
  增加安全组规则
  启动一个实例
  块设备存储
  编排
  共享文件系统
  创建m1.nano类型
  默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的``m1.nano``规格的主机。若单纯为了测试的目的,请使用``m1.nano``规格的主机来加载CirrOS镜像
  [root@linux-node1 ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
  生成一个键值对
  导入``demo``项目凭证
  sh demo-openstack.sh
  生成和添加秘钥对:
  [root@linux-node1 ~]# ssh-keygen -q -N &quot;&quot;
  Enter file in which to save the key (/root/.ssh/id_rsa):
  [root@linux-node1 ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
  +-------------+-------------------------------------------------+
  | Field       | Value                                           |
  +-------------+-------------------------------------------------+
  | fingerprint | 10:61:a4:8f:30:92:ac:ad:b8:8c:97:92:e4:61:a2:eb |
  | name        | mykey                                           |
  | user_id     | a6ec85b1bb7f47829403132fbc45a95f                |
  +-------------+-------------------------------------------------+
  nova keypair-list
  nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
  添加规则到 default 安全组。

  •   Permit ICMP (ping):
  [root@linux-node1 ~]# openstack security group rule create --proto icmp default
  HttpException: Conflict
  允许安全 shell (SSH) 的访问:
  openstack security group rule create --proto tcp --dst-port 22 default
  创建虚拟网络
  根据你在网络选项中的选择来创建虚拟网络。如果你选择选项1,只需创建一个公有网络。如果你选择选项2,同时创建一个公有网络和一个私有网络

  •   提供者网络
  •   自服务网络
  在你完成自己环境中合适网络的创建后,你可以继续后面的步骤来准备创建实例。
  创建名为public 网络
  neutron net-create -shared --:physical_network public2 -provider:network_type flat public-net2
  #neutron net-create --shared  --provider:physical_network public --provider:network_type  flat public-net
  创建网络
  openstack network create  --share   \
    --provider-physical-network public \
    --provider-network-type flat public
  openstack subnet create --network public \
    --allocation-pool start=192.168.80.210,end=192.168.80.220 \
    --dns-nameserver 114.114.114.114 --gateway 192.168.80.1 \
    --subnet-range 192.168.80.0/24 public-subnet
  neutron subnet-list
  一个实例指定了虚拟机资源的大致分配,包括处理器、内存和存储。
  列出可用类型:
  openstack flavor list
  生成和添加秘钥对:
  ssh-keygen -q -N &quot;&quot;
  openstack keypaircreate --public-key ~/.ssh/id_rsa.pub mykey
  验证公钥的添加:
  openstack keypair list
  [root@linux-node1 ~]# openstack image list
  +--------------------------------------+--------+--------+
  | ID                                   | Name   | Status |
  +--------------------------------------+--------+--------+
  | 7caa0da4-0b90-45c9-8769-692386094571 | cirros | active |
  +--------------------------------------+--------+--------+
  [root@linux-node1 ~]# openstack security group list
  +--------------------------------------+---------+------------------------+----------------------------------+
  | ID                                   | Name    | Description            | Project                          |
  +--------------------------------------+---------+------------------------+----------------------------------+
  | 5f999265-e79d-4e1b-a0dd-00163c04fb48 | default | Default security group | da41e6982782463ab9ecc5a1fb4cf226 |
  +--------------------------------------+---------+------------------------+----------------------------------+
  [root@linux-node1 ~]# openstack network list
  +--------------------------------------+--------+--------------------------------------+
  | ID                                   | Name   | Subnets                              |
  +--------------------------------------+--------+--------------------------------------+
  | 3a90570c-93bf-4069-9510-f682f5c8a332 | public | a992425e-6d09-43d7-9b7f-5b4088f70d58 |
  +--------------------------------------+--------+--------------------------------------+
  [root@linux-node1 ~]#  openstack flavor list
  +----+---------+-----+------+-----------+-------+-----------+
  | ID | Name    | RAM | Disk | Ephemeral | VCPUs | Is Public |
  +----+---------+-----+------+-----------+-------+-----------+
  | 0  | m1.nano |  64 |    1 |         0 |     1 | True      |
  +----+---------+-----+------+-----------+-------+-----------+
  启动云主机
  openstack server create --flavor m1.nano --image cirros \
  --nic net-id=3a90570c-93bf-4069-9510-f682f5c8a332 --security-group default \
  --key-name mykey demo-instance
  检查实例的状态:
  openstack server list
  获取你势力的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它:
  openstack console url show demo-instance
  systemctl restart httpd.service memcached.service
  #########################################启动一个实例######################################
  创建虚拟网络
  创建m1.nano类型
  生成一个键值对
  增加安全组规则
  启动一个实例
  块设备存储
  编排
  共享文件系统
  #########################################其他服务####################################
  裸金属服务(ironic)
  容器的基础设施管理服务(magnum)
  数据库服务(trove)
  秘钥管理器服务
  云消息服务(zaqar)
  对象存储服务(swift)
  编排服务(heat)
  共享文件系统服务(manila)
  监测告警服务(aodh)
  Telemetry 数据收集服务(ceilometer)
  #############################################社区支持#################################
  文档
  <link href=”http://ask.openstack.org“>问答论坛</link>
  OpenStack 邮件列表
  OpenStack 维基百科
  Launchpad的Bug区
  The OpenStack 在线聊天室频道
  文档反馈
  OpenStack分发包
  #############################################术语表###################################
  0-9
  A
  B
  C
  D
  E
  F
  G
  H
  I
  J
  K
  L
  M
  N
  O
  P
  Q
  R
  S
  T
  U
  V
  W
  X
  Z

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-483079-1-1.html 上篇帖子: 关于shell脚本部署openstack平台controller节点(CentOS,Pike) 下篇帖子: 云技术全面集成:EasyStack看2018年OpenStack市场
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表