Openstack部署详解

一 自动化 VS 手动
二 自动化部署原理
三 devstack下载
devstack通过git来实现代码的版本管理
    注:ubuntu下git安装: sudo apt-get install git
代理问题(proxy):
    git一般通过两种协议实现传输:http(https)和ssh
    有些公司会通过代理服务器上网,代理服务器通常只会允许http协议

四 devstack源码结构
1 stack.sh ->自动化部署的入口 ->.exe文件
2 localrc ->配置文件 ->传入stack.sh的参数
    nova部署在哪个节点,用户名密码是啥
3 openrc ->环境变量脚本
    在执行openstack命令时要导入一些环境变量
    export OS_USERNAME = admin
4 unstack.sh ->卸载脚本
5 lib ->每个服务的自动化安装脚本
    nova,swift等自动化安装脚本
    手动安装时执行的所有命令
   每一个openstack服务对应一个文件
6 lib目录下的所有文件
database、databases
    postgresql/mysql
nova、nova_plugins
    functions-libvirt hypervisor-baremetal hypervisor-fake hypervisor-ironic hypervisor-libvirt hypervisor-openvz hypervisor-vsphere hypervisor-xenserver
7 neutron
neutron、neutron_plugins、neutron_thirdparty
8 cinder
cinder、cinder_plugins
9 其他自动化安装脚本
Swift
Glance
Horizon
apache
rpc_backend
10 比较陌生的自动化部署脚本
heat(应用的自动化部署,类似于产品AWS cloudformation)
ceilometer(监控和计费)
sahara(BigData-as-a-Service BDaaS,将hadoop部署在openstack的虚拟机上)
ironic(PXE+IPMI,物理节点的自动化部署)
trove(Database-as-a-service,将数据库部署在openstack的虚拟机上)
tempest(openstack单元测试框架)
opendaylight(开源的sdn控制器)
ldap(轻量型目录访问协议,与keystone整合,实现多级用户的鉴权)

五 devstack两种执行方式
1 devstack执行原理
stack.sh判断是否存在localrc文件
否,进入交互模式
是,进入配置模式
2 交互模式
输入stack.sh需要的参数
数据库的密码
Rabbit MQ的密码
Service TOKEN
3 配置模式,需要localrc模板
3.1 背景知识
默认数据库采用mysql
    DATABASE_TYPE=postgresql
每个服务对应一个用户
TOKEN概念
    字符串,可理解成为钥匙
    每次请求都得带着,否则,请求被拒绝
MQ:消息队列(Message Queue)
    Rabbit、qpid、zeromq
Screen
一种linux终端
启用服务的语法
    ENABLED_SERVICES=rabbit
    ENABLED_SERVICES+=rabbit
    DISABLE_SERVICE=swift
Keystone两种token
    UUID和PKI,认证方式不同
Git相关的概念
    Branch,分支
    Openstack的每一个版本都作为独立分支
    默认为主分支
3.2 localrc模板
# --------------------------------全局配置-----------------------------------
GIT_BASE=https://github.com ##从哪下载openstack个服务源码
DATABASE_PASSWORD=123456 ##数据库的密码
ADMIN_PASSWORD=123456 ##admin用户的密码
SERVICE_PASSWORD=123456 ##每个service对应用户的密码
SERVICE_TOKEN=123456 ##每个service的TOKEN
RABBIT_PASSWORD=123456 ##Message MQ的密码
# ---------openstack和devstack的日志文件的存放位置---------------
DEST=/home/stack
LOGFILE=$DEST/logs/stack.sh.log ##devstack的日志文件
VERBOSE=True##日志详细输出
LOG_COLOR=True
SCREEN_LOGDIR=$DEST/logs ##openstack的日志文件
# ---每次执行stack.sh是否重新下载openstack个服务的代码------------
RECLONE=true
# --------------------------------服务配置-----------------------------------
ENABLED_SERVICES=rabbit,mysql,key
# ---------------------------keystone的token格式-------------------------
KEYSTONE_TOKEN_FORMAT=PKI
# ----------------------------消息队列配置--------------------------------
#ENABLED_SERVICES+=,-rabbit,-qpid,zeromq
#ENABLED_SERVICES+=,-rabbit,-zeromq,qpid
# ---------------------每个服务单独配置代码下载地址---------------
ENABLED_SERVICES+=,horizon
#HORIZON_REPO=https://myweb/openstack/horizon
#HORIZON_BRANCH=icehouse
#----------------------Glance服务配置-------------------------------------
ENABLED_SERVICES+=,g-api,g-reg
# --------------------------------NOVA服务配置------------------------------------------------------------------------
ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-novnc,n-cauth
IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img";
ENABLED_SERVICES+=,n-cell
# ---------------------------swift服务配置--------------------------------------------------------------------------------
#ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
# ----------------------------cinder服务配置-------------------------------------------------------------------------------
ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch
# ----------------------------neutron服务配置----------------------------------------------------------------------------
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
#-----------------------------heat服务配置--------------------------------------------------------------------------------
#ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
#IMAGE_URLS+=",http://fedorapeople.org/groups/heat/prebuilt-jeos-images/F17-x86_64-cfntools.qcow2";
# --------------------------------Ceilometer服务配置------------------------------------------------------------------------
#CEILOMETER_BACKEND=mysql
#ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api
#ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval
#------------------------------keystone和swift采用apache作为web前端配置--------------------------------------------
# Apache fronted for WSGI
APACHE_ENABLED_SERVICES+=keystone
#,swift
#--------------------网络服务配置:负载均衡、VPN和防火墙服务------------------------------------------------------
ENABLED_SERVICES+=,q-lbaas
ENABLED_SERVICES+=,q-vpn
ENABLED_SERVICES+=,q-fwaas
# ----------------------------------------网络模式配置------------------------------------------------------------------------
#------------------------------LinuxBridge + VLAN模式-------------------------------------------------------------
Q_PLUGIN=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=1920:1930
PHYSICAL_NETWORK=default
# ---------------------------------Open VSwitch + VLAN模式------------------------------------------------------
#ENABLE_TENANT_VLANS=True
#TENANT_VLAN_RANGE=1920:1930
# ---------------------------------GRE tunnel configuration-----------------------------------------------------------
#Q_PLUGIN=ml2
#ENABLE_TENANT_TUNNELS=True
# -----------------------------------------VXLAN tunnel configuration--------------------------------------------
#Q_PLUGIN=ml2
#Q_ML2_TENANT_NETWORK_TYPE=vxlan
六 部署中可能遇到的问题
1 网络配置成vxlan时,创建虚拟机识别
问题描述和解决方法参见: http://blog.chinaunix.net/uid-20940095-id-4228399.html
2 国外pip源连接失败问题
手动下载失败的包,手动安装
sudo python setup.py install
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值