通过devstack自动部署Openstack icehouse 版本

冷暖自知 提交于 2019-12-01 00:17:12

问题导读
1、脚本自动化部署原理是什么?
2、重启虚拟机后,登录 Dashboard 时出现错误,如何解决?
3、stack.sh 执行之 pip-1.4.1 安装失败,怎么办?




本篇主要阐述通过DeveStack 去部署Openstack(icehouse),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard  等 情况。如果只是 看看或者初期玩玩 OpenStack的话,使用 DevStack也是个不错的办法。 DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack 开发者, 单节点,小环境;这里采用的操作系统为Ubuntu14.04

1. 自动化部署原理 :

1.1自动执行安装脚本

将安装命令脚本化

1.2自动生成配置文件

生成正确的配置参数

1.3自动解决依赖关系

安装依赖的软件包

服务的安装顺序
 



2.Openstack 部署详解

2.1更新系统及安装git软件包

  1. $sudo apt-get update

  2. $sudo apt-get upgrade

  3. $sudo apt-get dist#upgrade

  4. $sudo apt-get install git

复制代码




2.2 devstack 下载

  1. $git branch -a   #显示本地分支

  2. $git checkout -b icehouse origin/stable/icehouse  #切换到指定icehouse分支或标签

  3. $git clone https://github.com/openstack-dev/devstack.git  #克隆devstack的Git代码仓库

  4. $cd ./devstack

复制代码



2.3 devstack 下的一些文件描述

  1. stack.sh #自动化部署的入口;判断是否存在localrc文件; 否,进入交互模式; 是,进入配置模式(如果需要输入输入stack.sh需要的参数,如:数据库的密码、Rabbit MQ的密码、Service TOKEN 等)

  2. localrc  #配置文件;传入stack.sh的参数;nova部署在哪个节点,用户名密码是什么

  3. openrc   #环境变量脚本;在执行openstack命令时要导入一些环境变量 如:export OS_USERNAME = admin

  4. unstack.sh #卸载脚本

  5. lib          #每个服务的自动化安装脚本;通常存放nova,swift等自动化安装脚本,手动安装时执行的所有命令;每一个openstack服务对应一个文件(以下对相关文件作了简要说明)

  6.   

  7.   apache (Web 服务)

  8.   Swift  (对象存储的组件)

  9.   Glance  (镜像管理)

  10.   Horizon (提供了一个模块化的webbased用户界面)

  11.   heat(应用的自动化部署AWS cloudformation)

  12.   ceilometer(监控和计费)

  13.   sahara(BigData-as-a-Service #BDaaS,将hadoop部署在openstack的虚拟机上)

  14.   ironic(PXE+IPMI,物理节点的自动化部署)

  15.   trove(Database-as-a-service,将数据库部署在openstack的虚拟机上)

  16.   tempest(openstack单元测试框架)

  17.   opendaylight(开源的sdn控制器)

  18.   ldap(轻量型目录访问协议,与keystone整合,实现多级用户的鉴权)

  19.   database、databases(postgresql/mysql,默认将选择mysql)

  20.   nova、nova_plugins  (可以说是一套虚拟化管理程序,还可以管理网络和存储;下面是支持的一些虚拟化管理程序)

  21.   functions-libvirt  hypervisor-baremetal  hypervisor-fake  hypervisor-ironic  hypervisor-libvirt  hypervisor-openvz  hypervisor-vsphere  hypervisor-xenserver

  22.   neutron、neutron_plugins、neutron_thirdparty(网络管理的组件,neutron未来将取代Nova相关网络相关内容)

  23.   cinder、cinder_plugins (存储管理的组件。Cinder存储管理主要是指虚拟机的存储管理)

复制代码




2.4  localrc配置文件详解

  1. ##########################Gloable configuration########################

  2. DATABASE_PASSWORD=redhat   #数据库的密码

  3. ADMIN_PASSWORD=redhat      #admin用户的密码

  4. SERVICE_PASSWORD=redhat    #每个service对应用户的密码

  5. SERVICE_TOKEN=redhat       #每个service的TOKEN

  6. RABBIT_PASSWORD=redhat     #Message MQ的密码


  7. # Reclone each time 

  8. #RECLONE=true 

  9.   

  10. # Python enviroments 

  11. #OFFLINE=true 

  12.   

  13. ## For Keystone 

  14. KEYSTONE_TOKEN_FORMAT=PKI 

  15.   

  16. ## For Swift 

  17. #SWIFT_REPLICAS=1 

  18. #SWIFT_HASH=011688b44136573e209e 

  19.   

  20. ##################openstack和devstack的日志文件的存放位置######################

  21. DEST=/home/stack 

  22. LOGFILE=$DEST/logs/stack.sh.log 

  23. VERBOSE=True 

  24. LOG_COLOR=True 

  25. SCREEN_LOGDIR=$DEST/logs 

  26.   

  27. # ################################服务配置##################################

  28. # Pre#requisite 

  29. ENABLED_SERVICES=rabbit,mysql,key 

  30.   

  31. #############################消息队列配置###################################

  32. ## If you want ZeroMQ instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre#requesite) 

  33. #ENABLED_SERVICES+=,-rabbit,-qpid,zeromq 

  34.   

  35. ## If you want Qpid instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre#requesite) 

  36. #ENABLED_SERVICES+=,-rabbit,-zeromq,qpid 


  37. ######################每个服务单独配置代码下载地址#########################

  38. # Horizon (Dashboard UI) - (always use the trunk) 

  39. ENABLED_SERVICES+=,horizon 

  40. #HORIZON_REPO=https://github.com/openstack/horizon 

  41. #HORIZON_BRANCH=master 


  42. ######################NOVA服务配置#######################################   

  43. # Nova - Compute Service 

  44. ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-novnc,n-cauth

  45. IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros#0.3.0#x86_64#disk.img" 

  46.   

  47. ## Nova Cells 

  48. ENABLED_SERVICES+=,n-cell 


  49. ###########################Glance服务配置###############################

  50. # Glance - Image Service 

  51. ENABLED_SERVICES+=,g-api,g-reg 

  52.   

  53. #####################swift服务配置##############################

  54. # Swift - Object Storage 

  55. #ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account 

  56.   

  57. #####################网络服务配置:负载均衡、VPN和防火墙服务#################


  58. # Neutron - Networking Service 

  59. # If Neutron is not declared the old good nova-network will be used 

  60. ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron  

  61. #VIF_PLUGGING_IS_FATAL=False

  62. #VIF_PLUGGING_TIMEOUT=10



  63. ## Neutron - Load Balancing 

  64. #ENABLED_SERVICES+=,q-lbaas 

  65.   

  66. ## Neutron - VPN as a Service 

  67. #ENABLED_SERVICES+=,q-vpn 

  68.   

  69. ## Neutron - Firewall as a Service 

  70. #ENABLED_SERVICES+=,q-fwaas 

  71.   

  72. # VXLAN tunnel configuration 

  73. Q_PLUGIN=ml2 

  74. Q_ML2_TENANT_NETWORK_TYPE=vxlan


  75. ####################cinder服务配置##############################

  76. # Cinder - Block Device Service 

  77. ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch 

  78.   

  79. ####################heat服务配置################################

  80. # Heat - Orchestration Service 

  81. #ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng 

  82. #IMAGE_URLS+=",http://fedorapeople.org/groups/heat/prebuilt-jeos-images/F17-x86_64-cfntools.qcow2" 


  83. ##################Ceilometer服务配置############################ 

  84. # Ceilometer - Metering Service (metering + alarming) 

  85. #CEILOMETER_BACKEND=mysql 

  86. #ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api 

  87. #ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval 


  88. ##############keystone和swift采用apache作为web前端配置###########  

  89. # Apache fronted for WSGI 

  90. APACHE_ENABLED_SERVICES+=keystone

  91. #,swift


  92. #GIT_BASE=http://review.thstack.com

复制代码




2.5 进行部署 (采用非交互模式)

  1. $ cp  localrc /home/junbj/devstack/ 

  2. $./stack.sh     等待安装部署即可;

复制代码




2.6  图形界面登录
访问: Http:// IP Address  即可
 


 



2.7  创建虚拟机通过镜像 cirros
 


 



3. 部署过程遇到的问题与解决方法

3.1 重新登录提示认证失败
 


重启虚拟机后,登录 Dashboard 时出现 “An error occurred authenticating. Please try again later” 的错误, 如上图 .

  1. $cd /devstack ; sh rejoin-stack.sh  (执行devstack目录下的rejoin-stack.sh脚本即可可以解决)

复制代码



3.2 pip 源连接失败,导致 pip 安装软件包失败

  1. $mkdir ~/.pip

  2. $vim ~/.pip/pip.conf

  3. -----------------pip.conf-------------------------------------

  4. [global]

  5.     index-url = http://pypi.douban.com/simple/

复制代码



3.3 /opt/stack 目录权限问题

  1. $sudo chmod 777 /opt/stack -R

复制代码



3.4 devstack 下载失败

  1. fatal: unable to access 'https://github.com/openstack-dev/devstack/': Could not resolve host: github.com

复制代码


检查物理机的 /etc/resov.conf 文件中是否有正确的 nameserver.

3.5 stack.sh 执行失败 1 : pip-1.4.1 安装失败

  1. pkg_resources.DistributionNotFound: pip==1.4.1

复制代码


通过 git log 查看 devstack 代码更新记录,恢复到之前的某个版本

3.6 stack.sh 执行失败 2 : pip-1.4.1 安装失败

  1. $git reset --hard d4fe50feb18133e39351af7becb5ff84c8d4f479

  2. --------------------------------------END----------------------------------------------

复制代码



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!