OpenStack的网络管理指南(3)——对Openstack身份和计算所需的配置

OpenStack的网络管理指南第三部分


要让Openstack的网络工作起来,你必须配置和设置OpenStack的身份服务和OpenStack计算服务。


配置Openstack身份认证服务

关于身份认证中的一些概念,可以参阅这里http://www.kankanews.com/ICkengine/archives/10788.shtml

1、Create the get_id() Function
get_id ()函数存储已创建的对象的ID,并且可以去除容易出错的复制粘贴的对象id在后续的步骤中

a.将下面的函数添加到你的.bashrc文件中
$ function get_id () {
echo `"$@" | awk '/ id / { print $4 }'`
}

b.Source the .bashrc file:
$ source .bashrc

2.创建OpenStack的网络服务入口
OpenStack 网络必须在Openstack计算服务的目录中,如下所示创建服务:
  1. $ NEUTRON_SERVICE_ID=$(get_id keystone service-create --name neutron --type network --description 'OpenStack Networking Service')
3.创建OpenStack的网络服务端点入口(端点 endpoint 其实指访问服务的地址
您创建一个OpenStack的网络端点入口的方式取决于您是否正在使用SQL目录驱动程序或模板目录驱动程序:
a.如果您使用的是SQL驱动程序,请运行以下这些参数
  • $ 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/" 

b.如果您正在使用的是模板驱动程序,添加以下内容到OpenStack计算目录模板文件(default_catalog.templates),使用这些参数
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

比如:

Select Text
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
4.创建OpenStack的网络服务用户
你必须提供管理员用户凭证让Openstack计算和Openstack网络的一些内部组件可以访问Openstack网络API,建议的方法是创建一个特殊的服务租户,该租户创建一个neutron用户,分配这个用户以管理员的角色
a.创建管理员角色
  1. $ ADMIN_ROLE=$(get_id keystone role-create --name=admin)
b.创建neutron用户
  1. $ NEUTRON_USER=$(get_id keystone user-create --name=neutron --pass="$NEUTRON_PASSWORD" --email=demo@example.com --tenant-id service)
c.创建服务租户
  1. $ SERVICE_TENANT=$(get_id keystone tenant-create --name service --description "Services Tenant")
d.建立租户,用户和角色之间的关系
$ keystone user-role-add --user_id $NEUTRON_USER --role_id $ADMIN_ROLE --tenant_id $SERVICE_TENANT
请参阅OpenStack的安装指南来了解更多关于创建服务项目和服务用户的更多细节。


 配置OpenStack计算服务

在OpenStack的网络使用时,你不能运行OpenStack计算的nova网络(不像传统OpenStack计算部署)。相反Openstack计算委托几乎所有的跟网络相关的决定给Openstack网络。调用面向租户的API来管理对象,例如安全组和浮动ip地址,这些API已经从Openstack计算上剥离由Openstack网络API代理(这句话经过我的加工,原句是这样的:Tenant-facing API calls to manage objects like security groups and floating IPs are proxied by OpenStack Compute to OpenStack Network APIs)
然而面向运营商的工具(例如:NOVA管理)是没有代理的,因此不该使用代理。

警告
当你配置网络时,查阅这份文档是非常重要的,而不是依靠Openstack计算网络文档(NOVA network的文档而不是现在的neutron文档)或者以往与Openstack计算有关的经验。假如关于网络的某条Nova CLI命令或者配置选项没有在本指南中提到,那么这个命令也许不支持Openstack网络。特别的,你不能像nova-manage和nova一样使用CLI工具去管理网络或者ip地址,包括固定和浮动ip。

注意
我们强烈建议您先卸载nova网络,并在使用Openstack网络之前,重新启动任何运行nova网络的物理节点。无意中同时运行nova网络和Openstack网络可能会引起问题

为了确保Openstack计算和Openstack网络(不是nova网络)的正常运行,则必须调整nova.conf的配置。

网络API和凭据配置
每次虚拟机在Openstack在设置或者取消设置,所有的nova服务必须使用标准API与Openstack网络进行通信,为了这一点,你必须配置nova.conf文件中的所有项目(用于每个nova-api和nova-compute实例)
表3.1. 配置
ItemConfiguration

network_api_class

修改默认 nova.network.neutronv2.api.API, 来表明是Openstack网络而不是传统的nova网络模型

neutron_url

为这次部署更新neutron-server实例的主机名/IP 和 端口

neutron_auth_strategy

为所有的部署保持keystone的默认值

neutron_admin_tenant_name

更新上一节OpenStack 身份配置创建的服务租户的名字

neutron_admin_username

更新上一节OpenStack 身份配置中创建的用户的名字

neutron_admin_password

更新上一节OpenStack 身份配置中创建的用户的密码

neutron_admin_auth_url

更新OpenStack的身份服务器的IP地址和端口。这是(keystone)的身份管理API服务器的IP和端口值,而不是身份服务API的IP和端口。

安全组配置

OpenStack的网络服务使用了一种比内置安全组功能到OpenStack计算内更加灵活和强大的机制来提供安全组功能,因此,如果您使用OpenStack的网络,你应该始终禁用内置的安全组和安全组代理OpenStack的网络API的调用。如果你不这样做,同时使用两者将会产生安全策略的冲突

OpenStack的网络代理安全组,请使用以下值配置nova.conf:

Table 3.2. nova.conf Security Group Settings
Item Configuration

firewall_driver

更新nova.virt.firewall.NoopFirewallDriver。这样nova-compute将不执行iptables过滤本身

security_group_api

更新neutron,使所有安全组请求通过OpenStack的网络服务代理。

元数据配置

OpenStack计算服务允许虚拟机查询和虚拟机相关的元数据通过web请求一个特殊的169.254.169.254地址,即使请求来自于被隔离的网络,或从多个使用重叠的IP地址网络,OpenStack的网络也支持代理那些nova-API的请求
要启用代理请求,你必须更新以下nova.conf的字段
Table 3.3. nova.conf Metadata Settings
Item Configuration

service_neutron_metadata_proxy

更新为true, 否则 nova-api 将不能响应来自neutron-metadata-agent的请求.

neutron_metadata_proxy_shared_secret

更新字符串“密码”的值,您还必须为metadata_agent.ini文件配置相同的值,对元数据请求进行身份验证。

这两个文件中的空字符串的默认值将允许元数据的功能,但是不安全,如果有任何不信任的实体访问元数据API。

[Note] Note

作为一项预防措施,即使使用neutron_metadata_proxy_shared_secret ,建议您不要使用相同的nova- API实例租户用于公开元数据。相反,你应该运行一组专用的仅适用你的管理网络的nova- API实例用于公开元数据。一个给定的nova- API实例是否公开元数据API是由配置文件nova.conf的ofenabled_apis值决定的。

 Vif-plugging 配置

当nova-compute创建一个虚拟机,它连接每个虚拟机的虚拟网卡到Openstack网络控制的虚拟交换机上,通知虚拟交换机哪个Openstack网络端口ID和哪个虚拟网卡相连,不同的Openstack网络插件可能需要不同类型的VIF-plugging,您必须指定类型Vif-plugging来满足nova-compute实例在文件nova.conf中

以下插件支持“端口绑定”的API扩展,允许nova查询所需的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
NVP插件的vif配置选择取决于您使用libvirt的版本。要检查您的libvirt的版本,使用方法:
$ libvirtd version

nova.conf文件中, 更新libvirt_vif_driver值,取决于您的libvirt版本.

Table 3.4. nova.conf libvirt Settings
VersionRequired Value

libvirt (version >= 0.9.11)

nova.virt.libvirt.vif.LibvirtOpenVswitchVirtualPortDriver

libvirt (version < 0.9.11)

nova.virt.libvirt.vif.LibvirtOpenVswitchDriver

ESX

No vif-plugging configuration is required

XenServer

nova.virt.xenapi.vif.XenAPIOpenVswitchDriver

例如: libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver

[Note] Note

当你使用的libvirt < 0.9.11, 必须额外编辑/etc/libvirt/qemu.conf, 注释掉条目cgroup_device_acl', 增加条目'/dev/net/tun'到列表中作为配置项,然后重启libvirtd.

[Note] 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
 

终于完了!!! 发表!!! 亲们求捧场!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要编写Python脚本调用OpenStack API对OpenStack云平台进管理和运维,要遵循以下步骤: 1. 安装OpenStack Python SDK:首先要安装OpenStack Python SDK,可以使用pip安装: ```bash pip install openstacksdk ``` 2. 配置OpenStack认证信息:在编写Python脚本之前,配置OpenStack认证信息,包括用户名、密码、项目名、认证URL等。可以通过环境变量或直接在脚本中定义这些信息。 ```python from openstack import connection # 配置OpenStack认证信息 auth_url = "https://<auth_url>/v3" username = "<username>" password = "<password>" project_name = "<project_name>" user_domain_name = "Default" project_domain_name = "Default" # 创建OpenStack连接 conn = connection.Connection( auth_url=auth_url, username=username, password=password, project_name=project_name, user_domain_name=user_domain_name, project_domain_name=project_domain_name ) ``` 3. 调用OpenStack API:一旦创建了OpenStack连接,就可以调用OpenStack API对云平台进管理和运维。OpenStack Python SDK提供了许多API,可以查阅相关文档了解具体的API使用方法。 ```python # 获取所有的云服务器 servers = conn.compute.servers() # 创建一个云服务器 server = conn.compute.create_server( name="myserver", image_id="<image_id>", flavor_id="<flavor_id>", network_id="<network_id>" ) ``` 通过以上步骤,就可以编写Python脚本调用OpenStack API对OpenStack云平台进管理和运维了。在实际使用过程中,要注意OpenStack API的版本和使用权限等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值