鉴于,一般OpenStack的开发和体验,都是使用Devstack的方式自动化部署。因此,这里基于自己的实践过程,总结出一份本月15日Release的Liberty完整安装过程。
与其他资料所不同的是,本次安装较详细的给出了安装后的相关网络配置,且基于CentOS平台(相对于Ubuntu系,CentOS系的安装资料挺少;事实上,二者在安装上有些网络区别),相信能给CentOS初学者带来更好的体验。
一、环境
环境:
- VMware Workstations中的CentOS 7 Desktop VM;
- 一张NAT网卡;
- 内存>=4G;
- VM的ip地址为10.0.0.9。
二、部署
1、关闭iptables防火墙和selinux;
Shell1 | # service iptables stop |
查看防火墙状态,显示防火墙已关闭:
Shell12 | # service iptables status#/usr/sbin/setenforce 0 ###立刻关闭 SELINUX |
2、安装git
Shell1 | yum -y install git |
3、准备Devstack
下载代码:
Shell12 | # cd /home# git clone https://git.openstack.org/openstack-dev/devstack --branch=stable/kilo #k版 |
或者
Shell1 | # git clone https://github.com/openstack-dev/devstack.git -b stable/liberty #L版 (可以体验L版) |
4、需要创建stack用户运行
Shell12 | # cd /home/devstack/tools/# ./create-stack-user.sh |
5、修改devstack目录权限,让stack用户可以运行
Shell12 | $ sudo chown -R stack:stack /home/devstack$ sudo chmod 777 /opt/stack –R |
6、切换到stack用户下
Shell12 | # su stack# cd /home/devstack |
7、进入devstack目录下,创建localrc文件,添加以下内容:
Shell123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | # MiscADMIN_PASSWORD=adminDATABASE_PASSWORD=$ADMIN_PASSWORDRABBIT_PASSWORD=$ADMIN_PASSWORDSERVICE_PASSWORD=$ADMIN_PASSWORDSERVICE_TOKEN=$ADMIN_PASSWORD # Target PathDEST=/opt/stack # Enable LoggingLOGFILE=$DEST/logs/stack.sh.logVERBOSE=TrueLOG_COLOR=TrueSCREEN_LOGDIR=$DEST/logs KEYSTONE_TOKEN_FORMAT=UUID # Novaenable_service n-novnc n-cauth # Neutrondisable_service n-netENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutronENABLED_SERVICES+=,q-lbaas,q-vpn,q-fwaas # Swift#enable_service s-proxy s-object s-container s-accounts#SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 # CinderVOLUME_GROUP="cinder-volumes"ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak # Ceilometer#enable_service ceilometer-acompute ceilometer-acentral ceilometer-anotification ceilometer-collector ceilometer-api#enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator # Heatenable_service heat h-api h-api-cfn h-api-cw h-engenable_service tempest # Troveenable_service trove tr-api tr-tmgr tr-cond # Saharaenable_service sahara HOST_IP=10.0.0.9FIXED_RANGE=10.10.0.0/24NETWORK_GATEWAY=10.10.0.1#FLOATING_RANGE=10.0.0.0/24#PUBLIC_NETWORK_GATEWAY=10.0.0.2#Q_FLOATING_ALLOCATION_POOL=start=10.0.0.100,end=10.0.0.150 |
注意:若需要安装其他服务,请参考其他资料。
8、运行Devstack
Shell1 | ./stack.sh |
注意:使用的是stack用户运行。
9、默认Devstack创建 admin和demo两个用户,通过设置环境变量可以进行操作。
admin 用户
1 | source openrc admin admin |
demo 用户
Shell1 | source openrc demo demo |
10、其他
安装失败时,可以再次执行安装命令。
Shell1 | $ ./unstack.sh && ./stack.sh |
安装后,相信多半不能用ip地址直接登录Dashboard。别急,请看下面的设置br-ex部分。
三、安装后的网络配置
1、网络及br-ex桥设置
1)OVS设置
由于在Devstack安装过程中,将br-ex的地址设置成了其他ip,导致出现很多问题,所以需要将原来的br-ex桥清除掉。
1 | $ sudo ovs-vsctl del-br be-ex |
将物理网卡eno16777736,即eth0作为br-ex的port,之后创建的虚拟机就可以通过eth0访问网络,能够登陆Dashboard了,Host也可以通过floating ip访问虚拟机。
这里,给出自己的网卡eno16777736和br-ex文件配置内容
Shell1 | # cat ifcfg-eno16777736 |
12345 | TYPE=OVSPortDEVICE=eno16777736DEVICETYPE=ovsOVS_BRIDGE=br-exONBOOT=yes |
1 | # cat ifcfg-br-ex //该文件需要自己创建 |
1234567 | TYPE=OVSBridgeDEVICE=br-exDEVICETYPE=ovsBOOTPROTO=staticIPADDR=10.0.0.9NETMASK=255.255.255.0GATEWAY=10.0.0.2 |
1 | $ sudo ovs-vsctl add-port br-ex eno16777736 ;systemctl restart network |
2)验证
注:因为一般VM是通过br-ex网桥的ip出外网的,所以,必须保证能ping通其ip。
- 关闭Selinux、iptables;
- 使用ip -a命令,查看br-ex的ip地址,且验证是否能够ping通;
- 使用ovs-vsctl show命令,查看网桥br-ex的设置情况。这里的eno16777736是我的实际物理网卡,即eth0,如下图所示:
3)ip -a查看br-ex ip地址
最后,使用这个ip地址登陆Dashboard!
2、一些建议
devstack安装trove组件时,会默认下载mysql.qcow2镜像。为了提高安装进度,可以事先自己下载,保存到该目录下/home/devstack/files/,下载地址:http://tarballs.openstack.org/trove/images/ubuntu/mysql.qcow2。
如果你安装和配置成功了,请立即对该虚拟机平台做个快照,方便以后做各种操作后出现问题时,利于恢复;并避免因宿主系统关机,导致的不必要问题。如果还是不幸发生了,请执行如下脚本:
Shell1 | $ cd /devstack ;sh rejoin-stack.sh |
四、小结
此次,Liberty版本的变化是较大的,基于Magnum的容器管理项目(对Kubernetes、Mesos和Docker Swarm提供支持);网络编排项目Astara;容器网络项目Kuryr;计费项目CloudKitty;以及汇集了许多流行的应用模板的社区服务目录(Community App Catalog)。这些新服务的加入证明,OpenStack已经在大数据分析、数据集群管理、资源编排等领域不断扩展与完善。
在具体操作上,同样改变了许多,比如命令和网络面板的使用上。总之,更多新的功能,等你体验!
作者简介:徐超:2015——至今,从事OpenStack相关工作。个人倾向于研究OpenStack、SDN和Docker。