OpenStack的网络管理指南第三部分
$ function get_id () { echo `"$@" | awk '/ id / { print $4 }'` }
.bashrc
file:$ source .bashrc
-
$ NEUTRON_SERVICE_ID=$(get_id keystone service-create --name neutron --type network --description 'OpenStack Networking Service')
-
$ keystone endpoint-create --region $REGION --service-id $NEUTRON_SERVICE_ID --publicurl 'http://$IP:9696/' --adminurl 'http://$IP:9696/' --internalurl 'http://$IP:9696/'
比如:
$ keystone endpoint-create --region myregion --service-id $NEUTRON_SERVICE_ID \ --publicurl "http://10.211.55.17:9696/" --adminurl "http://10.211.55.17:9696/" --internalurl "http://10.211.55.17:9696/"
1
2
3
4
|
catalog.$REGION.network.publi
cURL
= http:
//
$IP:9696
catalog.$REGION.network.adminURL = http:
//
$IP:9696
catalog.$REGION.network.internalURL = http:
//
$IP:9696
catalog.$REGION.network.name = Network Service
|
比如:
1
2
3
4
|
catalog.$Region.network.publi
cURL
= http:
//10
.211.55.17:9696
catalog.$Region.network.adminURL = http:
//10
.211.55.17:9696
catalog.$Region.network.internalURL = http:
//10
.211.55.17:9696
catalog.$Region.network.name = Network Service
|
-
$ ADMIN_ROLE=$(get_id keystone role-create --name=admin)
-
$ NEUTRON_USER=$(get_id keystone user-create --name=neutron --pass="$NEUTRON_PASSWORD" --email=demo@example.com --tenant-id service)
-
$ SERVICE_TENANT=$(get_id keystone tenant-create --name service --description "Services Tenant")
$ keystone user-role-add --user_id $NEUTRON_USER --role_id $ADMIN_ROLE --tenant_id $SERVICE_TENANT
配置OpenStack计算服务
Item | Configuration |
---|---|
| 修改默认 |
| 为这次部署更新neutron-server实例的主机名/IP 和 端口 |
| 为所有的部署保持keystone的默认值 |
| 更新上一节OpenStack 身份配置创建的服务租户的名字 |
| 更新上一节OpenStack 身份配置中创建的用户的名字 |
| 更新上一节OpenStack 身份配置中创建的用户的密码 |
| 更新OpenStack的身份服务器的IP地址和端口。这是(keystone)的身份管理API服务器的IP和端口值,而不是身份服务API的IP和端口。 |
安全组配置
OpenStack的网络服务使用了一种比内置安全组功能到OpenStack计算内更加灵活和强大的机制来提供安全组功能,因此,如果您使用OpenStack的网络,你应该始终禁用内置的安全组和安全组代理OpenStack的网络API的调用。如果你不这样做,同时使用两者将会产生安全策略的冲突
OpenStack的网络代理安全组,请使用以下值配置nova.conf:
Item | Configuration |
| 更新nova.virt.firewall.NoopFirewallDriver。这样nova-compute将不执行iptables过滤本身 |
|
更新neutron,使所有安全组请求通过OpenStack的网络服务代理。
|
元数据配置
要启用代理请求,你必须更新以下nova.conf的字段 。
Item | Configuration |
| 更新为 |
| 更新字符串“密码”的值,您还必须为metadata_agent.ini文件配置相同的值,对元数据请求进行身份验证。 这两个文件中的空字符串的默认值将允许元数据的功能,但是不安全,如果有任何不信任的实体访问元数据API。 |
![]() | Note |
---|---|
作为一项预防措施,即使使用neutron_metadata_proxy_shared_secret ,建议您不要使用相同的nova- API实例租户用于公开元数据。相反,你应该运行一组专用的仅适用你的管理网络的nova- API实例用于公开元数据。一个给定的nova- API实例是否公开元数据API是由配置文件nova.conf的ofenabled_apis值决定的。 |
Vif-plugging 配置
-
OVS plugin
-
Linux Bridge Plugin
-
NEC Plugin
-
Big Switch Plugin
-
Hyper-V Plugin
-
Brocade Plugin
对于这些插件nova.conf默认值就足够了。
Vif-plugging with Nicira NVP Plugin
$ libvirtd version
在nova.conf文件中
, 更新libvirt_vif_driver值,取决于您的
libvirt版本.
Version | Required Value |
---|---|
libvirt (version >= 0.9.11) |
|
libvirt (version < 0.9.11) |
|
ESX | No vif-plugging configuration is required |
XenServer |
|
例如: libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver
![]() | Note |
---|---|
当你使用的libvirt < 0.9.11, 必须额外编辑 |
![]() | Note |
---|---|
假如你的部署包含异构计算平台(例如一些主机是KVM,另外一些是ESX),那么nova-compute 需求的vif-plugging配置可能会不同,即使是在同一个部署中 |
nova.conf配置示例 (nova-compute
和 nova-api
)
例如上面的设置,假设云控制器节点运行Openstack计算,并且Openstack网络IP地址是192.168.1.2,vif-plugging使用LibvirtHybridOVSBridgeDriver.
network_api_class=nova.network.neutronv2.api.API neutron_url=http://192.168.1.2:9696 neutron_auth_strategy=keystone neutron_admin_tenant_name=service neutron_admin_username=neutron neutron_admin_password=password neutron_admin_auth_url=http://192.168.1.2:35357/v2.0 security_group_api=neutron firewall_driver=nova.virt.firewall.NoopFirewallDriver service_neutron_metadata_proxy=true neutron_metadata_proxy_shared_secret=foo # needed only for nova-compute and only for some plugins libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver