前期成功经过DevStack安装OpenStack,现将从机房规划到虚拟机搭建的整个过程总结以下,以供往后查阅或有需之人参考。html
这个整个安装过程的重点,能不能成功就看规划的如何。一旦此步有问题会致使整个安装失败,固然后续步骤操做过程当中你也能够发现此步存在的问题,修改完善也可。html5
首先服务器按照性能划分功能。选择一台性能最好的服务器(内存足够大、CPU足够多、硬盘要求不高)用于控制节点。另选若干台性能通常的服务器用于计算节点。此外若是须要虚拟机之间共享存储的话能够选一些内存通常、CPU通常可是硬盘足够大或者挂载了磁盘阵列的服务器用于创建共享存储,通常选择ceph。linux
每台服务器至少包含两块网卡(若是考虑主备则为四块),最好是两块万兆,根据本身条件而定,没有万兆也可,此块与下部网络规划相对应。磁盘阵列须要的配置单独考虑。主节点须要多装一块网卡,用于与外部网络(此处的外网能够是互联网也能够是公司内部网络)进行通讯。git
服务器选择好后规划网络,网络是整个机房规划的重点。至少须要两台交换机(若是考虑主备则须要四台),一台用于虚拟机之间的通讯网络构建,一台用于宿主机之间的信息交换也称为管理网络和API网络。固然若是都是万兆交换机最好,不然能够将虚拟机之间的通讯网路规划成万兆,管理网络规划成千兆,若是实在没有条件都作成千兆也可。并将外部网络从交换机接出一根线至主节点。shell
管理网络不须要特殊设置,只须要为每台服务器的对应网卡配上此网段固定IP便可。虚拟机之间通讯网络对应的交换机须要进行设置,包含如下功能:一、设置vlan 1 至 100(100个足够了,若是不够能够设置的更大);二、全部端口设置成trunk模式,并容许全部vlan经过。ubuntu
以h3c 6300为例,配置以下:vim
vlan 2 to 100 int range T 2/0/1 to T 2/0/32 port link-type trunk port trunk permit vlan all
虚拟机通讯交换机的其余配置项以及管理网络的配置根据本身的需求进行相应设置。api
选择ubuntu16.04版(目前DevStack对此版本支持较好),在安装软件环节选择虚拟host项。安全
启用root帐户。bash
vim /etc/ssh/sshd_config
修改
PermitRootLogin prohibit-password
为
PermitRootLogin yes
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
sudo useradd -s /bin/bash -d /opt/stack -m stack echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack sudo su - stack
[global] index-url = https://pypi.douban.com/simple download_cache = ~/.cache/pip [install] use-mirrors = true mirrors = http://pypi.douban.com/
vim /etc/network/interfaces
将管理网络设置成固定IP,并须要打开虚拟机内部通讯网络以及主节点外部网络的相应网卡。设置内容大体以下:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp3s0f0 iface enp3s0f0 inet manual auto enp3s0f1 iface enp3s0f1 inet static address 192.168.166.101 netmask 255.255.255.0 gateway 192.168.166.1 dns-nameservers 114.114.114.114
其中网卡名称根据服务器配置而定。
只需安装ntp软件便可:
sudo apt-get install ntp
使用的是devstack newton版。具体部署过程也能够参考cloudman的视频http://cloudman.cc/。
git clone https://git.openstack.org/openstack-dev/devstack -b stable/newton
下载完后,进入devstack目录,新建local.conf文件,根据节点的功能不一样,分别写入不一样配置,具体下面详细说明。
[[local|localrc]] MULTI_HOST=true # management & api network HOST_IP=192.168.166.101 LOGFILE=/opt/stack/logs/stack.sh.log # Credentials ADMIN_PASSWORD=admin MYSQL_PASSWORD=admin RABBIT_PASSWORD=admin SERVICE_PASSWORD=admin 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_AGENT=linuxbridge ENABLE_TENANT_VLANS=True TENANT_VLAN_RANGE=10:100 PHYSICAL_NETWORK=default LOG_COLOR=True 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 # management & api network HOST_IP=192.168.166.102 # Credentials ADMIN_PASSWORD=admin MYSQL_PASSWORD=admin RABBIT_PASSWORD=admin SERVICE_PASSWORD=admin SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz # Service information SERVICE_HOST=192.168.166.101 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 ENABLED_SERVICES=n-cpu,q-agt,neutron Q_AGENT=linuxbridge ENABLE_TENANT_VLANS=True TENANT_VLAN_RANGE=10:100 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=True 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
其中HOST_IP
均为当前主机管理网络的IP地址,计算节点的SERVICE_HOST
项内容为控制节点的管理网络IP地址。主从节点分别按上述配置便可安装成功,注意先安装主节点再安装从节点。
此文件中的信息管理着当前节点的网络对应状况。
将physical_interface_mappings
修改以下:
[linux_bridge] physical_interface_mappings = default:enp130s0f1
其中enp130s0f1为当前节点虚拟机之间通讯的网卡名称。
二、主节点
将flat_networks
修改以下:
[ml2_type_flat] flat_networks = default,public,external
即添加external项,用于虚拟机访问外部网络。
将physical_interface_mappings
修改以下:
[linux_bridge] physical_interface_mappings = default:enp130s0f1,external:enp3s0f0
其中enp3s0f0为主节点与外部网络相连的网卡的名称。即在计算节点的基础上添加此external项。
如此便完成了OpenStack的安装。
如下操做基本所有在Web管理界面进行。地址为主节点的ip地址,密码为主节点的配置项中设置的密码。
在Admin下的Networks中点击Create Network。按照以下配置新建网络。此处的vlan可随意设置,但需在第一步交换机配置的vlan范围内。
然后点击进入此网络建立Subnet。以下:
重复上述操做,建立足够本身使用的vlan网络。
在Project下Network下的Routers中点击Create Router建立路由,点击建立的router,进入详细信息,再点击Add Interface,选择刚刚建立的网络,重复添加接口,直到须要的vlan所有在此router中,这样就实现了须要的vlan之间相互通讯。
在Admin下的Networks中点击Create Network建立网络。与以前网络不一样的是此处type选为flat,physical network设置为external(4.2中主节点修改项),勾选external network项。而后建立子网,ip地址即为外部的IP地址(必须一致),网关设置为外部网络网关。然后点击上面建立的router的set gateway选择此网络便可。这样即可实现虚拟机访问外部网络。
根据本身的需求下载相应的操做系统镜像,也能够直接使用DevStack中自带的cirros。若是是ubuntu的话须要下载cloud版(此处有所有对应版本)。下载完后点击Project下Compute下的Images中的Create Image,选择下载的文件,注意Fomat选择QCOW2。
在Project下Compute下的Instacnces中点击Launch Instance,选择建立的镜像和建立的网络以及须要的配置大小,即可完成虚拟机建立。能够测试虚拟机之间是否可以正常通讯以及是否可以访问外网。
点击Project下Compute下的Access & Security下的Floating IPs中的Allocate IP to Project,选择建立的外部网络,获取一个浮动IP,然后将此IP绑定到须要经过外部访问的虚拟机上。即可实现外部网络访问虚拟机。
经过上述步骤建立完网络虚拟机以后有时会发现外部没法ping通或者ssh虚拟机或访问虚拟机http端口等问题,这是因为OpenStack的安全规则形成的,点击Project下Compute下的Access & Security下的security groups为default组加上ingress 和egress的all tcp rule、all ICMP rule、以及all udp rule。
以上是使用DevStack安装OpenStack及使用的完整步骤,整个机房除了刷墙、铺地板没有涉及,其余的基本都涉及到了。当你真的完全完全可以实操一遍,你会发现整个世界完全清晰了,顿时豁然开朗,一切事都再也不是事,更勿论再安装其余软件,都是洒洒水啦!OpenStack真的有如此魅力!