本文是在另外一篇文章的基础上使用kolla-ansible 部署octavia实践总结。部分内容总结略有粗糙,见谅。

使用kolla-ansible all-in-one部署OpenStack Stein

https://blog.csdn.net/zongzw/article/details/106952948

参考链接

https://www.lijiawang.org/posts/kolla-octavia.html

kolla-octavia

(5条消息)openstack kolla 方式配置octavia_运维_weixin_40161962的博客-CSDN博客

OpenStack Docs: Octavia Documentation

OpenStack Docs: Octavia Certificate Configuration Guide

OpenStack Docs: Using Octavia CLI extensions to OpenStack Client

OpenStack Docs: Python Octavia Client Reference

部署过程

下载octavia 源码

下载octavia 代码,主要会用到其中的生成cert部分,但需要 注意的是

部署stein版本需要加 -b stable/stein

# git clone https://github.com/openstack/octavia -b stable/stein

生成octavia需要的key cert集合

  1. 使用/etc/kolla/passwords.yml中的octavia_ca_password替换bin/create_certificates.sh脚本中的foobar

# git clone https://review.openstack.org/p/openstack/octavia

# cd octavia

# grep octavia_ca /etc/kolla/passwords.yml

octavia_ca_password: mEUyBHLopKk501CX30WRnPuiDmoP3I7eNQIQbC6z

# sed -i 's/foobar/mEUyBHLopKk501CX30WRnPuiDmoP3I7eNQIQbC6z/g' bin/create_certificates.sh

# ./bin/create_certificates.sh cert $(pwd)/etc/certificates/openssl.cnf

  1. 生成的证书需要 重命名

命令如下:

bin/create_certificates.sh /etc/kolla/config/octavia `pwd`/etc/certificates/openssl.cnf

.

|-- ca_01.pem

|-- cakey.pem     <- from private cakey.pem

|-- client.csr

|-- client.pem

|-- index.txt

|-- index.txt.attr

|-- index.txt.old

|-- newcerts

|   `-- 01.pem

|-- private

|-- serial

|-- serial.old

|-- server.key        <- from client.key

`-- server.pem       <- from client-.pem

修改/etc/kolla/globals.yml

将这个选项改成yes: enable_octavia

依次重新运行部署命令

# (kolla) kolla-ansible bootstrap-servers

# (kolla) kolla-ansible prechecks

# (kolla) kolla-ansible deploy

# (kolla) kolla-ansible post-deploy

openstack client 中 添加loadbalancer 子命令集合

此命令在openstack virtualenv中执行

# pip install python-octaviaclient

创建amphora 镜像

创建 amphora 的过程是在部署完成后执行的。

https://blog.csdn.net/weixin_40161962/article/details/102967837?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

和https://github.com/openstack/octavia/tree/master/diskimage-create

制作image

执行安装依赖包命令,此命令中的依赖包会在pip install -r requirements.txt 中需要。

yum -y install python-devel libffi-devel gcc openssl-devel libselinux-python

# virtualenv /root/venv/octavia

# source venv/octavia/bin/activate

(octavia) [root@kolla]

# pip install -U pip

# cd octavia/

# pip install win-inet-pton    # 不执行此步会有安装错误报出

# pip install -r requirements.txt

# cd diskimage-create/

# pip install -r requirements.txt

  # fix the error:

  #        2020-06-24 02:31:51.830 | qcow2 output format specified but qemu-img executable not found.

# yum install -y qemu-img

# fix the error:

#          line 39: debootstrap: command not found

# yum install debootstrap

# ./diskimage-create.sh -i ubuntu -t qcow2 -o amphora-x64-haproxy

不明白为什么这个过程不能自动化到kolla-ansible的安装部署过程中。上边这个命令也是从网上过来人的blog中凑来的。。。。

openstack image create --container-format bare --disk-format qcow2 --private --file /root/octavia/diskimage-create/amphora-x64-haproxy.qcow2 --tag amphora amphora

创建octavia_ssh_key

openstack keypair create --public-key /root/.ssh/id_rsa.pub octavia_ssh_key

修改octavia.conf文件

octavia四个组件的目录下都有这个文件,我们需要修改的是octavia-worker下的octavia.conf

amp_boot_network_list = 网络ID

amp_secgroup_list = 安全组ID

amp_flavor_id = 实例FlavorID

docker restart octavia_worker

创建loabalancer尝试

openstack loadbalancer create   --vip-network-id  8381dc8d-2122-4379-821f-b706564e580e

等待许久后会失败,因为网络问题amphora 虚机中无法连接到controller 节点 10.145.64.104:5555,参考问题与解决部分。

使用horizon操作octavia

似曾相识,跟neutron lbaas 一致:

Octavia 可以从horizon和 CLI两种方式操作,创建LB后,在Compute -> Instance中可以看到有amphora的instance启动,其中集成了haproxy。

Octavia将loadbalancer的能力交给tenant,用户可以自己创建LB,其实现本质是在compute上创建一个带有负载均衡功能的虚机(默认负载均衡器为haproxy)VIP为floatingIP,并通过此虚机实现负载均衡能力。

问题与解决

问题:执行bootstrap_servers时异常。

以下错误输出问题很多,省略部分输出。

TASK [octavia : include_tasks] ************************************************************************************

included: /root/venv/kolla/share/kolla-ansible/ansible/roles/octavia/tasks/bootstrap_service.yml for localhost

TASK [octavia : Running Octavia bootstrap container] **************************************************************

fatal: [localhost -> localhost]: FAILED! => {"changed": true, "msg": "Container exited with non-zero return code 1", "rc": 1, "stderr": "+ sudo -E kolla_set_configs\nINFO:__main__:Loading config file at /var/lib/kolla/config_files/config.json\nINFO:__main__:Validating config file\nINFO:__main__:Kolla ....

.....

raise_mysql_exception\n2020-04-27 05:42:38.221 14 ERROR octavia-db-manage     raise errorclass(errno, errval)\n2020-04-27 05:42:38.221 14 ERROR octavia-db-manage OperationalError: (pymysql.err.OperationalError) (1045, u\"Access denied for user 'octavia'@'kolla.pdsea.f5net.com' (using password: YES)\") (Background on this error at: http://sqlalche.me/e/e3q8)\n2020-04-27 05:42:38.221 14 ERROR octavia-db-manage \u001b[00m\n", "stdout_lines": ["2020-04-27 05:42:38.221 14 CRITICAL octavia-db-manage [-] Unhandled error: OperationalError:

....
        "2020-04-27 06:39:29.446 13 ERROR octavia-db-manage OperationalError: (pymysql.err.OperationalError) (1045, u\"Access denied for user 'octavia'@'kolla.pdsea.f5net.com' (using password: YES)\") (Background on this error at: http://sqlalche.me/e/e3q8)",

"2020-04-27 06:39:29.446 13 ERROR octavia-db-manage \u001b[00m"

]

}

解决:

手动pull docker image: kolla-ansible pull.

奇怪的是我登录dockerhub,没有发现这四个docker image。

[root@kolla ~]# docker images| grep octavia

kolla/centos-source-octavia-api                 stein               838b0afb0fa0        18 hours ago        897MB

kolla/centos-source-octavia-housekeeping        stein               9c82e759f2c6        18 hours ago        835MB

kolla/centos-source-octavia-worker              stein               e9b57845d6b5        18 hours ago        835MB

kolla/centos-source-octavia-health-manager      stein               d0c49699d0ff        18 hours ago        835MB

之上的错误很可能 是我执行的是kolla-ansible upgrade,而不是kolla-ansible deploy

问题:debootstrap: command not found

生成amphora image的时候 diskimage_create.sh命令执行失败。

2020-04-28 02:38:12.477 | /tmp/dib_build.VhHboWib/hooks/root.d/08-debootstrap: line 39: debootstrap: command not found

yum install debootstrap

问题: 创建lb失败,因为amphora虚机连接不到controller

openstack image create --container-format bare --disk-format qcow2 --private --file /root/octavia/diskimage-create/amphora-x64-haproxy.qcow2 --tag amphora amphora

openstack loadbalancer create   --vip-network-id  8381dc8d-2122-4379-821f-b706564e580e

等待许久后会失败,因为网络问题amphora 虚机中无法连接到controller 节点 10.145.64.104:5555

问题:Could not find or access '/etc/kolla/config/octavia/cakey.pem'

TASK [octavia : Copying certificate files for octavia-worker] ******************************************************

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: If you are using a module and expect the file to exist on the remote, see the remote_src option

failed: [localhost] (item=cakey.pem) => {"ansible_loop_var": "item", "changed": false, "item": "cakey.pem", "msg": "Could not find or access '/etc/kolla/config/octavia/cakey.pem' on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: If you are using a module and expect the file to exist on the remote, see the remote_src option

failed: [localhost] (item=ca_01.pem) => {"ansible_loop_var": "item", "changed": false, "item": "ca_01.pem", "msg": "Could not find or access '/etc/kolla/config/octavia/ca_01.pem' on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: If you are using a module and expect the file to exist on the remote, see the remote_src option

failed: [localhost] (item=client.pem) => {"ansible_loop_var": "item", "changed": false, "item": "client.pem", "msg": "Could not find or access '/etc/kolla/config/octavia/client.pem' on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}

问题:The request you have made requires authentication. (HTTP 401)

无法完成loadbalancer的部署

The request you have made requires authentication. (HTTP 401) (Request-ID: req-552f5d1b-1f85-42a8-a60f-a922fb5fcc19) (HTTP 500) (Request-ID: req-3ed62325-153f-4857-8ce6-7f8b1063c6df)

需要添加权限:

openstack role add --project admin --user octavia admin

将octavia用户添加到admin 项目中,从这里也可以看出 创建负载均衡器(虚机 网络)操作是用的octavia?

问题:horizon 出现错误,部分页面无法显示

在firefox或者chrome 的页面调试中可以看到

Uncaught Error: [$injector:modulerr] Failed to instantiate module horizon.app due to:

Error: [$injector:nomod] Module 'horizon.app' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

。。。。。

horizon的代码位置 进入到horizon container中,查看/etc/httpd/conf.d/horizon.conf

但是实在没有时间去搞这些个破问题,简单粗暴一点搞定:

# docker rm --force horizon

# docker rmi kolla/centos-source-horizon:stein

然后重新:

kolla-ansible bootstrap-servers

kolla-ansible prechecks

kolla-ansible deploy

kolla-ansible post-deploy

稍等horizon运行3-4分钟后,重新访问UI,OK了。

kolla搭建octavia相关推荐

  1. 仿微信悬浮窗的关键技术点

    下面的技术点已应用到实际项目中 1.如何显示悬浮窗 推荐一个开源库:https://github.com/princekin-f/EasyFloat 通过上面的开源库 悬浮窗已经可以显示了 但是下面确 ...

  2. OpenStack Kolla-Ansible部署Octavia负载均衡服务

    书接上回 OpenStack Kolla-Ansible部署Swift文件存储 对接Ceph RadosGW,Proxmox 本章我们继续来完成OpenStack示例配置组件之Container Op ...

  3. charm zaza functional test (by quqi99)

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2021-07-08) 问题 这篇文档(https://zaza.readthedocs. ...

  4. OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack

    OpenStack部署方式很多,常见的个人部署方式有DevStack.Rdo.all-in-one.multi-node.multi-HA-node等:企业部署方式有Ansible.SaltStack ...

  5. 基于openstack搭建百万级并发负载均衡器的解决方案

    最近,喜欢研究一些国外技术大咖们的文章,而这篇文章是基于openstack负载均衡器的解决方案,做的一些总结~希望能够给小伙伴带来一些灵感或者帮助. openstack现有的负载均衡解决方案,无论是l ...

  6. 小试牛刀之Kolla单节点部署

    写在前面的话,笔者目的是为了尝试用Kolla来方便快捷的部署OpenStack,为以后多节点部署打下基础. Kola简介: kolla项目起源于TripleO项目,聚焦于使用Docker容器部署Ope ...

  7. OpenStack搭建过程(随笔搭建)

    项目二 理论知识 1.项目需求分析 1.基本概念 需求分析是指理解用户需求,就用户的功能需求与客户达成一致,并需要估计项目风险和评估项目代价,最终形成开发计划的一个复杂过程.在这个过程中,用户是处在主 ...

  8. 干货 | 手把手教你搭建一套OpenStack云平台

    1 前言 今天我们为一位朋友搭建一套OpenStack云平台. 我们使用Kolla部署stein版本的OpenStack云平台. kolla是用于自动化部署OpenStack的一个项目,它基于dock ...

  9. Use Octavia to Implement HTTPS Health Monitors (by quqi99)

    几张图感性认识ocatvia 问题 采用Neutron LBaaS v2实现HTTPS Health Monitors时的配置如下(步骤见附件 - Neutron LBaaS v2) backend ...

最新文章

  1. ABAP:SUBMIT执行其他报表并返回的数据
  2. 18.HMM隐马尔可夫模型
  3. Oracle表和表数据恢复
  4. Spring Session源码解析
  5. java class isassignablefrom_Java之——Class的isAssignableFrom方法
  6. linux 运行段错误,在linux下代码运行出现段错误,求大神
  7. 一个队列类的实现(比delphi自带的速度快70倍)
  8. 关于微信隐藏分享按钮的心得
  9. Rulo扫地机器人app_扫地机器人扫不干净 为什么我还推荐大家买?
  10. 手把手教你一整套R语言数据分析+建模流程
  11. 宋佳乐和郭晓婷天津之眼观景照片
  12. 迪杰斯特拉算法(Java)
  13. 12306网站火车票抢票详细攻略(gohome抢票程序)
  14. Nginx解决history模式下页面刷新404
  15. HTML5中国象棋游戏源代码
  16. 原创 | SpringBoot版本竟然引发这种问题,让我吐血三升!
  17. CAD 查找指定部件数量
  18. CATIA无法连接到服务器解决方案
  19. openbmc-web3:添加语言
  20. PyTorch学习系列教程:构建一个深度学习模型需要哪几步?

热门文章

  1. java实现日访问量和访问量的记录与显示
  2. Actual Installer Free的下载安装使用,一款安装包制作工具
  3. 百度云ROM刷机工具(百度刷机精灵) v2.0.23 官方正式版
  4. 笔记本电脑换完电池第一次开机启动设置
  5. 国外漂亮的手机网站模板
  6. 解决Spring事务注解@Transactional在类内部方法调用不生效的问题
  7. 无数曾经伟大的工作室和他们的经典作品都成为
  8. IE11和IE10的区别
  9. 云端转型乏力 甲骨文收购Aconex背后隐藏三大信号
  10. 平面设计师进行海报设计怎么选择字体?