zoukankan      html  css  js  c++  java
  • Devstack单节点环境实战配置

    JmilkFan:minxihou的技术博文方向是 算法&Openstack自动化 ,写得很好,值得推荐。 : )

    目录

    本实验是在VMware12下建立虚机的一个测试环境。

    1 前期准备工作

    真机环境win10
    Linux版本 centos-everything-7.0
    VMware版本 VMwareworkstations12
    虚机配置如下:
    8G内存
    2核cpu(开启虚拟化)
    网络配置为桥接模式
    /boot 500M(一定要分大点不然之后会遇到问题)
    swap分区4G
    其余的空间全部分给/分区

    配置yum源,你可以保持装机自带的centos自带官方yum源,或者使用国内的给的镜像,本次试验中用的国外镜像并且使用fastestmirror,如果有需求的朋友们可以下载repo源自动构造本地yum源方法。
    http://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-mitaka/
    http://mirrors.163.com/centos/7/cloud/x86_64/openstack-mitaka/

    安装fastestmirror插件
    yum install yum-plugin-fastestmirror -y
    rpm -qa | fastestmirror
    vim /etc/yum/pluginconf.d/fastestmirror.conf
    配置文件中的hostfilepath字段,用于定义yum源的配置文件,我们可以将所知道的yum源写入这个txt文件。
    这里写图片描述
    运行yum check-update检查是否配置生效
    这里写图片描述
    通常情况下,使用fastestmirror插件的默认设定即可满足使用要求。但在网络的某些特殊情况下,可能fastestmirror插件的判断不准确。这时,我们可以修改其ping响应值保存表:
    vim /var/cache/yum/x86_64/7/timedhosts.txt

    如果yum版本高的情况下这些工作都是由yum配置好的,我们只需要检查一下即可。

    2 安装Git

    yum install -y git
    yum update 升级你现有系统,尽量避免各种包不兼容问题。(现在先别重启)

    3 配置系统防火墙

    3 关闭selinux
    vim /etc/selinux.config
    SELINUX=disabled

    关闭其他防火墙只保留iptables
    systemctl mask ebtables
    systemctl mask firewalld
    systemctl mask ip6tables
    systemctl enable iptables
    至此重启机器让update的包应用。

    如果在update升级之后发现boot分区空间不足,例如”XXX more space needed on the /boot filesystem”,需要对boot分区做扩容。
    先把旧的boot分区进行备份,例如我想把它备份到/tmp/boot文件夹中
    mkdir /tmp/boot
    cp -r /boot/* /tmp/boot
    umount /boot

    然后对现有分区进行扩容或者新建分区,在笔者的实验环境中/boot分区只分了200M,在update的时候没有报错但是重启之后/boot分区就满了文件系统没有空余的分区,这个时候我只能在新加了一块500M的虚拟硬盘进去进行新分区了。这个时候需要先在分区表里面看一眼原来的分区是什么格式的,最好分成一样格式的。
    vim /etc/fstab
    这里写图片描述
    这里我的虚机/boot分区是ext4所以我新划分的分区需要格式化成ext4格式
    fdisk -l
    这里我能看到我新划出来的/dev/sdb磁盘
    这里写图片描述
    fdisk /dev/sdb
    partprobe
    mkfs.ext4 /dev/sdb1
    blkid
    将拿到的UUID重新写入到/etc/fstab
    此时重新挂载boot分区将/tmp/boot的文件拷贝到/boot分区即可。

    4 准备Devstack

    mkdir -p /var/download/devstack
    cd /var/download/devstack
    git clone https://github.com/openstack-dev/devstack.git -b stable/mitaka
    可以在github官网上看到这个branche,我们做M版的自动化部署当然分支选M版的。
    这里写图片描述

    现在Devstack不能通过root身份来运行stack.sh文件了,需要创建stack用户,以stack用户的身份来运行stack.sh脚本。

    cd /var/download/devstack/tools
    ./create-stac-user.sh
    5.修改devstack目录权限,让stack用户可以运行
    chown -R stack:stack /var/download/devstack
    chmod 777 /dev/pts/0 (第一个用户登录,console的设备文件为/dev/pts/0,第二个为/dev/pts/1,以此类推。/dev/pts是远程登录(telnet,ssh等)后创建的控制台设备文件所在的目录)
    chmod 777 /opt/stack -R
    (这个是自动化部署openstack的时候的默认安装路径,默认安装路径可以在local.conf文件中修改,如果修改了就需要在这里重新设置相对应的文件目录路径。)

    *虚机环境下,请务必在此设置快照,方便回滚。

    #5配置local.conf文件
    早在2013年的时候localrc文件就被local.conf文件取代了。现在localrc文件仍然可用但是不提倡使用了。
    在devstack文件路径下创建local.conf文件。这里给出两个简单配置。

    [[local|localrc]]# 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
    
    #OFFLINE=True
    RECLONE=True
    
    # Define images to be automatically downloaded during the DevStack built process.
    DOWNLOAD_DEFAULT_IMAGES=False
    IMAGE_URLS="http://images.trystack.cn/cirros/cirros-0.3.4-x86_64-disk.img"
    
    HOST_IP=192.168.1.6
    
    
    # Credentials
    DATABASE_PASSWORD=pass
    ADMIN_PASSWORD=pass
    SERVICE_PASSWORD=pass
    SERVICE_TOKEN=pass
    RABBIT_PASSWORD=pass
    
    HORIZON_BRANCH=stable/mitaka
    KEYSTONE_BRANCH=stable/mitaka
    NOVA_BRANCH=stable/mitaka
    NEUTRON_BRANCH=stable/mitaka
    GLANCE_BRANCH=stable/mitaka
    CINDER_BRANCH=stable/mitaka
    
    
    #keystone
    KEYSTONE_TOKEN_FORMAT=UUID
    
    ##Heat
    HEAT_BRANCH=stable/mitaka
    enable_service h-eng h-api h-api-cfn h-api-cw
    
    
    ## Swift
    SWIFT_BRANCH=stable/mitaka
    ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
    SWIFT_REPLICAS=1
    SWIFT_HASH=011688b44136573e209e
    
    
    # Enabling Neutron (network) Service
    disable_service n-net
    enable_service q-svc
    enable_service q-agt
    enable_service q-dhcp
    enable_service q-l3
    enable_service q-meta
    enable_service q-metering
    enable_service neutron
    
    ## Neutron options
    Q_USE_SECGROUP=True
    FLOATING_RANGE="192.168.1.0/24"
    FIXED_RANGE="10.0.0.0/24"
    Q_FLOATING_ALLOCATION_POOL=start=192.168.1.10,end=192.168.1.20
    PUBLIC_NETWORK_GATEWAY="192.168.1.1"
    Q_L3_ENABLED=True
    PUBLIC_INTERFACE=eth0
    Q_USE_PROVIDERNET_FOR_PUBLIC=True
    OVS_PHYSICAL_BRIDGE=br-ex
    PUBLIC_BRIDGE=br-ex
    OVS_BRIDGE_MAPPINGS=public:br-ex
    
    # #VLAN configuration.
    Q_PLUGIN=ml2
    ENABLE_TENANT_VLANS=True
    
    # Logging
    LOGFILE=/opt/stack/logs/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=/opt/stack/logs

    以下配置文件出于测试阶段,部署在我笔记本上的时候还是有些问题。

    [[local|localrc]]# 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
    
    #Define branches
    HORIZON_BRANCH=stable/mitaka
    KEYSTONE_BRANCH=stable/mitaka
    NOVA_BRANCH=stable/mitaka
    NEUTRON_BRANCH=stable/mitaka
    GLANCE_BRANCH=stable/mitaka
    CINDER_BRANCH=stable/mitaka
    CEILOMETER_BRANCH=stable/mitaka
    SWIFT_BRANCH=stable/mitaka
    #OFFLINE=True
    RECLONE=True
    
    #Directory
    DEST=/var/openstack
    
    #Define target server IP address
    HOST_IP=192.168.1.6
    
    # Define images to be automatically downloaded during the DevStack built process.
    DOWNLOAD_DEFAULT_IMAGES=False
    IMAGE_URLS="http://foo.bar.com/image.qcow,"
    IMAGE_URLS+="http://foo.bar.com/image2.qcow"
    IMAGE_URLS+="http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso"
    
    # Credentials
    DATABASE_PASSWORD=pass
    ADMIN_PASSWORD=pass
    SERVICE_PASSWORD=pass
    SERVICE_TOKEN=pass
    RABBIT_PASSWORD=pass
    
    # Logging
    LOGFILE=$DEST/logs/stack.sh.log
    LOGDAYS=1
    LOGDIR=$DEST/logs
    SYSLOG=True
    SYSLOG_HOST=$HOST_IP
    SYSLOG_PORT=516
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=/opt/stack/logs
    
    #Python option
    USE_VENV=True
    PIP_UPGRADE=True
    PROJECT_VENV["glance"]=${GLANCE_DIR}.VENV
    PROJECT_VENV["nova"]=${NOVA_DIR}.VENV
    PROJECT_VENV["keystone"]=${KEYSTONE_DIR}.VENV
    PROJECT_VENV["neutron"]=${NEUTRON_DIR}.VENV
    PROJECT_VENV["cinder"]=${CINDER_DIR}.VENV
    PROJECT_VENV["swift"]=${SWIFT_DIR}.VENV
    PROJECT_VENV["glance"]=${GLANCE_DIR}.VENV
    PROJECT_VENV["heat"]=${HEAT_DIR}.VENV
    ADDITIONAL_VENV_PACKAGES="python-foo,python-bar"
    
    #Define default instance standard
    DEFAULT_INSTANCE_TYPE=m1.tiny
    
    #keystone
    KEYSTONE_TOKEN_FORMAT=UUID
    KEYSTONE_USE_MOD_WSGI="True"
    ENABLE_IDENTITY_V2=False
    
    ##vnc
    ENABLED_SERVICES+=,n-spice,n-novnc,n-xvnc
    
    ##Glance
    ENABLED_SERVICES+=,g-api.g-reg
    
    ##Heat
    HEAT_BRANCH=stable/mitaka
    enable_service h-eng h-api h-api-cfn h-api-cw h-eng
    Heat_USE_MOD_WSGI="True"
    
    
    ## Swift
    SWIFT_BRANCH=stable/mitaka
    ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
    SWIFT_REPLICAS=1
    SWIFT_HASH=011688b44136573e209e
    SWIFT_USE_MOD_WSGI="True"
    
    
    # Enabling Neutron (network) Service
    disable_service n-net ##Do not use nova network
    enable_service q-svc
    enable_service q-agt
    enable_service q-dhcp
    enable_service q-l3
    enable_service q-meta
    enable_service q-metering
    enable_service neutron
    
    
    
    ## Neutron options
    Q_USE_SECGROUP=True
    FLOATING_RANGE="192.168.1.0/24"
    FIXED_RANGE="10.0.0.0/24"
    Q_FLOATING_ALLOCATION_POOL=start=192.168.1.10,end=192.168.1.20
    PUBLIC_NETWORK_GATEWAY="192.168.1.1"
    Q_L3_ENABLED=True
    PUBLIC_INTERFACE=eth0
    Q_USE_PROVIDERNET_FOR_PUBLIC=True
    OVS_PHYSICAL_BRIDGE=br-ex
    PUBLIC_BRIDGE=br-ex
    OVS_BRIDGE_MAPPINGS=public:br-ex
    
    # #VLAN configuration.
    Q_PLUGIN=ml2
    ENABLE_TENANT_VLANS=True
    
    ##Cinder
    ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak
    CINDER_USE_MOD_WSGI="True"
    VOLUME_GROUP="stack-volumes"
    VOLUME_NAME_PREFIX="volume-"
    VOLUME_BACKING_FILE_SIZE=10250M
    
    ##Ceilometer
    ENABLED_SERVICES+=,ceilometer-acomputer,ceilometer-acentral,ceilometer-collector,ceilometer-api
    ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval
    ENABLED_SERVICES+=,trove,tr-api,tr-tmgr,tc-cond
    
    #Apache
    APACHE_ENABLED_SERVICES+=,keystone

    6 后话

    如果在一开始配置文件中没有注明各项密码的话,/stack.sh会交互式让你输入密码。而且密码最好写在配置文件靠前的位置,我尝试写在靠后的位置还是会一样提示让我输入密码。
    ENTER A PASSWORD TO USE FOR THE DATABASE.
    This value will be written to /var/download/devstack/.localrc.password file so you don’t have to enter it
    again. Use only alphanumeric characters.
    If you leave this blank, a random default value will be used.
    Enter a password now:
    提示输入rabbit密码:

    ENTER A PASSWORD TO USE FOR RABBIT.

    This value will be written to /var/download/devstack/.localrc.password file so you don’t have to enter it
    again. Use only alphanumeric characters.
    If you leave this blank, a random default value will be used.
    Enter a password now:

    提示输入服务密码:

    ENTER A SERVICE_PASSWORD TO USE FOR THE SERVICE AUTHENTICATION.

    This value will be written to /var/download/devstack/.localrc.password file so you don’t have to enter it
    again. Use only alphanumeric characters.
    If you leave this blank, a random default value will be used.
    Enter a password now:
    提示输入keystone和horizon的密码:

    ENTER A PASSWORD TO USE FOR HORIZON AND KEYSTONE (20 CHARS OR LESS).

    This value will be written to /var/download/devstack/.localrc.password file so you don’t have to enter it
    again. Use only alphanumeric characters.
    If you leave this blank, a random default value will be used.
    Enter a password now:

    总之配置的时候姿势不会会遇到各种和Python有关的问题。而且加入你第一次配置好了一次,当你用clean.sh脚本清除后再用不同的配置项配置的时候也会出现问题。(可能以前的没有删除干净?)
    例如:
    这里写图片描述
    这个就是我在用第一个配置文件部署成功之后使用第二个部署文件配置报错。实际上我的pip是安装的。针对这种我还原快照到初始位置再配置就没发现过这样的问题了。
    最后来个部署成功截图:
    这里写图片描述

    相关阅读:

  • 相关阅读:
    【React Native】某个页面禁用物理返回键
    【React Native】DeviceEventEmitter监听通知及带参数传值
    转载【React Native代码】手写验证码倒计时组件
    【React Native】 中设置 APP 名称、应用图标、为安卓添加启动图
    【React Native错误集】* What went wrong: Execution failed for task ':app:installDebug'.
    【React Native错误集】Import fails with "Failed to execute 'ImportScripts' on 'WorkerGlobalScope'"
    【React Native错误集】Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of app
    「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)
    【React Native】Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml
    坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310791.html
Copyright © 2011-2022 走看看