使用 RDO 部署 OpenStack KILO

转载

Deploying OpenStack KILO using RDO

使用 RDO 启动并运行 openstack 相当简单。但是,许多人要求使用现有的外部网络部署 openstack。此方法应允许网络上的任何机器可以通过其浮动 IP 访问启动的实例。

环境

  • CentOS7
  • OpenStack RDO KILO
  • Vagrant(可选)

在本演示中,我们将使用 Vagrant 启动两个 CentOS7 VM,node1 和 node2。您也可以使用其他机器或甚至物理服务器。

步骤 1 - 创建用于 OpenStack 部署的虚拟机

  • 获取我的 Vagrantfile 版本
1
# wget https://gist.githubusercontent.com/ksingh7/85d887b92a448a042ca8/raw/372be2527bad24045b3a1764dee31e91074ecb50/Vagrantfile --output-document=Vagrantfile
  • 使用 Vagrant 启动虚拟机
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

  • 最后开始部署 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

步骤 6 - 配置 OVS 外部桥接(用于浮动 IP)

  • 通过创建文件 /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 网络,您的网络拓扑应如下所示

Deploying OpenStack KILO using RDO

步骤 8 - 启动实例

  • 添加 glance 镜像
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 控制面板

    • 添加密钥对 Projects --> Compute --> Access & Security --> Key Pairs --> Import Key Pair

      • 密钥对名称 –> node1_key
      • 公钥 –> # cat /root/.ssh/id_rsa.pub 的内容
    • 创建安全组规则用于 ICMP 和 SSH Projects --> Compute --> Access & Security --> security groups --> default --> manage rules Deploying OpenStack KILO using RDO

  • 启动实例

    • 使用 # 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 Deploying OpenStack KILO using RDO

完成了!玩转一下,创建几个实例并针对您的工作负载进行测试 ;-)