一、实验环境介绍
本文通过Devstack重点来学习Openstack的网络模型,包括bridge模式下和openvswitch模式下网络流量模型,由于要搭建完整的openstack环境很复杂,同时需要很多物理资源,作为没有设备资源又想学习的同学,可以参考本文的模式进行搭建。
另外说一下,虽说目前大家都开始讨论和使用Kubernetes,但是Kubernetes和Openstack的网络模型还是有相似之处,学习Openstack流量模型还是有一定意义的。
在vmware workstation中生成了两台ubuntu的虚拟机,一台作为DevStack的Controller,一台作为DevStack Compute,Controller有三块网卡,ens33、ens38、ens39,ens33使用NAT方式访问公网,同时可以被笔记本电脑访问,ens38用于模拟openstack内部虚拟机流量网络,controller 和compute组成一个内部网络,ens39桥接到笔记本WIFI网卡,用于作为openstack外部网络访问的网卡,Compute节点只有ens33和ens38两张网卡。
二、DevStack安装
1、git clone https://opendev.org/openstack/devstack 国内速度太慢,建议使用国内的加速地址,建议使用git clone http://git.trystack.cn/openstack/devstack.git
2、进行local.conf的配置,在devstack目录下新建local.conf来对controller和compute进行配置,配置分别如下:
[[local|localrc]]
MULTI_HOST=true
HOST_IP=192.168.183.164 # management & api network
LOGFILE=/opt/stack/logs/stack.sh.log
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=12345678
RABBIT_PASSWORD=12345678
SERVICE_PASSWORD=12345678
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# enable neutron-ml2-vlan
disable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron,q-lbaas,q-fwaas,q-v*n
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
===============================================================
[[local|localrc]]
MULTI_HOST=true
HOST_IP=192.168.183.165 # management & api network
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=12345678
RABBIT_PASSWORD=12345678
SERVICE_PASSWORD=12345678
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# Service information
SERVICE_HOST=192.168.183.164
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
Q_HOST=$SERVICE_HOST
KEYSTONE_AUTH_HOST=$SERVICE_HOST
KEYSTONE_SERVICE_HOST=$SERVICE_HOST
CEILOMETER_BACKEND=mongodb
DATABASE_TYPE=mysql
ENABLED_SERVICES=n-cpu,q-agt,neutron,placement-api
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
# vnc config
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
3.替换ubuntu镜像源
替换/etc/apt/sources.list中的url为阿里云的镜像源:http://mirrors.aliyun.com/ubuntu
4.替换python pip的镜像源
[email protected]:~/devstack$ sudo cat /root/.pip/pip.conf
[global]
timeout = 60000
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
5.分别在controller和compute 上执行./stack.sh,期间如果有失败的情况,要具体分析哪里出错了。