Friday, March 06, 2015

DevStack 安装 OpenStack 多节点

目前安装 OpenStack 常见的方案有 Redhat 的 RDO 和社区的 DevStack
其中,RDO 功能比较强大,运行也稳定,可以在一个节点上通过一个 answer 文件直接部署多个节点,搭建一套 OpenStack 环境。但是可惜,在 Ubuntu 上还不支持。
DevStack 支持 Ubuntu、Fedora 等环境,需要在每个节点上单独执行,适合进行实验。目前常见的教程一般都是讲解 DevStack 单节点安装。本文讲解最新的 Juno 版本在多节点上的安装过程。

网络环境

两台机器,分为控制节点(同时也作为网络节点)和计算节点。

控制节点

eth0: 9.186.100.77/24 作为管理网络(同时也是公共网络)。 eth1: 10.0.100.77/24 作为内部网络接口。

计算节点

eth0: 9.186.100.88/24 作为管理网络(同时也是公共网络)。 eth1: 10.0.100.88/24 作为内部网络接口。

配置 stack 用户

创建 stack 用户
sudo groupadd stack
sudo useradd -g stack -s /bin/bash -d /opt/stack -m stack
添加 stack 用户权限。
sudo echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
切换到 stack 用户
sudo su - stack

下载代码

下载 devstack 代码,并切换到 stable/juno 分支。
sudo apt-get install git -y 
git clone https://git.openstack.org/openstack-dev/devstack -b stable/juno

编写运行配置文件

在 devstack 根目录下,编写 local.conf。
控制节点的 local.conf
[[local|localrc]]

HOST_IP=9.186.100.77 # management network
PUBLIC_INTERFACE=eth0  #public network

FIXED_RANGE=10.0.100.0/24
#FIXED_NETWORK_SIZE=4096
FLOATING_RANGE=9.186.100.0/24
PUBLIC_NETWORK_GATEWAY=9.186.100.1

MULTI_HOST=1
LOGFILE=/opt/stack/logs/stack.sh.log

# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz

# enable neutron-ml2-vxlan
disable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,q-metering,q-lbaas,neutron,tempest,heat

# OFFLINE=True
计算节点的 local.conf
[[local|localrc]]
HOST_IP=9.186.100.88 # management IP
FIXED_RANGE=10.0.100.0/24
#FIXED_NETWORK_SIZE=4096
FLOATING_RANGE=9.186.100.0/24

MULTI_HOST=1
LOGFILE=/opt/stack/logs/stack.sh.log

# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz

# Service information
SERVICE_HOST=9.186.100.77
MYSQL_HOST=9.186.100.77
RABBIT_HOST=9.186.100.77
GLANCE_HOSTPORT=9.186.100.77:9292
Q_HOST=9.186.100.77
KEYSTONE_AUTH_HOST=9.186.100.77
KEYSTONE_SERVICE_HOST=9.186.100.77

CEILOMETER_BACKEND=mongodb

DATABASE_TYPE=mysql
ENABLED_SERVICES=n-cpu,n-net,n-api,c-sch,c-api,c-vol

# vnc config
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://9.186.100.77:6080/vnc_auto.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN

# OFFLINE=True

执行配置

执行命令。
./stack.sh
会输出各项操作的结果。日志会写到 stack.sh.log 文件。

其它事项

卸载 openstack
./unstack.sh
清除安装。
./clean.sh
有时候有些文件可能清除不干净,手动执行
sudo rm -rf /etc/libvirt/qemu/inst*
sudo virsh list | grep inst | awk '{print $1}' | xargs -n1 virsh destroy

1 comment: