持续更新。。。
参考链接
https://docs.openstack.org/stein/
选择R版
https://docs.openstack.org/rocky/index.html
https://docs.openstack.org/rocky/deploy/
https://docs.openstack.org/project-deploy-guide/kolla-ansible/rocky/
快速开始
参考链接
https://docs.openstack.org/project-deploy-guide/kolla-ansible/rocky/quickstart.html
主机环境
- 系统:VMware Workstation ,Ubuntu server 16.04.2 LTS 64位
- 网口:2个,1个桥接,1个NAT
- 内存:2G
- 硬盘:64G
另,所有操作过程是在root账户下直接进行的,目录亦是/root/
安装依赖项
升级pip
1
2
3apt-get update
apt-get install python-pip
pip install -U pip安装依赖包
1
apt-get install python-dev libffi-dev gcc libssl-dev python-selinux python-setuptools git vim -y
安装Ansible
1
apt-get install ansible
(可选)使用pip安装或升级Ansible到最新版本:
1
pip install -U ansible
(可选)将以下选项添加到ansible配置文件中 /etc/ansible/ansible.cfg:
1
2
3
4[defaults]
host_key_checking=False
pipelining=True
forks=100
安装Kolla-ansible
安装Kolla-ansible for deployment or evaluation
使用安装kolla-ansible及其依赖项pip。
1
pip install kolla-ansible
国内加速
1
pip install -i https://mirrors.aliyun.com/pypi/simple/ kolla-ansible
排错记录
1
pip install -U --ignore-installed PyYAML
复制globals.yml和passwords.yml到/etc/kolla目录。
1
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/
将文件复制all-in-one和multinode库文件到当前目录。
本次记录当前路径为/root/1
cp /usr/local/share/kolla-ansible/ansible/inventory/* .
安装 Kolla for development
从GitHub克隆kolla 和 kolla-ansible 仓库
1
2git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible安装kolla 和 kolla-ansible依赖
1
2pip install -r kolla/requirements.txt
pip install -r kolla-ansible/requirements.txt将配置文件复制到/etc/kolla目录下
kolla-ansible在etc/kolla目录下保存配置文件globals.yml 和 passwords.yml。1
2mkdir -p /etc/kolla
cp -r kolla-ansible/etc/kolla/* /etc/kolla复制库文件到当前目录
kolla-ansible在ansible/inventory目录下保存库文件all-in-one 和 multinode1
cp kolla-ansible/ansible/inventory/* .
准备初始配置
库文件
下一步是准备我们的inventory库存文件。Inventory是一个ansible文件,我们在其中指定节点角色和访问凭据。
Kolla-Ansible配备all-in-one和multinode例子 inventory库文件,它们之间的区别在于:
- 前者all-in-one已准备好在localhost上部署单节点OpenStack。
- multinode例子,如果您需要使用单独的主机或多个节点,请编辑multinode库文件,multinode例子如下:
- 编辑multinode文件的第一部分,包含multinode使用环境的连接信息。
配置对应节点的服务的主机名称。
1 | [control] |
另,To learn more about inventory files, 打开 Ansible documentation.
检查库文件配置是否正确
1
ansible -i multinode all -m ping
注意:
Ubuntu可能没有预先安装python。这将导致ping模块出错。
要使用ansible快速安装python,您可以运行1
ansible -i multinode all -m raw -a "apt-get -y install python-dev"
Kolla 密码
部署过程中使用到的密码存储在/etc/kolla/passwords.yml文件中。
此文件中的所有密码都是空白的,必须手动填写或运行随机密码生成器:
对于for deployment or evaluation,请运行命令
1
kolla-genpwd
对于development,请运行
1
2cd kolla-ansible/tools
./generate_passwords.py
Kolla globals.yml
globals.yml是Kolla-Ansible的主要配置文件。部署Kolla-Ansible需要一些选项,具体可打开globals.yml文件查看,下面会对:
- 镜像:Image options
- 网络:Networking
- 启用其他服务:Enable additional services
进行简介。
Image options
必须指定用于部署使用的镜像,这里先使用DockerHub提供预先构建的镜像。
要了解有关的构建机制,参阅镜像构建文档Building Container Images。
Kolla提供了几种容器中Linux发行版的选择:Centos、Ubuntu、Oraclelinux、Debian、RHEL。
对于新手的话,建议使用Centos或者Ubuntu 16.04.即:1
kolla_base_distro: "centos"
下一步关于安装类型“type”需要配置,可选项有
binary:using repositories like apt or yum
source:using raw source archives, git repositories or local source directory
注意:这仅影响OpenStack服务。像Ceph这样的基础设施服务总是“二进制”的。
注意:且经证明,源代码构建比二进制代码更可靠。1
kolla_install_type: "source"
要使用DockerHub镜像,必须覆盖修改镜像标签。镜像都标有发行版本名称。例如使用稳定的Rocky镜像,就设置为下面的。
1
openstack_release: "rocky"
使用与kolla-ansible相同版本的镜像非常重要。这意味着如果pip用于安装kolla-ansible,这意味着它是最新的稳定版本,所以openstack_release应该设置为rocky。如果git与master分支一起使用,DockerHub也提供了master分支的每日构建(标记为master):
1
openstack_release: "master"
Networking
Kolla-Ansible需要设置一些网络选项。我们需要设置OpenStack使用的网络接口.(1)设置的第一个接口是network_interface。这是多个管理类型网络的默认接口.
1
network_interface: "eth0"
(2)所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,取决于网络的创建方式。此接口应在没有IP地址的情况下处于活动,如果不是,实例将无法访问外部网络。
1
neutron_external_interface: "eth1"
另,要了解更多有关网络配置,请参阅网络概览Network overview
- (3)接下来,我们需要为管理流量提供浮动IP。此IP将由keepalived管理以提供高可用性,并应设置为 未连接到我们的管理网络中的地址 network_interface。
1
kolla_internal_vip_address: "10.1.0.250"
Enable additional services
默认情况下,Kolla-Ansible提供了一个裸计算工具包,但它确实为大量附加服务提供支持。要启用它们,请设置 enable_*为“yes”。例如,要启用块存储服务:1
enable_cinder: "yes"
另,Kolla现在支持许多OpenStack服务,有 一个可用服务列表 a list of available services。有关服务配置的详细信息,请参阅服务参考指南 Services Reference Guide
部署
配置完成后,我们可以进入部署阶段。
首先,我们需要设置基本的主机级依赖项,例如docker。
Kolla-Ansible提供了一个将以正确版本安装所有必需服务的剧本。
- 对于部署或评估,请运行:
- 具有kolla部署依赖关系的引导服务器:
1
kolla-ansible -i ./multinode bootstrap-servers
回车之后报错
参考解决
(1)ansible –version,查看ansible版本为2.0.0.2,确实非常低。
(2)apt install ansible,提示已经是最新版本。
(3)更新apt库,然后重装ansible1
2
3
4
5
6
7ansible --version
apt-get install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible
ansible --version
apt install ansible
安装过程需要进行确认等操作,仔细看提示,重新编辑/etc/ansible/ansible.cfg,
再次执行初始化命令1
kolla-ansible -i ./multinode bootstrap-servers
问题解决。时间需要很久很久,请耐心等待。
对主机进行预部署检查:
1
kolla-ansible -i ./multinode prechecks
最后进入实际的OpenStack部署:
1
kolla-ansible -i ./multinode deploy
- 对于开发,运行:
具有kolla部署依赖关系的引导服务器:
1
2cd kolla-ansible/tools
./kolla-ansible -i ../ansible/inventory/multinode bootstrap-servers对主机进行预部署检查:
1
./kolla-ansible -i ../ansible/inventory/multinode prechecks
最后进入实际的OpenStack部署:
1
./kolla-ansible -i ../ansible/inventory/multinode deploy
另,当这个剧本完成时,OpenStack应该启动,运行并且功能齐全!如果执行期间发生错误,请参阅故障排除指南troubleshooting
使用 OpenStack
安装基本的OpenStack CLI客户端:
1
pip install python-openstackclient python-glanceclient python-neutronclient
OpenStack需要一个openrc文件,其中设置了admin用户的凭据。要生成此文件:
对于部署或评估,请运行:
1
2kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh对于开发,运行:
1
2
3cd kolla-ansible/tools
./kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
- 根据您安装Kolla-Ansible的方式,有一个脚本可以创建示例网络,图像等。
- 对于部署或评估,
请init-runonce在CentOS上运行脚本:1
. /usr/share/kolla-ansible/init-runonce
init-runonce在Ubuntu上运行脚本:1
. /usr/local/share/kolla-ansible/init-runonce
- 对于开发,运行:
1
. kolla-ansible/tools/init-runonce
Kolla的多节点部署
参考链接
https://docs.openstack.org/project-deploy-guide/kolla-ansible/rocky/multinode.html
部署注册表
Docker注册表是一个本地托管的注册表,它取代了从Docker Hub获取图像的需要。Kolla可以在有或没有本地注册表的情况下运行,但是对于多节点部署,某些类型的注册表是强制性的。尽管存在用于注册表服务的HA功能,但只能部署一个注册表。
版本2.3之前的Docker注册表具有极差的性能,因为所有容器数据都是针对每个图像推送的,而不是利用Docker分层来优化推送操作。有关更多信息,请参阅pokey registry pokey注册表
编辑/etc/kolla/globals.yml并添加以下内容,其中192.168.1.100是计算机的IP地址,5000是注册表当前运行的端口
1
docker_registry: 192.168.1.100:5000
Kolla社区建议使用注册表2.3或更高版本。
另,如果要部署2.3或更高版本的注册表,请执行以下操作:1
2cd kolla
tools/start-registry
3.Docker注册表可以配置为拉出缓存,以代理Docker Hub中托管的官方Kolla映像。为了将本地注册表配置为拉入式缓存,在主机中将环境变量设置REGISTRY_PROXY_REMOTEURL为Docker Hub上存储库的URL。1
export REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
在所有节点配置Docker
启动注册表后,有必要指示Docker将与不安全的注册表进行通信。例如,要启用不安全的注册表通信,请修改该/etc/docker/daemon.json文件以包含以下内容 192.168.1.100:当前运行注册表的计算机的IP地址:1
2
3{
"insecure-registries" : ["192.168.1.100:5000"]
}
执行以下命令重启Docker:
对于带有systemd的CentOS或Ubuntu:
1
systemctl restart docker
对于使用upstart或sysvinit的Ubuntu:
1
service docker restart
编辑库文件Inventory File
ansible库文件包含确定哪些服务将在哪些主机上登陆所需的所有信息。编辑Kolla-Ansible目录中的库存文件ansible/inventory/multinode。
如果Kolla-Ansible安装了pip,可以在/usr/share/kolla-ansible。
将IP地址或主机名添加到组中,与该组关联的服务将登陆该主机。必须将IP地址或主机名添加到组控制,网络,计算,监视和存储中。
此外,定义附加的行为清单参数诸如ansible_ssh_user, ansible_become和ansible_private_key_file/ansible_ssh_pass控制与远程主机如何ansible相互作用。
另,Ansible使用SSH连接部署主机和目标主机,应注意配置免密登录。更多的配置参阅Ansible文档
1 | These initial groups are the only groups required to be modified. The |
另外,根据具体的环境配置可能还会需要修改其他的库参数,参阅Ansible文档
对于更高级的角色,操作员可以编辑与每个组关联的服务。请记住,某些服务必须组合在一起,更改这些服务可能会破坏您的部署:
1 | [kibana:children] |
部署 Kolla
- 注意
如果在同一第2层网络中运行多个keepalived集群,请编辑该文件/etc/kolla/globals.yml并指定 keepalived_virtual_router_id。本keepalived_virtual_router_id应该是唯一的,属于范围0〜255。 - 注意
如果将glance配置为file用作后端,则只会glance_api 启动一个容器。file默认情况下在未指定其他后端时启用/etc/kolla/globals.yml。
- 首先,检查部署目标是否处于Kolla可能部署到的状态:
1
kolla-ansible prechecks -i <path/to/multinode/inventory/file>
- 注意
RabbitMQ不能与IP地址一起使用,因此api_interface主机名应该可以解析IP地址, 以确保所有RabbitMQ Cluster主机可以事先解析彼此的主机名。
- 运行部署:
1
kolla-ansible deploy -i <path/to/multinode/inventory/file>