Multi-tenancy 是openstack ironic从Ocata版本开始支持的新特性,通过network-generic-switch插件控制交换机,Ironic可以实现在不同租户间机网络隔离,并且可以使得物理机和虚拟机工作在同一个二层中。之前在O版本折腾过一次,也写了对应的文档,但是现在因为工作需要,在Pike版本重新做了一遍这份工作,发现但是当时理解的不是很深入,走了不少弯路,另外p版本也引入了新的bug,所以重新写了一份文档,记录了在 kolla 部署出来的pike版本openstack上,如何配置相关服务,启用multi-tenancy功能。

基础环境:

  1. kolla pike openstack集群
  2. cisco 300 交换机
  3. dell r720 服务器

实验步骤:

1. 网络设置

ipmi和交换机默认已经配好,此步骤可忽略

配置好被部署机器的IPMI信息,cisco交换机对应的管理口ip,打开交换机的ssh权限。创建出要使用的vlan。配置GE5为trunk 模式:

[root@kolla-aio ~]# telnet 10.200.43.200
Trying 10.200.43.200...
Connected to 10.200.43.200.
Escape character is '^]'.
User Name:cisco
Password:********** switch797d1f#configure
switch797d1f(config-if)#vlan 100-1024
switch797d1f(config)#interface GE 3
switch797d1f(config-if)#switchport mode trunk
switch797d1f(config-if)#switchport trunk allowed vlan add all
switch797d1f(config-if)#do show interfaces switchport GE 3
Port : gi3
Port Mode: Trunk
Gvrp Status: disabled
Ingress Filtering: true
Acceptable Frame Type: admitAll
Ingress UnTagged VLAN ( NATIVE ): 1

2. 主机调整

自动部署已经做好,此步骤可以忽略

关闭主机防火墙 :
systemctl stop iptables.service
systemctl disable iptables.service 关闭主机iscsi服务: systemctl stop iscsid.socket
systemctl stop iscsid
systemctl disable iscsid.socket
systemctl disable iscsid

3. 创建相关网络

1.创建部署网络

物理机部署过程中,需要访问ironic api,所以部署网络需要和管理网络打通,我们为了方便,直接使用管理网络作为部署网络,方法如下:

在交换机上接一根网线到管理网连接到管理网,并且配置vlan id为102,在openstack创建一个网络,vlan id为102,将这个网络作为部署网络。

这种方案的优点在于方便,缺点在于,部署网络的流量会影响管理网的网络质量,如果是大规模的生产环境,不建议这么做,建议拆分管理网和部署网络,配置交换机和或者虚拟路由打通管理网和部署网络。

查看物理网络名称

[root@contrl01 ~]# grep network_vlan_ranges /etc/kolla/neutron-server/ml2_conf.ini
network_vlan_ranges = physnet_vlan:100:900

物理网络名称是physnet_vlan,在此物理网络中创建vlanid为 102的网络,ip范围为10.200.43.50,10.200.43.59,网关为10.200.43.254。命令如下:

neutron net-create vlan102 --provider:network_type vlan  \
--provider:physical_network physnet_vlan --provider:segmentation_id 102 NET102=`neutron net-list|grep vlan102|awk '{print $2}'` neutron subnet-create --name public_subnet \
--ip-version 4 \
--gateway 10.200.43.254 \
--allocation-pool start=10.200.43.50,end=10.200.43.59 \
$NET102 10.200.43.0/24
  1. 创建实例网络,任选一个103-900之间的vlanid,这里选择103,任选一个ip范围,只要规避网络冲突就好,这里选择192.168.0.0/24,命令如下:
neutron net-create vlan103 --provider:network_type vlan  \
--provider:physical_network physnet_vlan --provider:segmentation_id 103 NET103=`neutron net-list|grep vlan103|awk '{print $2}'` neutron subnet-create --name vlan103_subnet \
--ip-version 4 \
$NET103 192.168.0.1/24

4. 配置ironic

在所有控制节点上配置ironic,enable multi-tenancy,要修改的内容如下:

[DEFAULT]
enabled_drivers = pxe_ipmitool
enabled_network_interfaces=noop,flat,neutron [neutron]
cleaning_network = vlan102
provisioning_network = vlan102

配置完成后执行docker restart ironic_conductor ironic_api

5. 更新networking-generic-switch代码

P版本networking-generic-switch插件有bug,需要修改部分代码,在所有控制节点上执行以下命令

 docker exec -u 0 neutron_server  sed -i  44,46d /var/lib/kolla/venv/lib/python2.7/site-packages/networking_generic_switch/devices/netmiko_devices/cisco300.py
docker restart neutron_server

6. 将交换机信息配置给配置neutron

自动部署已经做好,此步骤可以忽略

配置 /etc/kolla/neutron-server/ml2_conf.ini,添加交换机的信息,此例中的交换机信息是:

型号 cisco 300系列
主机名 switch797d1f
ip 10.200.43.200
用户名 cisco
密码 ****

对应的配置文件内容是:

/etc/kolla/neutron-server/ml2_conf.ini
[ml2]
mechanism_drivers = openvswitch,l2population,genericswitch [genericswitch:switch797d1f]
device_type = netmiko_cisco_s300
username = cisco
password = ****
ip = 10.200.43.200

重启neutron_server使得我们的配置生效。

7.创建ironic node

创建支持multi-tenancy功能的ironic node,和创建普通node几乎没有区别,唯一的区别是,需要指定网卡参数 --network-interface neutron,示例如下:

# 设置API版本 1.34

export IRONIC_API_VERSION=1.34
#创建部署镜像,此步骤部署脚本已经做掉,可以忽略
glance image-create --name deploy-vmlinuz --visibility public --disk-format aki --container-format aki < ironic-agent.kernel
glance image-create --name deploy-initrd --visibility public --disk-format ari --container-format ari < ironic-agent.initramfs #创建node
ironic node-create -d pxe_ipmitool -n 197test --network-interface neutron
NODE_UUID=`ironic node-list|grep 197test|awk '{print $2}'` #设置node driver信息
DEPLOY_VMLINUZ_UUID=`glance image-list |grep deploy-vmlinuz|awk '{print $2}'`
DEPLOY_INITRD_UUID=`glance image-list |grep deploy-initrd|awk '{print $2}'`
USER=admin
PASS=****
ADDRESS=10.200.43.197
ironic node-update $NODE_UUID add driver_info/ipmi_username=$USER \
driver_info/ipmi_password=$PASS driver_info/ipmi_address=$ADDRESS \
driver_info/deploy_kernel=$DEPLOY_VMLINUZ_UUID \
driver_info/deploy_ramdisk=$DEPLOY_INITRD_UUID #设置node 属性
CPU=4
RAM_MB=8192
DISK_GB=80
ARCH=x86_64 ironic node-update $NODE_UUID add \
properties/cpus=$CPU properties/memory_mb=$RAM_MB \
properties/local_gb=$DISK_GB properties/cpu_arch=$ARCH ironic node-set-provision-state $NODE_UUID manage

8.创建ironic port

创建multi-tenancy功能的port和创建普通ironic port差异较大,需要额外提供此网卡所接入的交换机的端口信息,包括:交换机主机名,交换机mac地址,通过网线接入的交换机接口名。

由于默认ironic client的使用的API版本比较旧,不支持创建含有交换机信息的得port,所以还需要先设置API版本,示例如下:

export IRONIC_API_VERSION=1.20

#r720 网口2 mac地址
HW_MAC_ADDRESS=b8:2a:72:ce:10:c6 #网口2接入的交换机信息
SWITCH_MAC_ADDRESS=00:af:1f:79:7d:1f
SWITCH_HOSTNAME=switch797d1f
SWITCH_PORT=GE9 #创建端口
ironic port-create -a $HW_MAC_ADDRESS -n $NODE_UUID \
-l switch_id=$SWITCH_MAC_ADDRESS -l switch_info=$SWITCH_HOSTNAME \
-l port_id=$SWITCH_PORT --pxe-enabled true ironic node-set-provision-state $NODE_UUID provide

9.创建裸机对应的flavor

首先要创建与裸机对应的flavor,并添加元数据,示例如下:

nova flavor-create my-baremetal-flavor auto $RAM_MB $DISK_GB $CPU
nova flavor-key my-baremetal-flavor set hypervisor_type=ironic

10. 创建裸机实例

使用上文创建的flavor和一个非部署网络(vlan102)的vlan网络,创建实例,示例如下:

nova boot --image cirros  --flavor $FLAVORID  --nic net-id=$NET103 test

enable multi-tenancy on openstack pike的更多相关文章

  1. CentOS7.2非HA分布式部署Openstack Pike版 (实验)

    部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...

  2. OpenStack Pike超详细搭建文档 LinuxBridge版

    前言 搭建前必须看我 本文档搭建的是分布式P版openstack(1 controller + N compute + 1 cinder)的文档. openstack版本为Pike. 搭建的时候,请严 ...

  3. openstack pike 使用 linuxbridge + vxlan

    #openstack pike 使用 linuxbridge + vxlan #openstack pike 集群高可用  安装部署 汇总 http://www.cnblogs.com/elvi/p/ ...

  4. openstack pike 使用 openvswitch + vxlan

    # openstack pike 使用 openvswitch + vxlan# openstack pike linuxbridge-agent 换为 openvswitch-agent #open ...

  5. openstack pike 单机 一键安装 shell

    #openstack pike 单机  centos 一键安装 shell #openstack pike 集群高可用  安装部署 汇总 http://www.cnblogs.com/elvi/p/7 ...

  6. ##2.基础服务(SQl,RabbitMQ)-- openstack pike

    2-基础服务(SQl,RabbitMQ) openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.基础服务(Mysql ...

  7. ##4.Glance 镜像服务-- openstack pike

    ##4.Glance 镜像服务 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Glance 镜像服务.txt ...

  8. ##5.1 Nova控制节点-- openstack pike

    ##5.1 Nova控制节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##5.1 Nova控制节点 # co ...

  9. ##6.1 Neutron控制节点-- openstack pike

    ##6.1 Neutron控制节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##6.1 Neutron控制节 ...

  10. ##5.2 Nova计算节点-- openstack pike

    ##5.2 Nova计算节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##5.2 Nova计算节点 # co ...

随机推荐

  1. js中键盘按键对应的键值

    js键盘键值 keycode    8 = BackSpace BackSpace  keycode    9 = Tab Tab  keycode   12 = Clear  keycode   1 ...

  2. win10汇编如何debug(小白向)

    先引用别人的方法 http://blog.csdn.net/lcr_happy/article/details/52491107 按他所说的下完对应软件后,安装其中的dosbox,然后将debug.e ...

  3. 申请9位数QQ

    官网:QQ注册第一步:下面手机号不要填写 第二步:验证 第三步:开始填写手机号 注:不行就多试着几次就可以了,是不是很惊喜啊!(漏洞,被腾讯发现就不行了喽)

  4. 赋值号和printf

    1.赋值号会自动转换类型: int a= 2.1; printf(‘‘%d’’,a);         //输出结果是2 2.printf不会转换类型,而是直接将内存中表示的补码数拿出来,最明显的就是 ...

  5. 在VMware中安装ubuntu

    如果想在自己设置它的属性,比如时区,语言支持之类的,在开机时按[enter], 否则就是默认的设置了,英文语言,而且还不好调.

  6. [SQL] 函数整理(T-SQL 版)

    函数整理(T-SQL 版) 一.数学函数 1.求绝对值 ABS() 函数用来返回一个数值的绝对值. SELECT ABS(-5.38) AS absValue; 2.求指数 POWER()  函数是用 ...

  7. 浅析调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException

    废话不多说,直接进入正题:如何使用JSR303的validate,进行数据校验,失败后直接抛出异常加入流转信息中,并在form页面提示出来. 首先我们为了启用验证,需要向 项目中添加Bean验证的实现 ...

  8. Linux根据UUID自动挂载磁盘分区

    一般服务器都有多个硬盘分区,在重启后,这些分区的逻辑位置加载时可能会发生变动,如果使用传统的设备名称(例如:/dev/sda)方式挂载磁盘,就可能因为磁盘顺序变化而造成混乱. Linux环境中每个Bl ...

  9. BZOJ 4503: 两个串 [FFT]

    4503: 两个串 题意:兔子们在玩两个串的游戏.给定两个只含小写字母的字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现.注意T中可能有"?"字符,这个字符可以匹 ...

  10. BZOJ 3622: 已经没有什么好害怕的了 [容斥原理 DP]

    3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求 ...