Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 OpenStack 和 Kolla Ansible 安装 Contrail

本主题提供安装 Contrail 5.0X 版所需的步骤。使用OpenStack,使用Kolla Ansible playbook contrail-kolla-ansible。Kolla 是一个 OpenStack 项目,它提供 Docker 容器和 Ansible 剧本,为运维 OpenStack 云提供生产就绪容器和部署工具。

contrail-kolla-ansible手册与安装 OpenStack 和 Contrail 5.0x.. 版容器协同contrail-ansible-deployer工作。

要使用 Contrail 命令部署 Contrail 群集,请参阅使用 Contrail 命令和instances.yml安装 Contrail 群集

本主题介绍了使用 Kolla 容器的 contrail-kolla-ansible 部署和 Contrail 容器使用的 contrail-ansible-deployer 部署:

设置基本主机

此过程假定您使用 CentOS 7.5 内核 3.10.0-862.11.6.el7.x86_64 进行安装。虚拟路由器与主机内核有 依赖 关系。在置备之前在目标节点上安装此内核版本。

要设置基本主机:

  1. Contrail 下载 页面下载相应的安装程序包。

  2. 安装 Ansible。

    yum -y install epel-release

    yum -y install git ansible-2.4.2.0

  3. 解开 tgz 的焦油。文件。

    - tar xvf contrail-ansible-deployer-5.0.1-0.214.tgz

    实例.yaml 位于 contrail-ansible-deployer/config/

  4. 使用以下准则在文件 instances.yaml 中配置 Contrail 和 Kolla 参数:

    • 提供商配置 (provider_config) 部分是指将托管 Contrail 群集的云提供商,并包含与提供商相关的所有参数。对于裸机服务器,提供商为 bms

    • 本节 kolla_globals 涉及 OpenStack 服务。有关所有可能 kolla_globals的详细信息,请参阅 https://github.com/Juniper/contrail-kolla-ansible/.../globals.yml

    • 其他 Kolla 配置 (contrail-kolla-ansible) 可以作为 。 contrail_additions有关 Kolla 的所有可能 contrail_additions 的详细信息,请参阅 https://github.com/Juniper/contrail-kolla-ansible/.../all.yml

    • contrail_configuration 部分包含 Contrail 服务的参数。

      • CONTAINER_REGISTRY 指定要从中提取 Contrail 容器的注册表。如果要构建自己的容器,则可以将其设置为本地 Docker 注册表。如果未指定注册表,它将尝试从 Docker 中心拉取容器。

        如果指定了自定义注册表,则还要在 下kolla_globalscontrail_docker_registry指定相同的注册表。

      • CONTRAIL_VERSION,如果未指定,将默认为“最新”标记。可以从夜间构建中指定标记。

      • 有关 的所有 contrail_configuration可能参数的详细信息,请参阅 https://github.com/Juniper/contrail-container-builder/.../common.sh

      • 如果未指定“角色”,则代入以下角色。

      • 如果每个主机都有特定于主机的值,例如,群集中用于“network_interface”的接口名称不同,请使用 多节点 OpenStack HA 和 Contrail(多接口)配置示例中的示例配置

      • 许多参数会自动派生为合理的默认值(第一个配置的工作原理)。如果需要,可以显式指定变量以覆盖派生值。查看代码以查看派生逻辑。

      • CONTROL_DATA_NET_LIST可以是逗号分隔的 CIDR 子网列表,可以指定用于控制/数据平面流量。“kolla”参数“network_interface”将从此子网派生,作为与此子网中的 IP 地址对应的接口。通过将管理子网指定为值,无需指定接口名称,仍可在单个接口设置中使用CONTROL_DATA_NET_LIST。

    示例:实例.yaml

    此示例是单节点、单接口、一体化群集的最低配置。

    示例:实例.yaml

    此示例是针对单节点、单接口、一体化群集的更详细的配置。

  5. 运行以下命令:

    • ansible-playbook -e orchestrator=openstack -i inventory/ playbooks/configure_instances.yml

    • ansible-playbook -i inventory/ playbooks/install_openstack.yml

    • ansible-playbook -e orchestrator=openstack -i inventory/ playbooks/install_contrail.yml

  6. 打开 Web 浏览器并键入 https://contrail-server-ip:8143 以访问 Contrail WebUI。

    默认登录用户名为 admin。使用在步骤 4 中输入的相同密码

运行 OpenStack 命令

此时,需要手动安装OpenStack客户端(python-openstackclient) 使用pip。您无法使用 Yum 存储库进行安装,因为某些依赖的 Python 库与 的 python-openstackclient安装冲突。您也不能使用 pip 存储库进行安装,因为 Ansible 库可能会被覆盖。

  1. 手动安装 python-openstackclient.

    yum install -y gcc python-devel

    pip install python-openstackclient

    pip install python-ironicclient

  2. 使用 VM 到 VM ping 测试设置。

多节点 OpenStack HA 和 Contrail 的多接口配置示例

以下是高可用性 OpenStack 和 Contrail 5.0.x 版的多接口、多节点部署的配置示例。使用此示例配置特定于系统的参数。

有关更多信息或最近的更新,请参阅 github 主题多 节点 OpenStack HA 和 Contrail(多接口)的配置示例。

配置示例 — 多接口

注意:

此示例显示了特定于主机的参数,其中每个主机上的接口名称都不同,并在每个角色下指定。最具体的设置优先。例如,如果角色openstack下没有 network_interfacebms1设置,那么它将从全局变量中获取名称值eth2。但是,由于该bms1 openstack部分下有一个设置,因此该network_interface名称将为 eno1

多节点 OpenStack HA 和 Contrail 的单接口配置示例

以下是高可用性 OpenStack 和 Contrail 5.0.x 版的多接口、单节点部署的配置示例。使用此示例配置特定于系统的参数。

有关更多信息或最近的更新,请参阅 github 主题多 节点 OpenStack HA 和 Contrail(单界面)的配置示例。

配置示例 — 单接口

注意:

替换为 <contrail_version> 适用于您的 Contrail 版本的正确 contrail_container_tag 值。相应的 contrail_container_tag 值列在 自述文件访问 Contrail 注册表中。

常见问题

本节介绍一些常见的错误情况,并提供有关如何解决错误情况的指导。

使用主机特定参数

您可能会遇到需要指定特定于主机的参数的情况,例如,群集中不同服务器的接口名称不同。在这种情况下,您可以在每个角色下指定单独的名称,更具体的设置优先。

例如,如果角色“openstack”下没有“network_interface”设置,例如“bms1”,那么它将从全局变量中获取其设置。

有关扩展示例,请访问: 多节点 OpenStack HA 和 Contrail 的配置示例

无法访问专用注册表中的容器

  1. 您可能遇到从名为 CONTAINER_REGISTRY 的专用注册表拉取的容器无法访问的情况。

  2. 若要解决此问题,请检查以确保REGISTRY_PRIVATE_INSECURE设置为 True

错误:无法插入路由器内核模块

  1. 您可能会遇到以下情况:虚拟路由器模块未安装在计算节点上,虚拟路由器容器处于错误状态,并且错误显示在 Docker 日志中。

  2. 在此版本中,vrouter 模块要求主机内核版本为 3.10.0-862.11.6.el7.x86_64。若要获取此内核版本,请在运行预配之前,在目标节点上安装内核版本。

vrouter 未指定 OpenStack 时的致命错误

  1. 当需要在没有nova-compute的情况下预配vrouter时,您可能会遇到致命错误。

  2. 有一种用例是,需要在没有 nova-compute 的情况下配置虚拟路由器。因此,当指定“vrouter”角色时,不会自动推断“openstack_compute”。要解决此问题,需要明确声明“openstack_compute”角色以及“vrouter”。

    有关此用例的更多信息,请参阅错误 #1756133

需要在单个 OpenStack 群集上实现 HAProxy 和虚拟 IP

默认情况下,所有 OpenStack 服务都会侦听 config/instances.yaml 中该部分中的kolla_globals变量提供的 kolla_internal_vip_address/network_interface IP 接口。在大多数情况下,这对应于 ctrl 数据网络,这意味着即使是 Horizon 现在也只能在 ctrl 数据网络上运行。Kolla在管理网络上提供对Horizon的访问的唯一方法是使用HAProxy和keepalived。启用激活需要 VRRP 的虚拟 IP,它不能是接口 IP。在使用 Kolla 配置参数时,如果不启用 keepalive,就无法启用 HAProxy。因此,您需要提供两个虚拟 IP 地址:一个在管理 () 上,一个在 ctrl-data-network (kolla_external_vip_addresskolla_internal_vip_address) 上。使用此配置,可通过 在管理网络上kolla_external_vip_address访问 Horizon。

使用 kolla_toolbox 容器运行 OpenStack 命令

运行 OpenStack 容器的基本主机上的目录/etc/kolla/kolla-toolbox已挂载,可从容器内部kolla_toolbox访问/var/lib/kolla/config_files。如果在执行 OpenStack 命令时需要其他文件,例如命令openstack image create需要映像文件,则可以将相关文件/etc/kolla/kolla-toolbox复制到基本主机的目录中,并在容器中使用它们。

以下示例说明如何以这种方式运行 OpenStack 命令: