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
2. 创建实例网络,任选一个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
```

转载于:https://www.cnblogs.com/zhangyufei/p/8472923.html

enable multi-tenancy on openstack pike相关推荐

  1. 最新Ceph L版与openstack Pike对接

    安装Ceph luminous 实验环境 三台服务器,每台服务器都有4块硬盘,每台服务器都将自己的第一块硬盘作为系统盘,剩下的做ceph 一.在所有服务器上操作 #使用阿里源 yum install ...

  2. ##6.2 Neutron计算节点-- openstack pike

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

  3. OpenStack Pike 版本的 Mistral 安装

    OpenStack Pike 版本的  Mistral 安装部署 # 安装环境使用的centos 7.3 1. 安装 Mistral 安装包. # yum -y install openstack-m ...

  4. Pulsar官方文档翻译-概念和架构-多租户(Multi Tenancy)

    官网原文标题<Multi Tenancy> 翻译时间:2018-10-28 官网原文地址:http://pulsar.apache.org/docs/en/concepts-multi-t ...

  5. OpenStack Pike安装学习笔记

    此文原创,绝大部分资料翻译自OpenStack官方安装GUIDE,转载请注明出处. 目录 目录... 1 前言... 4 OpenStack参考架构... 4 硬件架构及配置... 5 控制器节点.. ...

  6. OpenStack Pike Minimal安装:三、镜像管理

    1.创建服务凭据 #先使用脚本登陆admin [root@controller ~]# . admin-openstack.sh ①创建glance user openstack user creat ...

  7. OpenStack Pike Minimal安装:二、身份认证

    1.在controller节点上安装keystone root@controller ~]# yum install openstack-keystone httpd mod_wsgi -y 2.配置 ...

  8. devstack安装OpenStack Pike版本 (OVN+VLAN)

    控制节点配置文件 # # Sample DevStack local.conf. # # This sample file is intended to be used for your typica ...

  9. devstack安装OpenStack Pike版本 (OVS+VLAN)

    安装环境和安装过程与前一篇描述相同. http://blog.csdn.net/chenhaifeng2016/article/details/78956800 安装过程中不相同之处如下: 1. 默认 ...

最新文章

  1. RecycleView加载不同类型的Item
  2. 9行代码AC——L1-022 奇偶分家(10 分)(~解题报告~)
  3. 分层结构,协议,接口,服务
  4. 2017.10.26 星际贸易 思考记录
  5. wpf label字体为斜体_2020年趋势:20款流行字体大预测
  6. Papervision3D对象
  7. Java排序算法——归并排序
  8. TypeError: can‘t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory fi
  9. 快快编程kkcoding/太戈编程Tiger AI答案库 (每月更新)第三期 答案仅供参考,不能保证100%的准确性
  10. 小米路由器显示DNS服务器设置错误,小米路由器dns地址怎么设置
  11. 自己整理的申论知识体系梳理分享
  12. 45届ICPC昆明站热身赛C-Statues
  13. 图片路径加?什么意思
  14. jsp+ssm计算机毕业设计游戏网站设计【附源码】
  15. OpenJudge-2152:Pots
  16. android str 字幕文件,视频显示字幕(解析srt文件)
  17. cpu压力 测试软件,破坏测试工具——CPU压力
  18. Android Telephony控制通话消息下发流程
  19. 电信联通不回应宽带不达标事件
  20. Ubuntu 22.04安装软件无图标

热门文章

  1. 步进电机基础(2.6)-直线步进电机
  2. 如何进行软件系统架构设计?
  3. Visual Studio设置release版本可调试
  4. 此安装不支持该项目类型
  5. (干货)备战2021年软考中级网络工程师-04知识产权与标准化
  6. wine下微信中文乱码修订
  7. was not declared in this scop
  8. 约瑟夫问题(c语言)
  9. 龙芯IPC追平Zen2 稳步推进产业生态
  10. python基础教程第三版豆瓣-数据结构与算法必读书单吐血整理推荐【附网盘链接】...