分享

怎样调试OpenStack

xioaxu790 发表于 2014-9-15 15:37:31 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 13501
问题导读
1、如何配置python源和网络地址?
2、DevStack安装和配置,感觉怎样?
3、如何在Eclipse下调试OpenStack?





OpenStack的从安装使用到开发是一件极富有挑战性的事情。其中,从源码调试和开发OpenStack是其中最为困难的部分。本文主要根据自己的开发经验,讲解怎样在OpenStack上搭建开发环境。

系统环境准备
操作系统
在OpenStack老的官网上提供了在mac下利用虚拟环境调试OpenStack的方法,本人经过实验,极其复杂,故不推荐在mac上直接使用,而推荐使用虚拟机的方法安装。对于开发者而言,推荐使用fedora xface版本进行开发,界面简单快速。当然使用xubantu也可以。不推荐使用ubuntu,应为Unity在虚拟机环境下运行效果不好。

为了省去之后的麻烦,注意将用户名直接设为 stack 。

安装系统完成后最好升级系统
  1. sudo yum update
  2. sudo yum upgrade
  3. sudo apt-get update
  4. sudo apt-get upgrade
复制代码



网络设置
OpenStack的网卡设置很重要,尽量使用传统的eth0命名网卡。在fedora下使用修改网卡名称。
  1. ifrename -i 原网卡名 -n eth0
复制代码


在ubuntu下通过配置udev来更改网卡名称,这方面教程很多。

网卡使用固定的IP配置

配置python源
由于国内使用pypi经常无法访问,所以使用豆瓣源加速python包的安装
  1. mkdir ~/.pip
  2. cat > ~/.pip/pip.conf << EOF
  3. [global]
  4. index-url = http://pypi.douban.com/simple
  5. EOF
复制代码



配置防火墙和selinux
对于开发环境而言,最好的办法,关了
  1. sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  2. sudo setenforce 0
  3. sudo service iptables stop
  4. sudo chkconfig iptables off
复制代码



安装软件包
安装git
  1. sudo yum install git
  2. sudo apt-get install git
复制代码


安装eclipse
  1. sudo yum install eclipse
  2. sudo apt-get install eclipse
复制代码

安装pydev,在eclipse中 帮助 中的 安装新软件 ,中加入 http://pydev.org/update 。 安装 Pydev 。


DevStack的安装和配置
从github上安装下载devstack,新版的github不需要创建stack账户
  1. cd
  2. git clone https://github.com/openstack-dev/devstack.git
复制代码


定制devstack,创建一个localrc文件,写入下面内容
  1. # 基本配置信息
  2. HOST_IP=[你的主机IP]
  3. DATABASE_PASSWORD=password
  4. ADMIN_PASSWORD=password
  5. SERVICE_PASSWORD=password
  6. SERVICE_TOKEN=password
  7. RABBIT_PASSWORD=password
  8. #国内用户最好使用github
  9. GIT_BASE=https://github.com
  10. ## vnc
  11. #enable_service n-spice
  12. #enable_service n-novnc
  13. #enable_service n-xvnc
  14. # Reclone each time
  15. #RECLONE=yes
  16. RECLONE=no
  17. ## For Keystone
  18. KEYSTONE_TOKEN_FORMAT=PKI
  19. ## For Swift
  20. #SWIFT_REPLICAS=1
  21. #SWIFT_HASH=011688b44136573e209e
  22. # Enable Logging
  23. LOGFILE=/opt/stack/logs/stack.sh.log
  24. VERBOSE=True
  25. LOG_COLOR=True
  26. SCREEN_LOGDIR=/opt/stack/logs
  27. # Pre-requisite
  28. ENABLED_SERVICES=rabbit,mysql,key
  29. ## If you want ZeroMQ instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre-requesite)
  30. #ENABLED_SERVICES+=,-rabbit,-qpid,zeromq
  31. ## If you want Qpid instead of RabbitMQ (don't forget to un-declare 'rabbit' from the pre-requesite)
  32. #ENABLED_SERVICES+=,-rabbit,-zeromq,qpid
  33. # Horizon (Dashboard UI) - (always use the trunk)
  34. ENABLED_SERVICES+=,horizon
  35. HORIZON_REPO=https://github.com/openstack/horizon
  36. HORIZON_BRANCH=master
  37. # Nova - Compute Service
  38. ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch
  39. ######vnc
  40. ENABLED_SERVICES+=,n-novnc,n-xvnc
  41. IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
  42. # Nova Network - If you don't want to use Neutron and need a simple network setup (old good stuff!)
  43. #ENABLED_SERVICES+=,n-net
  44. ## Nova Cells
  45. ENABLED_SERVICES+=,n-cell
  46. # Glance - Image Service
  47. ENABLED_SERVICES+=,g-api,g-reg
  48. # Swift - Object Storage
  49. #ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
  50. # Neutron - Networking Service
  51. # If Neutron is not declared the old good nova-network will be used
  52. ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
  53. ## Neutron - Load Balancing
  54. ENABLED_SERVICES+=,q-lbaas
  55. ## Neutron - VPN as a Service
  56. ENABLED_SERVICES+=,q-vpn
  57. ## Neutron - Firewall as a Service
  58. ENABLED_SERVICES+=,q-fwaas
  59. # VLAN configuration
  60. #Q_PLUGIN=ml2
  61. #ENABLE_TENANT_VLANS=True
  62. # GRE tunnel configuration
  63. Q_PLUGIN=ml2
  64. ENABLE_TENANT_TUNNELS=True
  65. # VXLAN tunnel configuration
  66. #Q_PLUGIN=ml2
  67. #Q_ML2_TENANT_NETWORK_TYPE=vxlan
  68. # Cinder - Block Device Service
  69. VOLUME_GROUP="cinder-volumes"
  70. ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak
  71. # Heat - Orchestration Service
  72. ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
  73. # Ceilometer - Metering Service (metering + alarming)
  74. ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api
  75. ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval
  76. # Apache fronted for WSGI
  77. #APACHE_ENABLED_SERVICES+=keystone,swift
  78. APACHE_ENABLED_SERVICES+=keystone
复制代码



配置环境变量,由于devstack可能不能最后创建环境变量文件
  1. cat >  admin_key << EOF
  2. export OS_USERNAME=admin
  3. export OS_TENANT_NAME=admin
  4. export OS_PASSWORD=password
  5. export OS_AUTH_URL=your ip
  6. EOF
复制代码


运行devstack,由于网络原因,往往一次不能完全成功,需要多运行几次
  1. cd devstack && ./stack.sh
复制代码


在安装完成后可以使用
  1. #停止服务
  2. ./unstack.sh
  3. #开启服务
  4. ./rejoin_stack.sh
复制代码



在Eclipse下调试OpenStack
运行脚本停止服务
  1. ./unstack.sh
复制代码


启动mysql和rabbitmq
  1. service rabbitmq-server start
  2. service mysqld start
复制代码


在Eclipse中选择工作空间为 /opt/stack 新建Python项目,项目名称和对应的项目名称一致,创建完成后会发现项目已经导入到eclipse中,并且显示git的分支为master。

将在 /usr/bin 中的对应的openstack程序导入到项目中,比如glance就导入glance- 的有关项目,也可以通过查看项目根目录下的 *setup.cfg 查看此项目对应的程序的名称。

对导入的运行项目在Eclipse中进行Debug。由于PDB不能和eventlet一起使用,使用后会导致线程切换出错,所以在每个项目中注释monkey_patch那一行。

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条