今天开始,研究OpenStack,开始IAAS层的探索!!
云:通过管理框架来灵活使用通用硬件设备的计算方式,可以说是拥有了资源“云”。
OpenStack:从一个更高的角度来说,你可以认为OpenStack之于数据中心,就像操作系统之于服务器,都带来了相同水平的运行效率。
租户:是资源的配额限制集合,被虚拟机用来在逻辑上与不同租户互相隔离。
以下使用Icehouse版本的OpenStack
https://www.manning.com/books/openstack-in-action
OpenStack是什么
OpenStack官方网站这样描述这个框架:创建私有云和公有云的开源软件;OpenStack软件是一个大规模云操作系统;
主要组件有:
通过 DevStack 来体验 OpenStack
DevStack是一个快速部署OpenStack的工具。DevStack可以让你与一个小规模(更大规模部署的代表)的OpenStack
交互。
准备工作:需要一台运行可支持的Linux发行版本的物理服务器或者虚拟服务器。
1. 搭建服务器:
最好是用一台全新安装Linux的服务器来进行DevStack的部署,本次实验建议使用Ubuntu 16.04(TLS),如果条件允许,建议使用物理硬件来部署,尽管在虚拟环境中“嵌套”运行OpenStack也是可行的,但运行在这个嵌套的OpenStack环境里的虚拟机会非常慢。
设置IP地址:
vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.8.100
netmask 255.255.255.0
gateway 192.168.8.2
dns-nameserver 119.29.29.29
关闭防火墙:sudo ufw disable
查看防火墙:sudo ufw status
安装SSH服务:
sudo apt-get install openssh-server
更改源:
sudo vim /etc/apt/sources.list
阿里源:
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
更新源:
sudo apt-get update
更改pip镜像源:
# 更改pip镜像源
echo "---> update pip mirrors ..."
mkdir ~/.pip
echo """
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
""" >> ~/.pip/pip.conf
2. 准备服务器环境
DevStack将会安装和配置整套OpenStack。部署OpenStack框架的过程称为Stacking。
现在应该通过普通用户加 sudo 权限操作,而不是通过 root 用户,在下面的例子中使用 sysop 作为有 sudo 特权的普通用户。更新源
sudo apt-get -y update
DevStack 不是通过 Linux 发行版提供的包管理系统,而是直接通过 OpenStack 在线软件仓库
获取 OpenStack 组件。Git,用来从 OpenStack 软件仓库获取源代码。
leo@master:~$ sudo apt-get install git
3. 准备 DevStack
下载最新的DevStack代码,如下:
leo@master:~$ sudo git clone http://git.trystack.cn/openstack-dev/devstack.git /opt/devstack/
下一步是为 OpenStack 设置正确的目录权限和创建一个新的服务账号(所有服务都在该账号
下运行),这一过程将会创建 stack 用户并设置所有 DevStack 文件从属于这个用户。
# 进入 devstack 目录
leo@master:~$ cd /opt/devstack
# 使 create-stack-user.sh工具可执行
leo@master:/opt/devstack$ sudo chmod u+x tools/create-stack-user.sh
# 创建 stack 用户
leo@master:/opt/devstack$ sudo tools/create-stack-user.sh
Creating a group called stack
Creating a user called stack
Giving stack user passwordless sudo privileges
# 使 stack 用户拥有目录中的所有文件
leo@master:/opt/devstack$ sudo chown -R stack:stack /opt/devstack/
目录已经设置好正确的权限,新用户也已经创建好了。下一步是切换到刚创建的 stack 账户,
创建 DevStack 的配置文件,然后就可以以这个配置文件 stack(部署)了。
4. 执行 DevStack
DevStack 被设计用来部署和测试 OpenStack 组件,因此有多种可行的配置方式。DevStack
是通过维护 local.conf 文件中的配置参数来进行控制的。现在必须在 devstack 目录下创建一个名为 local.conf 的配置文件。
1、切换到stack用户执行下面的操作:
leo@master:/opt/devstack$ sudo -i -u stack
stack@master:~$ cd /opt/devstack
stack@master:/opt/devstack$
2、使用 Vim 编辑、创建 local.conf
stack@master:/opt/devstack$ vim local.conf
[[local|localrc]]
ADMIN_PASSWORD=devstack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=172.181.141.11
# Define images to be automatically downloaded during the DevStack built process.
#DOWNLOAD_DEFAULT_IMAGES=False
#IMAGE_URLS=http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
# 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
#CINDER CONFIG
VOLUME_BACKING_FILE_SIZE=10240M
#GENERAL CONFIG
API_RATE_LIMIT=False
# Output
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
SCREEN_LOGDIR=/opt/stack/logs
执行安装命令:
./stack.sh
遇到的坑:
- pip版本问题
安装过程中会把pip降到pip 9.0.3办吧,而最新版本是10.0.0,后面因为版本问题报错,查看脚本发现在:
/opt/devstack/tools/cap-pip.txt 中,定义的pip办吧是pip!=8,<10修改为pip!=8,<11后,可以安装最新pip,排除错误。升级pip命令:pip install -U pip setuptools wheel pip安装问题
安装过程中遇到pip安装失败,可以手动安装,
例如:
sudo pip install cryptography===2.2.2
sudo pip install Babel===2.6.0
sudo pip install numpy===1.14.5
或者直接:
sudo pip install -r requirements.txtETCD错误
https://github.com/coreos/etcd/releases/download/v3.2.17/etcd-v3.2.17-linux-amd64.tar.gz
手动下载并安装ETCD版本为:etcd-v3.2.17-linux-amd64.tar.gz,放到/opt/devstack/files中,再次运行即可。版本错误
经过测试,很多组建的版本有错误,遇到版本错误可以自行修改文件/opt/stack/requirements/upper-constraints.txt- 自己下载源代码
git clone git://git.openstack.org/openstack/neutron.git /opt/stack/neutron --branch master
git clone git://git.openstack.org/openstack/nova.git /opt/stack/nova --branch master
git clone git://git.openstack.org/openstack/horizon.git /opt/stack/horizon --branch master
- 终极大法
遇到错误,手动安装依赖包,然后重新执行:
./unstack.sh
./clear.sh
./stack.sh
多次执行,必将成功!
成功后贴图:
=========================
DevStack Component Timing
(times are in seconds)
=========================
run_process 27
test_with_retry 4
apt-get-update 14
pip_install 580
osc 265
wait_for_service 30
dbsync 30
apt-get 61
-------------------------
Unaccounted time 1231
=========================
Total runtime 2242
This is your host IP address: 127.18.141.11
This is your host IPv6 address: ::1
Horizon is now available at http://127.18.141.11/dashboard
Keystone is serving at http://127.18.141.11/identity/
The default users are: admin and demo
The password: devstack
WARNING:
Using lib/neutron-legacy is deprecated, and it will be removed in the future
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: rocky
Change: ea2aff96ffa8ec95d029a20e052648cfe6de3a03 Merge "Ensure passwordless ssh with stack between nodes" 2018-06-09 05:28:07 +0000
OS Version: Ubuntu 16.04 xenial
5、测试devstack
测试包含两个测试套件:DevStack exercises 和 OpenStack Tempest,执行下面的命令进行测试:
./exercise.sh
https://blog.youkuaiyun.com/u011521019/article/details/51114681