
使用 RDO 启动并运行 openstack 相当简单。但是,许多人要求使用现有的外部网络部署 openstack。此方法应允许网络上的任何机器可以通过其浮动 IP 访问启动的实例。
环境 ¶
- CentOS7
- OpenStack RDO KILO
- Vagrant(可选)
在本演示中,我们将使用 Vagrant 启动两个 CentOS7 VM,node1 和 node2。您也可以使用其他机器或甚至物理服务器。
步骤 1 - 创建用于 OpenStack 部署的虚拟机 ¶
1
| # wget https://gist.githubusercontent.com/ksingh7/85d887b92a448a042ca8/raw/372be2527bad24045b3a1764dee31e91074ecb50/Vagrantfile --output-document=Vagrantfile
|
1
| # vagrant up node1 node2
|
- 一旦两台机器都启动,通过
sudo su - ssh 进入它们
步骤 2 - 设置 OpenStack 节点 ¶
- 在两个节点上禁用 CentOS7 网络管理器并更新 CentOS7 包
1
| # systemctl stop NetworkManager;systemctl disable NetworkManager;chkconfig network on;systemctl start network;yum update -y
|
步骤 3 - 设置 RDO ¶
- 在 node1 上设置 RDO 存储库并安装 packstack
1
| # yum install -y https://rdoproject.org/repos/rdo-release.rpm ; yum install -y openstack-packstack
|
步骤 4 - 修改 Packstack 答案文件 ¶
- 接下来生成 packsack 答案文件,通过禁用一些不相关的选项并启用 neutron ML2 插件。
1
2
3
4
5
6
7
| packstack \
--provision-demo=n \
--nagios-install=n \
--os-swift-install=n \
--os-ceilometer-install=n \
--os-neutron-ml2-type-drivers=vxlan,flat,vlan \
--gen-answer-file=answerfile.cfg
|
- 编辑
answerfile.cfg 以添加控制器、计算、网络、存储和数据库的 IP 地址。
1
2
3
4
5
6
7
| CONFIG_CONTROLLER_HOST=10.0.1.10
CONFIG_COMPUTE_HOSTS=10.0.1.10,10.0.1.11
CONFIG_NETWORK_HOSTS=10.0.1.10
CONFIG_STORAGE_HOST=10.0.1.10
CONFIG_AMQP_HOST=10.0.1.10
CONFIG_MARIADB_HOST=10.0.1.10
CONFIG_MONGODB_HOST=10.0.1.10
|
- 接下来编辑
answerfile.cfg 以添加公共和私有接口名称
1
2
3
| CONFIG_NOVA_COMPUTE_PRIVIF=enp0s9
CONFIG_NOVA_NETWORK_PUBIF=enp0s8
CONFIG_NOVA_NETWORK_PRIVIF=enp0s9
|
- 由于我们有多个节点要在其上部署 openstack,让我们设置节点之间的 SSH。
1
2
3
| # ssh-keygen
# ssh-copy-id root@node1
# ssh-copy-id root@node2
|
步骤 5 - 安装 OpenStack ¶
1
| # packstack --answer-file=answerfile.cfg
|
部署完成后
- 从
keystonerc_admin 文件获取您的 openstack 用户名和密码 # cat keystonerc_admin - 将您的网络浏览器指向 http://10.0.1.10/dashboard 并登录到 openstack 控制面板
- 您还可以 source
keystonerc_admin 文件以使用 openstack CLI
1
2
| # source keystonerc_admin
# openstack server list
|
- 通过创建文件
/etc/sysconfig/network-scripts/ifcfg-br-ex 并添加以下内容来创建 OVS 桥接接口
1
2
3
4
5
6
7
8
9
| DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=10.0.1.10 # IP address of enp0s8 interface
NETMASK=255.255.255.0
GATEWAY=10.0.1.1
DNS1=8.8.8.8
ONBOOT=yes
|
- 通过编辑
/etc/sysconfig/network-scripts/ifcfg-enp0s8 并添加以下内容来配置 enp0s8 以进行 OVS 桥接
1
2
3
4
5
| DEVICE=enp0s8
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
|
- 修改 neutron 插件以定义我们的外部物理 L2 分段的逻辑名称为“extnet”
1
| # openstack-config --set /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini ovs bridge_mappings extnet:br-ex
|
1
2
3
| # service network restart
# service neutron-openvswitch-agent restart
# service neutron-server restart
|
步骤 7 - 创建实例的 OpenStack 网络 ¶
1
| # neutron net-create public_network --provider:network_type flat --provider:physical_network extnet --router:external --shared
|
1
| # neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=10.0.1.100,end=10.0.1.110 --gateway=10.0.1.1 public_network 10.0.1.0/24 --dns-nameservers list=true 8.8.8.8 4.2.2.2
|
1
| # neutron net-create private_network
|
1
| # neutron subnet-create --name private_subnet private_network 10.15.15.0/24
|
1
| # neutron router-create router1
|
1
| # neutron router-gateway-set router1 public_network
|
1
| # neutron router-interface-add router1 private_subnet
|
- 此时,您已配置 openstack 网络,您的网络拓扑应如下所示

步骤 8 - 启动实例 ¶
1
| # curl http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img | glance image-create --name='cirros image' --is-public=true --container-format=bare --disk-format=qcow2
|
从 openstack 控制面板
启动实例
- 使用
# openstack network list 获取 Private_Network ID - 创建实例(用从上面获取的网络 ID 替换 net-id)
# openstack server create --image="cirros image" --flavor=m1.tiny --key-name=node1 --nic net-id="288f9b1f-7453-4132-9dd4-8829a6844d73" Demo_Instance - 检查实例状态
# openstack server list
步骤 9 - 访问实例 ¶
- 从 openstack 控制面板将浮动 IP 分配给实例
Projects --> Compute --> Instances --> Actions --> Associate Floating IP - 从 node1 ping 此浮动 IP 地址
# ping 10.0.1.101 - SSH 到 demo_instance
# ssh cirros@10.0.1.101 
完成了!玩转一下,创建几个实例并针对您的工作负载进行测试 ;-)