本帖最后由 pig2 于 2015-3-21 13:10 编辑
问题导读
1.ovs部署在哪个节点?
2.如何验证网络节点安装成功?
3.添加外部网桥网卡如何选择?
接上篇
openstack【juno】入门 【网络篇】十五:neutron安装部署(控制节点)
安装配置网络节点
网络节点主要处理内部和外部的虚拟路由和DHCP服务。
准备
在配置neutron之前,必须配置一定的内核网络参数
1.修改文件 /etc/sysctl.conf,添加如下内容:
sudo nano /etc/sysctl.conf 复制代码
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0 复制代码
2.生效
复制代码
安装网络组件
apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \
neutron-l3-agent neutron-dhcp-agent 复制代码
配置网络组件
网络通用组件配置包括:认证机制、消息代理、和插件
编辑文件 /etc/neutron/neutron.conf 完成下面内容:
sudo nano /etc/neutron/neutron.conf 复制代码
a.在 [database]部分,注释掉连接数据connection 部分,网络节点不直接访问数据库
这里如果没有对文件进行改动,不需要进行操作。修改:
注释掉 connection = sqlite:////var/lib/neutron/neutron.sqlite
b.在 [DEFAULT] 部分,配置消息代理访问
[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS 复制代码
记得替换RABBIT_PASS,这里使用的是默认,如果在安装时进行了更改,则使用更改密码。
c.在 [DEFAULT] 和 [keystone_authtoken] 部分, 配置身份服务访问:
[DEFAULT]
...
auth_strategy = keystone
[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 复制代码
注意注释掉含有 auth_host, auth_port, and auth_protocol的选项,以免新配置被覆盖
d.在 [DEFAULT] 部分,启用 Modular Layer 2 (ML2)插件,路由服务,和ip地址
[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True 复制代码
e.(可选)协助排除故障,详细记录在[DEFAULT]部分使:
[DEFAULT]
...
verbose = True 复制代码
配置Modular Layer 2 (ML2)插件
ML2 插件使用 Open vSwitch (OVS)机制为实例建立虚拟网络架构
修改文件/etc/neutron/plugins/ml2/ml2_conf.ini ,完成下面内容
sudo nano /etc/neutron/plugins/ml2/ml2_conf.ini 复制代码
a.在 [ml2] 部分,启用 flat 和 generic routing encapsulation (GRE)网络类型驱动, GRE 租户网络, 和 OVS 机制驱动:
[ml2]
...
type_drivers = flat,gre
tenant_network_types = gre
mechanism_drivers = openvswitch 复制代码
b.在 [ml2_type_flat] 部分,配置flat_networks为external
[ml2_type_flat]
...
flat_networks = external 复制代码
c.在 [ml2_type_gre] 部分,配置tunnel id的范围
[ml2_type_gre]
...
tunnel_id_ranges = 1:1000 复制代码
d.在 [securitygroup]部分,启用 安全组, ipset, 和 配置 OVS防火墙驱动:
[securitygroup]
...
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 复制代码
e.在 [ovs] 部分,启用tunnels,配置本地tunnel endpoint,和bridge_mappings
bridge_mappings:map the external flat provider network to the br-ex external network bridge:
[ovs]
...
local_ip = INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS
enable_tunneling = True
bridge_mappings = external:br-ex 复制代码
INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS是网络节点上的实例隧道网络的ip地址
根据上图。ip地址为:10.0.1.21
即替换为下面内容:
[ovs]
...
local_ip = 10.0.1.21
enable_tunneling = True
bridge_mappings = external:br-ex 复制代码
[ovs]未找不到,直接添加
f.在 [agent] 部分,启动GRE tunnels
[agent]
...
tunnel_types = gre 复制代码
[agent]未找不到,直接添加
配置 Layer-3 (L3) 代理
Layer-3 (L3) agent为虚拟网络提供路由服务
编辑文件 /etc/neutron/l3_agent.ini,完成下面内容
sudo nano /etc/neutron/l3_agent.ini 复制代码
a.在 [DEFAULT] 部分,配置驱动,启用 network namespaces,配置外部网桥,使失效的路由器名称删除
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
external_network_bridge = br-ex
router_delete_namespaces = True 复制代码
b.(可选)协助排除故障,详细记录在[DEFAULT]部分:
[DEFAULT]
...
verbose = True 复制代码
配置DHCP代理
DHCP 代理为虚拟网络提供DHCP服务【如果这里配置错误,openstack产生实例,会获取不到ip地址】
1.编辑文件 /etc/neutron/dhcp_agent.ini,完成下面内容。
a.在 [DEFAULT] 部分,配置驱动,启用命名空间和启用删除废弃的命名空间
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
dhcp_delete_namespaces = True 复制代码
b.可选为排除错误,启用verbose 在[DEFAULT] 部分:
[DEFAULT]
...
verbose = True 复制代码
2.可选
a.编辑文件 /etc/neutron/dhcp_agent.ini,完成下面内容
在 [DEFAULT]部分,启用 the dnsmasq 配置文件:
[DEFAULT]
...
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf 复制代码
b.创建文件 /etc/neutron/dnsmasq-neutron.conf,并添加下面内容
dhcp-option-force=26,1454 复制代码
c.杀死已经存在的dnsmasq进程复制代码
配置元数据代理
元数据代理提供配置信息,比如实例凭证.
注释:
metadata agent(元数据代理)
openstack网络代理为实例提供元数据服务
1.编辑 /etc/neutron/metadata_agent.ini文件,完成下面内容
sudo nano /etc/neutron/metadata_agent.ini 复制代码
a.在[DEFAULT] 部分,配置访问参数
[DEFAULT]
...
auth_url = http://controller:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS 复制代码
同样不要忘记NEUTRON_PASS 替换密码,这里使用的是默认密码
不要忘记注释掉其它授权,以免被覆盖# The Neutron user information for accessing the Neutron API.
#auth_url = http://localhost:5000/v2.0
#auth_region = RegionOne
# Turn off verification of the certificate for ssl
# auth_insecure = False
# Certificate Authority public key (CA cert) file for ssl
# auth_ca_cert =
#admin_tenant_name = %SERVICE_TENANT_NAME%
#admin_user = %SERVICE_USER%
#admin_password = %SERVICE_PASSWORD%
auth_url = http://controller:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = NEUTRON_PASS
复制代码
b. 在[DEFAULT] 部分,配置元数据主机
[DEFAULT]
...
nova_metadata_ip = controller 复制代码
c.在[DEFAULT]部分,配置元数据代理共享密码:
[DEFAULT]
...
metadata_proxy_shared_secret = METADATA_SECRET 复制代码
d.(可选)协助排除故障,详细记录在[DEFAULT]部分:
[DEFAULT]
...
verbose = True 复制代码
2.在控制节点 编辑文件/etc/nova/nova.conf,完成下面内容
sudo nano /etc/nova/nova.conf 复制代码
在[neutron]部分,启动元数据代理和配置密码
[neutron]
...
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET 复制代码
METADATA_SECRET替换为自己设置的密码,这里使用的是默认密码
3.在控制节点 重启api服务
复制代码
配置Open vSwitch (OVS) 服务【网络节点】
OVS服务为实例提供底层虚拟网络框架,集成网桥br-int处理OVS内实例内部网络的流通。外部网桥br-ex处理ovs内实例外部网络的流通。外部网桥需要提供外部网络接口来访问实例外部网络。本质上,在你的环境中,连接着虚拟外部网络和物理外部网络。翻译不是太准确,请看英文原文,欢迎纠正。
英文原文
The OVS service provides the underlying virtual networking framework for instances. The integration bridge br-int handles internal instance network traffic within OVS. The external bridge br-ex handles external instance network traffic within OVS. The external bridge requires a port on the physical external network interface to provide instances with external network access. In essence, this port connects the virtual and physical external networks in your environment. 复制代码
下面是在网络节点
1.重启ovs服务
service openvswitch-switch restart 复制代码
2.添加外部网桥
复制代码
添加一个外部网桥连接外部网络的物理网卡
替换 INTERFACE_NAME 用实际网卡 ,本文为eth2
ovs-vsctl add-port br-ex INTERFACE_NAME 复制代码
替换:
ovs-vsctl add-port br-ex eth2 复制代码
注意:
根据网络接口驱动程序,你需要停掉generic receive offload (GRO),来获得合适网络流量,在实例和外部网络之间。
在测试环境中,需要禁用GRO。
复制代码
完成安装
重启服务
service neutron-plugin-openvswitch-agent restart
service neutron-l3-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart 复制代码
输出如下内容:root@network:~# service neutron-plugin-openvswitch-agent restart
neutron-plugin-openvswitch-agent stop/waiting
neutron-plugin-openvswitch-agent start/running, process 19501
root@network:~# service neutron-l3-agent restart
stop: Unknown instance:
neutron-l3-agent start/running, process 19521
root@network:~# service neutron-dhcp-agent restart
neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 19542
root@network:~# service neutron-metadata-agent restart
neutron-metadata-agent stop/waiting
neutron-metadata-agent start/running, process 19731
root@network:~# service neutron-l3-agent restart
neutron-l3-agent stop/waiting
neutron-l3-agent start/running, process 19768
root@network:~# service neutron-plugin-openvswitch-agent restart 复制代码
检验安装
注意:
在控制节点 执行下面命令
1.生效环境变量
复制代码
2.列出创建成功的neutron 代理
复制代码
输出如下内容:
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+
| 051543d3-4be3-45b9-a9a2-5bbd3e89a47c | Open vSwitch agent | network | :-) | True | neutron-openvswitch-agent |
| 16bd7da4-b76e-4fbd-9e5f-92b52a8c70a5 | DHCP agent | network | :-) | True | neutron-dhcp-agent |
| 2882756c-e965-4070-a105-9b408ef1cebc | L3 agent | network | :-) | True | neutron-l3-agent |
| 5c4678e6-4096-44fe-95ad-5c4c26f2cc43 | Metadata agent | network | :-) | True | neutron-metadata-agent |
+--------------------------------------+--------------------+---------+-------+----------------+---------------------------+ 复制代码
相关内容:
openstack【juno】入门 【准备篇】零:整体介绍
openstack【juno】入门 【准备篇】一: Ubuntu14.04远程连接(ssh安装)
openstack【juno】入门 【准备篇】二::NTP安装
openstack【juno】入门 【准备篇】三:mysql(MariaDB)安装
openstack【juno】入门 【准备篇】四::RabbitMQ 安装
openstack【juno】入门 【keystone篇】五::Keystone部署及介绍
openstack【juno】入门 【keystone篇】六::Keystone使用及遇到问题解决办法
openstack【juno】入门 【keystone篇】七:创建 service entity 和 API endpoint
openstack【juno】入门 【keystone篇】八:新手操作篇(验证操作篇)
openstack【juno】入门 【keystone篇】九:创建openstack客户端环境变量脚本
openstack【juno】入门 【glance 篇】十:glance初步介绍
openstack【juno】入门 【glance 篇】十一:glance安装配置
openstack【juno】入门 【glance 篇】十二:glance安装配置验证及相关操作
openstack【juno】入门 【nova 篇】十三(1):nova简单介绍
openstack【juno】入门 【nova 篇】十三(2):安装配置计算服务
openstack【juno】入门 【网络篇】十四:neutron介绍
openstack【juno】入门 【网络篇】十五:neutron安装部署(控制节点)
openstack【juno】入门 【网络篇】十六:neutron安装部署(网络节点)
openstack【juno】入门 【网络篇】十七:neutron安装部署(计算节点)
openstack【juno】入门 【网络篇】十八:创建实例化网络
openstack【juno】入门 【dashboard篇】十九:添加dashboard
openstack【juno】入门 【cinder篇】二十:cinder介绍及安装配置【控制节点】
openstack【juno】入门 【cinder篇】二十一:安装配置块存储节点(cinder)
openstack【juno】入门 【swift篇】二十二:对象存储安装配置【控制节点】
openstack【juno】入门 【swift篇】二十三:安装配置swift节点
openstack【juno】入门 【swift篇】二十四:创建初始rings
openstack【juno】入门 【swift篇】二十五:验证安装(控制节点)
openstack【juno】入门 【实例篇】二十六:创建实例(neutron)
openstack【juno】入门 【总结篇】二十七:openstack排除故障及常见问题记录
openstack【juno】入门 【总结篇】二十八:keystone及网络总结