当前位置: 首页 > news >正文

OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点

在controller节点上安装和配置

创建nova的数据库,服务证书和API端点

  1. 创建数据库:
    使用root身份进入数据库:
    $ mysql -u root -p

    创建nova数据库:
    <pre>CREATE DATABASE neutron;</pre>

    把neutron数据库的访问权限赋予名为neutron,来自任何主机地址的用户,并设定访问密码为NEUTRON_DBPASS(替换为合适的密码):
    <pre>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';</pre>

退出数据库。

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 创建服务证书:
    创建neutron用户:
    <pre>$ keystone user-create --name neutron --pass NEUTRON_PASS
PropertyValue
email
enabledTrue
id03fdaa93a85b4879a898d031947b81af
nameneutron
usernameneutron

+----------+----------------------------------+</pre>
用合适的密码代替NEUTRON_PASS。

admin角色赋予给neutron用户:
$ keystone user-role-add --user neutron --tenant service --role admin
这条命令不产生输出显示。

创建neutron服务实体:
<pre>$ keystone service-create --name neutron --type network \

--description "OpenStack Networking"
PropertyValue
descriptionOpenStack Networking
enabledTrue
idd3cf8211db414c069701f39e778d9765
nameneutron
typenetwork

+-------------+----------------------------------+</pre>

  1. 创建网络服务的API端点:
    <pre>$ keystone endpoint-create \

--service-id $(keystone service-list | awk '/ network / {print $2}') \
--publicurl http://controller:9696 \
--adminurl http://controller:9696 \
--internalurl http://controller:9696 \

--region regionOne
PropertyValue
adminurl http://controller:9696
ideb7fd6b67e4d4479886d164486a3fb71
internalurl http://controller:9696
publicurl http://controller:9696
regionregionOne
service_idd3cf8211db414c069701f39e778d9765

+-------------+----------------------------------+</pre>

安装neutron组件

# apt-get install neutron-server neutron-plugin-ml2 python-neutronclient

配置网络服务组件

编辑# vi /etc/neutron/neutron.conf文件:
[database]部分,设定数据库的访问选项,需把原始设定注释掉:
<pre>[database]
...
connection = mysql://neutron:NEUTRON_DBPASS@controller/neutron
</pre>
NEUTRON_DBPASS为创建neutron数据库时设立的密码。

[DEFAULT]部分,设定RabbitMQ的访问选项:
<pre>[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
</pre>
RABBIT_PASS为RabbitMQ guest账户的密码。

[DEFAULT][keystone_authtoken]部分,设定认证服务的访问选项:
<pre>[DEFAULT]
...
auth_strategy = keystone
</pre>
<pre>[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。在[keystone_authtoken]部分,注释掉 auth_host,auth_port,和auth_protocol的选项,因为identity_uri选项是直接代替它们的。

[DEFAULT]部分,开启Modular Layer 2(ML2)plug-in选项,设定router service和overlapping IP addresses选项:
<pre>[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
</pre>

[DEFAULT]部分,设定网络服务可以通知计算服务网络拓扑的变化:
<pre>[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://controller:8774/v2
nova_admin_auth_url = http://controller:35357/v2.0
nova_region_name = regionOne
nova_admin_username = nova
nova_admin_tenant_id = SERVICE_TENANT_ID
nova_admin_password = NOVA_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。SERVICE_TENANT_ID为认证服务中service租户的ID,可以通过以下命令取得:
<pre>$ source admin-openrc.sh

$ keystone tenant-get service
PropertyValue
descriptionService Tenant
enabledTrue
id5ab4d5c513f543cfbf8e3be97f5df5fb
nameservice

+-------------+----------------------------------+</pre>

[DEFAULT]部分,开启“详细输出日志”选项:
<pre>[DEFAULT]
...
verbose = True
</pre>

配置 Modular Layer 2(ML2)plug-in

ML2 plug-in使用Open vSwitch(OVS)机制(agent)来创建虚拟网络框架。由于controller节点不处理实例之间的网络通信,故不需要OVS组件。

编辑# vi /etc/neutron/plugins/ml2/ml2_conf.ini文件:

[ml2]部分,启用flat和generic routing encapsulation(GRE)网络类型的驱动( network type drivers),GRE 租户网络和OVS机制的驱动:
<pre>[ml2]
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch
</pre>

[ml2_type_gre]部分,配置tunnel ID的范围:
<pre>[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
</pre>

[securitygroup]部分,启用security groups,ipset, and configure,设定OVS iptables firewall driver:
<pre>[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
</pre>

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

编辑# vi /etc/nova/nova.conf文件:
[DEFAULT]部分,设定API和驱动:
<pre>[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
</pre>

[neutron]部分,设定访问参数:
<pre>[neutron]
...
url = http://controller:9696
auth_strategy = keystone
admin_auth_url = http://controller:35357/v2.0
admin_tenant_name = service
admin_username = neutron
admin_password = NEUTRON_PASS
</pre>
NEUTRON_PASS为创建neutron用户时使用的密码。

完成安装

  1. 同步数据库:
    # neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno
  2. 重启计算服务:
    # service nova-api restart
    # service nova-scheduler restart
    # service nova-conductor restart
  3. 重启网络服务:
    # service neutron-server restart

验证操作

  1. 启动admin证书:
    $ source admin-openrc.sh
  2. 显示装载的扩展列表,验证neutron-server进程已成功启动:
    <pre>$ neutron ext-list
aliasname
security-groupsecurity-group
l3_agent_schedulerL3 Agent Scheduler
ext-gw-modeNeutron L3 Configurable external gateway mode
bindingPort Binding
providerProvider Network
agentagent
quotasQuota management support
dhcp_agent_schedulerDHCP Agent Scheduler
l3-haHA Router extension
multi-providerMulti Provider Network
external-netNeutron external network
routerNeutron L3 Router
allowed-address-pairsAllowed Address Pairs
extrarouteNeutron Extra Route
extra_dhcp_optNeutron Extra DHCP opts
dvrDistributed Virtual Router

+-----------------------+-----------------------------------------------+</pre>

安装时出现的问题及解决方法

输入neutron ext-list后,出现“Unable to establish connection to http://controller:9696/v2.0/extensions.json”,最后发现是之前某个service在keystone里创立时设置的密码与配置neutron时需写入的没对上,导致无法访问。

相关文章:

  • docker-consul
  • 天猫amp;PEPCO 超智能新零售智慧门店横空出世
  • 思否第一天
  • git学习(一)
  • 图与网络优化---图的基本概念
  • 微服务:更愉快还是更嘈杂?
  • Internet Download Manager IDM 破解器
  • 确保web安全的HTTPS
  • 基于echarts实时温度折线图表
  • 常量池总结
  • html2canvas用法的总结(转载)
  • Confluence 6 删除一个空间
  • 每天一个设计模式之命令模式
  • ESXi虚拟机的磁盘格式
  • Nmap的详细使用
  • 分享一款快速APP功能测试工具
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux各目录及每个目录的详细介绍
  • PAT A1017 优先队列
  • SpiderData 2019年2月23日 DApp数据排行榜
  • VUE es6技巧写法(持续更新中~~~)
  • 分类模型——Logistics Regression
  • 离散点最小(凸)包围边界查找
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 网络应用优化——时延与带宽
  • 我的业余项目总结
  • 我感觉这是史上最牛的防sql注入方法类
  • 携程小程序初体验
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (function(){})()的分步解析
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (安卓)跳转应用市场APP详情页的方式
  • (第二周)效能测试
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)SpringBoot3---尚硅谷总结
  • (一)基于IDEA的JAVA基础10
  • (转)Linq学习笔记
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Framework杂记
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .Net Redis的秒杀Dome和异步执行
  • .netcore如何运行环境安装到Linux服务器
  • @Validated和@Valid校验参数区别
  • [2016.7.Test1] T1 三进制异或
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [GYCTF2020]Ez_Express
  • [iOS]随机生成UUID通用唯一识别码