宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述通过 Devstack 多节点安装 OpenStack相关的知识,希望能为你提供帮助。
前言本次通过在 VMware Workstation 上创建虚拟机完成实验部署
软件版本
OpenStack 版本:ussuri
宿主操作系统:Ubuntu 18.04.2 Desktop
VMware Workstation:15.5.2 build-15785246
一、部署规划
1.1 前置知识
OpenStack 是一个分布式系统,由若干节点(Node)组成
控制节点管理 OpenStack,其上运行的服务有 Keystone、Glance、Horizon 以及 Nova、Neutron 中和管理相关的组件;其上也运行支持 OpenStack 的服务,例如 SQL 数据库(通常是 mysql)、消息队列(通常是 RabbitMQ)和网络时间服务(NTP)。
网络节点其上运行 Neutron 为 OpenStack 提供 L2 和 L3 网络,包括虚拟机网络、DHCP、路由、NAT等。
存储节点提供块存储(Cinder)或对象存储(Swift)服务。
计算节点其上运行 Hypervisor(默认使用 KVM),同时运行 Neutron 服务的 Agent,为虚拟机提供网络支持。
1.2 节点规划
这几类节点是从功能上进行的逻辑划分,在实际部署时可以根据需求进行灵活配置,本次实验我们使用两个虚拟节点:
OpenStack-controller:控制节点+网络节点+存储节点+计算节点
openStack-compute:计算节点
文章图片
1.3 资源规划
资源配置参考如图,如果是在自己的 PC 机上创建虚拟机部署,资源可能无法满足,可以适当调整。
文章图片
1.4 网络规划
网络拓扑
文章图片
- Management Network:用于 OpenStack 内部管理,比如各个服务之间通信;
- VM(Tenant) Network:OpenStack 部署的虚拟机所使用的网络;
- External Network:外部网络,Neutron 通过 L3 服务让 VM 能够访问到 External Network。
- 网关:192.168.10.1
- 物理节点:192.168.10.11-192.168.10.99
- 浮动IP:192.168.10.128-192.168.10.254
在 VMware Workstation 上创建三个网络:VMnet0、VMnet1、VMnet8
文章图片
- VMnet0:作为 External Network
- VMnet1:作为 VM(Tenant) Network
- VMnet8:作为 Management Network
【通过 Devstack 多节点安装 OpenStack】根据物理资源需求创建 OpenStack-controller 和 OpenStack-compute 两台虚拟机(此处省略)
2.3 安装并配置操作系统
安装 Ubuntu 18.04.2 Desktop(此处省略),切换到 root 用户完成基本配置并配置 eth0 的 IP 地址和 DNS 地址
2.3.1 配置 IP 地址和 DNS 地址编辑网卡配置文件
vi /etc/network/interfaces
OpenStack-controller
auto eth0
iface eth0 inet static
address 192.168.10.11
netmask 255.255.255.0
gateway 192.168.10.1
OpenStack-compute
auto eth0
iface eth0 inet static
address 192.168.10.21
netmask 255.255.255.0
gateway 192.168.10.1
将 DNS 地址写入配置文件
root@localhost:~# echo "DNS=114.114.114.114" >
>
/etc/systemd/resolved.conf
2.3.2 修改主机名OpenStack-controller
将主机名写入 hostname 文件
root@localhost:~# echo "controller01" >
/etc/hostname
编辑 hosts 文件
vi /etc/hosts
,末尾加入如下配置root@localhost:~# echo "192.168.10.11 controller01" >
>
/etc/hosts
root@localhost:~# echo "192.168.10.21 compute01" >
>
/etc/hosts
OpenStack-compute
将主机名写入 hostname 文件
root@localhost:~# echo "compute01" >
/etc/hostname
编辑 hosts 文件
vi /etc/hosts
,末尾加入如下配置root@localhost:~# echo "192.168.10.11 controller01" >
>
/etc/hosts
root@localhost:~# echo "192.168.10.21 compute01" >
>
/etc/hosts
2.3.3 重启两台虚拟机也可以只重启相关的网络服务
root@localhost:~# reboot
2.3.4 修改软件源2.3.4 到 2.3.8 步骤,OpenStack-controller 和 OpenStack-compute 节点都需要配置,此处仅以 OpenStack-controller 节点为例配置
备份配置文件
root@controller01:~# cp -a /etc/apt/sources.list{,.bak}
编辑 sources.list 文件
vi /etc/apt/sources.list
,将原来的源地址,替换成阿里的源地址(https://developer.aliyun.com/mirror/ubuntu)deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
更新软件索引并更新软件
root@controller01:~# apt-get update
root@controller01:~# apt-get upgrade
2.3.5 安装基本软件和服务
root@controller01:~# apt-get install -y openssh-server vim net-tools bash-completion lrzsz unzip git wget ntpdate
2.3.6 配置 ssh 服务编辑配置文件,允许 root 用户使用密码 ssh 登陆
root@controller01:~# echo "PermitRootLogin yes" >
>
/etc/ssh/sshd_config
root@controller01:~# echo "PasswordAuthentication yes" >
>
/etc/ssh/sshd_config
重启 ssh 服务并设置开机自启动
root@controller01:~# systemctl restart sshd.service
root@controller01:~# systemctl enable ssh.service
2.3.7 设定时区
root@controller01:~# dpkg-reconfigure tzdata
选择
Asia
-->
Shanghai
-->
OK
root@controller01:~# ntpdate cn.pool.ntp.org//与网络服务器同步时间
root@controller01:~# date//查看时间是否同步
2.3.8 更换 pip 源
root@controller01:~# mkdir .pip
root@controller01:~# vim .pip/pip.conf
写入如下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
2.4 部署 Devstack
2.4.1 使用 git 下载 Devstack下载的为 ussuri 版本
root@controller01:~# git clone https://github.com/openstack/devstack.git -b stable/ussuri
2.4.2 创建 stack 用户
root@controller01:~# devstack/tools/create-stack-user.sh
或
root@controller01:~# useradd -s /bin/bash -d /opt/stack -m stack
root@controller01:~# echo "stack ALL=(ALL) NOPASSWD: ALL" >
>
/etc/sudoers
2.4.3 将 Devstack 复制到 /ope/stack 目录
root@controller01:~# mv devstack /opt/stack
2.4.4 设置权限
root@controller01:~# chown -R stack:stack /opt/stack/devstack
root@controller01:~# chmod -R 777 /opt/stack/devstack
2.4.5 切换到 stack 用户
root@controller01:~# su - stack
2.4.6 以 stack 用户身份更换 pip 源
stack@controller01:~$ sudo mkdir .pip
stack@controller01:~$ sudo vim .pip/pip.conf
写入如下内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
2.4.7 配置 OpenStack-controller进入到 devstack 目录
cd /opt/stack/devstack
,创建 local.conf 文件 vim local.conf
配置如下内容[[local|localrc]]
# 根据实际情况配置主机 IP
HOST_IP=192.168.10.11
# 根据实际情况内网 IP
FIXED_RANGE=10.1.1.0/24
# 设置浮动 IP
FLOATING_RANGE=192.168.10.128/25
LOGFILE=/opt/stack/logs/stack.sh.log
ADMIN_PASSWORD=labstack
DATABASE_PASSWORD=supersecret
RABBIT_PASSWORD=supersecret
SERVICE_PASSWORD=supersecret
多节点配置中,一般保留私网地址前 10 个,创建 local.sh 文件
vim local.sh
,使其在 stack.sh 运行后运行for i in `seq 2 10`;
do /opt/stack/nova/bin/nova-manage fixed reserve 10.1.1.$i;
done
2.4.8 启动安装 OpenStack-controller
stack@controller01:~$ ./stack.sh
2.4.9 配置 OpenStack-compute进入到 devstack 目录
cd /opt/stack/devstack
,创建 local.conf 文件 vim local.conf
配置如下内容[[local|localrc]]
# 根据实际情况配置主机 IP
HOST_IP=192.168.10.21
# 根据实际情况内网 IP
FIXED_RANGE=10.1.1.0/24
# 设置浮动 IP
FLOATING_RANGE=192.168.10.128/25
LOGFILE=/opt/stack/logs/stack.sh.log
ADMIN_PASSWORD=labstack
DATABASE_PASSWORD=supersecret
RABBIT_PASSWORD=supersecret
SERVICE_PASSWORD=supersecret
DATABASE_TYPE=mysql
# 根据实际情况填写控制节点 IP
SERVICE_HOST=192.168.10.11
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
ENABLED_SERVICES=n-cpu,q-agt,c-vol,placement-client
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_lite.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
2.4.10 启动安装 OpenStack-compute
stack@compute01:~$ ./stack.sh
2.4.11 后续步骤从 Ocata 版本开始,Nova 需要部署一个 Cells v2。所以必须先将计算节点服务映射到单元 cell 然后才能使用。在每个计算节点部署后,轮询运行
nova service-list --binary nova-compute
验证计算节点是否出现在输出中,一旦显示计算节点服务,马上在控制节点运行脚本./tools/discover_hosts.sh
将计算节点映射到 cell。三、注意事项 3.1 git 软件包较慢问题
OpenStack 等相关软件包代码托管在 github.com 上,由于国内网络问题,下载会比较慢,如果出现这个问题,可以先将相关软件包下载下来。
3.1.1 下载 etcd,cirros切换到 files 目录
cd /opt/stack/devstack/files
,运行以下命令,下载软件包。可以使用其他方式下载后,放入到opt/stack/devstack/files
目录。root@controller01:~# wget -c https://github.com/coreos/etcd/releases/download/v3.3.12/etcd-v3.3.12-linux-amd64.tar.gz
root@controller01:~# wget -c http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
root@controller01:~# wget -c https://github.com/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.10-linux-amd64.tar.gz
root@controller01:~# wget -c https://github.com/coreos/etcd/releases/download/v3.1.7/etcd-v3.1.7-linux-amd64.tar.gz
root@controller01:~# wget -c https://bootstrap.pypa.io/get-pip.py
3.1.2 下载 OpenStack 组件使用 root 用户下载 OpenStack 组件,包括 horizon、glance、noVNC、swift、neutron、placement、tempest、cinder、keystone、nova、requirements 等。
root@controller01:~# git clone https://github.com/openstack/horizon.git -b stable/ussuri /home/stack/ussuri/horizon
root@controller01:~# git clone https://github.com/openstack/glance.git -b stable/ussuri /home/stack/ussuri/glance
root@controller01:~# git clone https://github.com/openstack/swift.git -b stable/ussuri /home/stack/ussuri/swift
root@controller01:~# git clone https://github.com/openstack/neutron.git -b stable/ussuri /home/stack/ussuri/neutron
root@controller01:~# git clone https://github.com/openstack/placement.git -b stable/ussuri /home/stack/ussuri/placement
root@controller01:~# git clone https://github.com/openstack/tempest.git -b /home/stack/ussuri/temptest
root@controller01:~# git clone https://github.com/openstack/cinder.git -b stable/ussuri /home/stack/ussuri/cinder
root@controller01:~# git clone https://github.com/openstack/keystone.git -b stable/ussuri /home/stack/ussuri/keystone
root@controller01:~# git clone https://github.com/openstack/nova.git -b stable/ussuri /home/stack/ussuri/nova
root@controller01:~# git clone https://github.com/openstack/requirements.git -b stable/ussuri /home//stack/ussuri/requirements
root@controller01:~# git clone https://github.com/novnc/noVNC.git -b stable/v0.6 /home/stack/ussuri/noVNC
3.1.3 将下载的软件包放入安装目录
root@controller01:~# cp -f/home/stack/ussri /opt/stack
更改权限
root@controller01:~# chown -R stack:stack /opt/stack
root@controller01:~# sudo chmod -R 777 /opt/stack
3.2 其他问题
< !--后续慢慢补充--->
四、总结整个安装流程下载还比较流畅,主要是软件包需要从 github.com 上下载,网络条件不好,速度很慢。
推荐阅读
- Linux引导过程与服务控制(完)
- EasyDSS定制项目中ETCD服务挂掉,如何设置定时重启()
- linux中*.cpio.gz文件解压方式
- #IT人的升职加薪tips# 选择大于努力()
- linux之抓包神器tcpdump
- 为什么都说centos比ubuntu好用呢()
- Linux——引导过程与服务控制
- 如何设置IPv4和IPv6报文的DSCP值——网络测试仪实操
- 《MySQL 性能优化》之 InnoDB 存储引擎