Juju-deployer Hint

OPENSTACK支持ovs和gateway两种网络形式。OVS类似vmware的port group,gateway类似NSX edge gateway。

以下面例子为例,data-port=接受vlan tag的uplink,ext-port=不接受vlan tag的native uplink。

neutron-gateway:
charm: local:trusty/neutron-gateway
num_units: 3
to:
– controller-node=0
– controller-node=1
– controller-node=2
options:
data-port: bond1
bridge-mappings: physnet1:br-data                 mapping后面的内容只是名字和注释,此名字在openstack建vlan型network时会用到
vlan-ranges: physnet1:100:4094
#ext-port: bond1
instance-mtu: 1400

Openstack hints

Power-up host in MAAS

MAAS能够控制网内可见的host,以实现PXE BOOT,Power-up/down等功能。MAAS不止可以控制网内的physical host,还可以控制virsh中的vm。

MAAS控制HP,需要iLO firmware 2.4

MAAS控制virsh vm,选择”virsh”, “qemu+ssh://root@10.240.169.2/system”,和virsh中vm的名字。这里10.240.169.2是拥有这个virsh的hypervisor,所以root自然就是可以登录这个hypervisor并具有执行turn on这台vm权限的用户。

Clear DHCP on MAAS

每次重建OPENSTACK,MAAS中cluster控制的网段dhcp pool都需要手动清空,juju destroy不会自动清空。

cd /var/lib/maas/dhcp

sudo bash

cat dhcpd.leases | awk ‘/^host/,/}/ {print$0} /^server/ {print $0}’ > newlease

cp newlease dhcpd.leases

service maas-dhcpd restart

exit

Source

建好Openstack后,需要使用source命令营造一个用户环境,之后任何openstack命令都会以source中定义的内容去和keystone进行authentic。

export OS_USERNAME=admin
export OS_PASSWORD=******
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://10.240.169.202:35357/v2.0

这里10.240.169.202是keystone cluster的vip。

比如下面的例子中,neutron命令会通过source中定义的auth URL去尝试以admin登陆进行net-list命令。

*****@maas-wticiaas:~/charms$ neutron net-list
+————————————–+—————————————————-+——————————————————-+
| id | name | subnets |
+————————————–+—————————————————-+——————————————————-+
| 8dbef572-5a0a-48c7-9a31-31caf643e3bf | HA network tenant 893503fac1bd482b9e5b1c8a30c9e027 | 78d876be-bb0a-45c7-81e7-b5d7f691e62f 169.254.192.0/18 |
| 7c31a6f3-1a77-460e-9f75-bc7547bb46f5 | DMZ | 34718522-e9ee-4bfc-92e2-12c3c065d617 10.237.3.0/24 |
| 2c8465c3-b2c5-440a-8448-f08b4430f5bf | External | 9e8bef9c-7e74-4697-8985-ce7f0f6ca87f 10.240.172.0/24 |
+————————————–+—————————————————-+——————————————————-+

如果为了安全不想把密码写到文件里,可以script让用户手动输入

userinputpassword

Network:

下图是openstack大致网络关系。

openstack_network图中,Br-Ext是untagged uplink,Br-Vlan是juju中的br-data为tagged uplink,Br-Int类似ACI中的AEP负责各网络部件之间连接,Br-Tun是vxlan。

nova-compute的External uplink可以选择是从自己host上的uplink直接出去还是从neutron-gateway的uplink出去,如果gateway,那就以为只traffic要从br-int到controller,再从controller上gateway定义中的upolink出去。neutron-gateway在设计时也可以选择是从trunk还是native vlan uplink出去。

在host上用ovs-vsctl show 查看各自ovs 上的br关系。

 

跳过任何注释直接显示实际script有效部分

cat xx | egrep -v “(^#.*|^$)”

ACI

EPG中的Static Binding有3中接口模式:

802.1P:给QOS用的,一般情况下都和UNTAGGED作用一样。但如果一个接口同时定义在多个EPG中,既是802.1P又是TRUNK,那么802.1P的流量将被化做VLAN0,其他流量保持原有VLAN TAG。

TRUNK:和普通SW上的TRUNK一致。

UNTAGGED:和普通SW的ACCESS PORT一致。

ACI中同一个接口可以归为多个EPG,但是每个EPG中只能对同一个接口绑定一次,也就是说要定义一个有N多个VLAN 的TRUNK口,就要创建N多个EPG。

BD和EPG中都有subnet,如果只在BD或EPG中的subnet建gateway,而没有在EPG中绑定借口,那么这个ip是不会出现在设备接口上的,也就是show ip int br看不到,任何设备上show ip route也看不到,但是这个网段是可以通过vrf routing leak路由宣告出去,比如从epg1 leak给l3 out epg,然后路由会被上家路由器学到。如果是在epg中绑定借口,那么不论ip是定义在BD还是EPG中,都会生成SVI。

 

ACI中路由是基于各LEAF和SPINE之间通过BGP学习,所以应用任何路由协议之前,要先到Fabric Policy–Pod Policy下开启BGP Reflector并定义AS.

ACI 1.2中,L3和L2 OUT都必须有NETWORK EPG,EPG中可以没有Contracts,这一点和前几个版本不同。L3 OUT中默认所有网络都可以ANNOUNCE出去。如果要做VRF间的路由渗透,只需在NETWORK EPG(Provider)和A EPG(Consumer)中建立CONTRACT联系即可,当然还是要定义NETWORK中具体哪些网络可以渗透。L2 OUT中必须定义接口使用的VLAN DOMAIN,而且只能从L2 EXT DOMAIN中选。同时,此接口在AEP中也必须要绑定相同的L2 DOMAIN。这里有个问题,如果L2和L3 OUT都用同一个接口,而同一个接口不可以属于两个DOMAIN(会有错误提示),这里其实在定义L3 OUT的地方可以空出L3 DOMAIN不定义,虽然会有FAULT,但是不影响任何路由功能,这样一来,接口只属于L2 OUT DOMAIN,就可以即用L2又有L3。

 

show ip arp:

show endpoint ip 10.237.4.1

clear ip arp:

clear system internal epm endpoint key vrf  OpenIAAS:Bell ip 10.237.4.1

可以用moquery直接从ACI DATABASE中以查找log的形式查找数据。
比如要找某个IP在ACI中的位置:
moquery -c fvCEp -f ‘fv.CEp.ip==”198.18.1.49″‘
找某一个vlan在ACI中的应用
moquery -c fvIfConn | grep 2681
找某一个MAC在ACI中的应用
moquery -c fvTunDefRef | grep 00:50:56:64:2F:3E