kolla-ansible部署openstack+opendaylight

2023-11-07

1 环境准备

准备三台机器,分别作为OpenStack的controller和compute节点、OpenDayLight节点,另外把controller作为本次的部署节点。其中controller和compute节点各两张网卡,odl节点只需一张网卡,且odl节点提前装好opendaylight。操作系统为centos7.4.
主机必须满足以下最低要求:

  • 8GB内存
  • 40GB磁盘空间
ip host
192.168.2.214 controller
192.168.2.158 compute
192.168.2.215 odl

1.1 关闭Selinux

vi /etc/sysconfig/selinux

更改为SELINUX=disabled

1.2 关闭firewalld

systemctl stop firewalld
systemctl disable firewalld

1.3 设置主机名,hosts文件

vi /etc/hosts

192.168.2.214 controller 
192.168.2.158 compute 
192.168.2.215 odl

1.4 修改网卡名字

适用于centos,其他系统请另行百度
多节点部署需要将所有机器的网卡名统一,本文将controller和compute节点的第一张网卡改为eth0,第二张网卡改为eth1

vi /etc/default/grub  (添加net.ifnames=0)

GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 rhgb quiet”

grub2-mkconfig -o /boot/grub2/grub.cfg
vi /etc/udev/rules.d/70-persistent-ipoib.rules(添加pci设备信息)

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="74:27:ea:6f:0f:e9", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:15:17:8e:fd:dc", NAME="eth1"

ATTR{address}为网卡的mac地址

1.5 重启机器

2 安装docker

在controller和compute节点执行以下步骤

2.1 加入Docker的源

tee /etc/yum.repos.d/docker.repo << 'EOF'

[dockerrepo] 
name=Docker Repository 
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ 
gpgcheck=1 
gpgkey=https://yum.dockerproject.org/gpg 
EOF 

2.2 通过yum安装docker

sudo yum install docker-engine

2.3 设置Docker

mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'

[Service]
MountFlags=shared
EOF

2.4 配置docker加速

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://6d9f25d8.m.daocloud.io

该脚本可以将 –registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。

2.5 重启相关服务

systemctl daemon-reload
systemctl enable docker
systemctl restart docker

3 配置免密登陆

controller节点执行

ssh-keygen
ssh-copy-id controller
ssh-copy-id compute
ssh-copy-id odl

4 部署OpenStack

在controller和compute节点执行以下操作

4.1 安装依赖

操作之前,确保pip软件包管理器已安装并升级到最新版本。

yum install epel-release 
yum install python-pip 
pip install -U pip

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

4.2 安装ansible

yum install ansible

添加以下内容

vi /etc/ansible/ansible.cfg

[defaults]
host_key_checking=False
pipelining=True
forks=100

在controller节点执行以下操作

4.3安装kolla

git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible

复制相关文件

cp -r kolla-ansible/etc/kolla /etc/kolla/
cp kolla-ansible/ansible/inventory/* .

4.4 配置库存文件

下一步是准备我们的库存文件。库存是我们指定节点角色和访问凭证的完整文件。

Kolla-Ansible自带all-in-one和multinode示例库存文件。它们之间的区别在于前者是部署单节点OpenStack。这里我们属于多节点部署,所以编辑multinode文件:

[control]
controller

[network]
controller

[inner-compute]

[external-compute]
compute

[compute:children]
inner-compute
external-compute

[monitoring]
controller

[storage]

确认配置是否正确

ansible -m ping all

4.5 配置密码

我们部署中使用的密码存储在/etc/kolla/passwords.yml 文件中。现在所有的密码都是空白的,必须手动填写或通过运行随机密码生成器来填充:

cd kolla-ansible/tools
./generate_passwords.py

4.6 配置globals.yml文件

进行如下配置:

# Kolla options
kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "pike"
network_interface: "eth0"
neutron_external_interface: "eth1"
kolla_internal_vip_address: "192.168.2.250"

# Neutron - Networking Options
neutron_plugin_agent: "opendaylight"

# OpenDaylight
enable_opendaylight_qos: "yes"
enable_opendaylight_l3: "yes"

# OpenStack options
enable_opendaylight: "yes"

默认情况下,enable_haproxy:”yes” 因此需要将kolla_internal_vip_address设置为管理网络下未被使用的IP

4.7 配置模板文件

cd /root/kolla-ansible/ansible/roles/neutron/templates
vi ml2_conf.ini.j2

[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = opendaylight_v2
extension_drivers = qos,port_security

[ml2_odl]
url = http://192.168.2.215:8080/controller/nb/v2/neutron
username = admin                                            
password = admin
port_binding_controller = pseudo-agentdb-binding

url中的ip改成odl的ip,username和password为odlweb界面的账号密码
通过修改这个模板配置文件,可以让以后生成的容器中的配置文件设置成这个样子

4.8 检查依赖

-i 指定刚才修改的库存文件

cd kolla-ansible/tools
./kolla-ansible -i ~/multinode bootstrap-servers

4.9 预部署检查

./kolla-ansible -i ~/multinode prechecks

4.10 部署

./kolla-ansible -i ~/multinode deploy

4.11 集成opendaylight

controller节点

​docker stop neutron_server

controller和compute节点

进入openvswitch_db容器,删除db文件
docker exec -ti openvswitch_db /bin/bash
rm -f /var/lib/openvswitch/conf.db

退出openvswitch_db并重启,然后进入openvswitch_vswitchd容器

docker restart openvswitch_db
docker exec -ti openvswitch_vswitchd /bin/bash

此时ovs应该是空的,执行ovs-vsctl show可以看到类似如下信息

9f3b38cb-eefc-4bc7-828b-084b1f66fbfd

配置odl

ovs-vsctl set-manager tcp:192.168.2.215:6640

CONTROL_HOST是你安装的opendaylight所在的地址,如我的为192.168.2.215

ovs-vsctl set Open_vSwitch . other_config:local_ip=192.168.2.214

local_ip为你各个节点的ip,如我的controller是192.168.2.214,computr是192.168.2.158

验证

ovs-vsctl show

结果

195cf810-2589-42b4-a6c7-ad0004baf580
Manager "tcp:192.168.2.215:6640"
    is_connected: true
Bridge br-int
    Controller "tcp:192.168.2.215:6653"
        is_connected: true
    fail_mode: secure
    Port br-int
        Interface br-int
            type: internal

验证

ovs-vsctl get Open_vSwitch . other_config

结果

{local_ip="192.168.2.214"}/{local_ip="192.168.2.158"}

controller节点

docker start neutron_server

进入mariadb容器

docker exec -ti mariadb /bin/bash

kolla部署openstack的时候没有设置mariadb的密码,系统随机生成了一个密码,我们要先找到这个密码

vi  /etc/my.cnf
找到wsrep_sst_auth所在的行 root:后面的就是随机密码
wsrep_sst_auth = root:ju5ROOhqyUFiJhu1rVGkqzV7UmbpPg7sbKmNGRFa

进入mysql

mysql -u root -p
输入刚才找到的密码

清空neutron库

DROP DATABASE IF EXISTS neutron;
CREATE DATABASE neutron CHARACTER SET utf8;

退出mysql,退出mariadb容器,然后再进入到neutron_server容器

docker exec -ti neutron_server /bin/bash

重新生成数据

/var/lib/kolla/venv/bin/neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head

重启neutron_server容器

docker restart neutron_server

至此集成结束

5 使用OpenStack

OpenStack需要一个openrc文件,其中设置了admin用户的凭证

kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

安装基本的OpenStack客户端

pip install python-openstackclient python-glanceclient python-neutronclient

脚本创建网络、镜像等

. kolla-ansible/tools/init-runonce

参考资料
http://docs.opendaylight.org/projects/netvirt/en/latest/openstack-guide/openstack-with-netvirt.html#installing-opendaylight-on-an-existing-openstack
https://weibo.com/ttarticle/p/show?id=2313501000014220157340847224&display=0&retcode=6102
http://docs.opendaylight.org/projects/netvirt/en/latest/openstack-guide/openstack-with-netvirt.html#installing-opendaylight-on-an-existing-openstack

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kolla-ansible部署openstack+opendaylight 的相关文章

随机推荐

  • vue2实例

    目录 数据与方法 你提到vue有两种数据和方法 js是不是只有一种 vue2自带的实例和方法 vue2 会和jQuery冲突d的问题 vue2中被人吐槽的this vue3已改进 箭头函数和普通函数中的this 生命周期 数据与方法 没看懂
  • 深入分析 ESP32 的 WiFi 状态机

    本工程已托管到 GitHub 具体路径是 https github com tidyjiang8 esp32 projects tree master sta 在前一篇博客 让 ESP32 连接到你的 WiFi 热点 中 我们已经简单地分析
  • jquery+ajax清除session,并跳出iframe框架页面

    集合页面
  • Checkstyle检查规则

    Checkstyle是一个检查java文件编码规范的开源工具 最新版本支持184个检查规则 Checkstyle官网如下 https checkstyle sourceforge io Checkstyle的GitHub地址如下 https
  • 企业的述职如何做才有效?

    360度考核法又称全方位考核法 是指通过被考核者自己 同事 上级 下属以及客户对考核者进行全方位评价 以帮助其提高能力或业绩 职如何做才有效 每年的元旦前后很多单位都会针对全员做一件事情 述职 述职这个词在古时候诸侯向天子陈述职守 现在指基
  • 8.4-中断系统小结(cpu中断七个问题)

    README 本文转自bilibili 计算机组成原理 哈工大刘宏伟 的视频讲解 非常棒 墙裂推荐 1 中断介绍 1 作用 用中断系统实现了外设数据的输入输出 还可以用于程序调试 计算机系统的异常事件 都可以用中断系统来处理 2 中断因素
  • docker创建kafka(带SASL认证)

    1 准备文件kafka server jaas conf KafkaServer org apache kafka common security plain PlainLoginModule required username admin
  • c++中map的3中遍历方式

    一 说明 容器都有成员begin和end 其中begin成员复制返回指向第一个元素的迭代器 而end成员返回指向容器尾元素的下一个位置的迭代器 它是一个不存在的元素位置 1 map
  • proteus8.9闪退解决办法(亲测有效)

    ptoteus8 9闪退解决办法 win10安装proteus8 9以后经常出现闪退的情况 网上搜到的大部分都在说是安装路径的原因 但是我这里两台电脑 一台修改了安装路径解决了闪退 另一台却并没有生效 不管怎么设置安装路径 总有闪退的情况
  • 应用层HTTP数据包的截获与还原技术的实现

    摘要 在因特网日益发展壮大的今天 万维网在其上的通信量已经超过90 万维网信息的安全问题已经越来越被人们所重视 而作为万维网应用层核心协议的http协议是基础 当网络发生异常时 对网络上传输的数据进行监视和分析 是网管人员解决网络故障的一种
  • 全同态加密算法深入解析

    陈智罡老师全同态加密算法深入解析 https www 8btc com article 392931
  • 联软科技安全准入门户平台RCE(命令执行)漏洞

    联软科技安全准入门户平台RCE 命令执行漏洞 前言 声明 一 漏洞描述 二 影响平台 三 漏洞复现 四 修复方案 五 工具链接 前言 联软科技安全准入门户平台 commondRetStr处存在远程代码执行漏洞 攻击者可以获取服务器权限 声明
  • AIGC - 文本生成视频大模型-英文-通用领域 (Text-to-video-synthesis Model in Open Domain)

    文本生成视频大模型 英文 通用领域 Text to video synthesis Model in Open Domain 本模型基于多阶段文本到视频生成扩散模型 输入描述文本 返回符合文本描述的视频 仅支持英文输入 This model
  • WebRTC在浏览器中的演示

    WebRTC在chrome浏览器里演示的例子很多 WebRTC的源码里就有 但是在Firefox浏览器里 例子不能使用 网上的资料说要把 media peerconnection enabled 设置为True 但是Firefox浏览器里
  • 接口的Mock测试及Mockito使用

    参考链接 1 Mock测试的目的两个 1 验证方法调用 2 指定某个方法的返回值 或者是执行特定的动作 2 所谓的mock就是创建一个类的虚假的对象 在测试环境中 用来替换掉真实的对象 以达到两大目的 验证这个对象的某些方法的调用情况 调用
  • 软件工程 网上购物系统源码

    网上购物商城web系统的需求分析是项目开发中非常重要的环节 通过分析消费者和商家的需求 确立系统所需具备的功能和性能 以便有效地规划 设计和实施系统 从消费者的需求出发 网上购物商城web系统需要提供以下主要功能 1 商品展示功能 系统需要
  • (三-一)IPC-邮箱通信

    一个线程想发送信息到另一个线程 最直接的方式是用全局变量 但是全局变量难以管理 而且一个线程希望等待信息的时候把自己挂起 需要有一个方便的方案 邮箱通信是操作系统中常用的一种通信机制 如图所示 很多操作系统 如RT THREAD 邮箱其实也
  • springboot+spring-security+ajax+前后端分离解决Authorization请求头跨域问题

    security ajax 前后端分离解决Authorization请求头跨域问题 背景 后端采用 springboot spring security oauth2开发 前台采用纯静态页面的形式开发 以此做到前后端分离 采用token的形
  • Python实现线性回归

    文章目录 一 线性回归原理 1 构造模型 2 构建损失函数 3 优化损失 二 设计方案 1 准备数据 2 构造损失函数 3 优化损失 三 代码实现 四 总结 一 线性回归原理 1 构造模型 y w1x1 w2x2 b 2 构建损失函数 均方
  • kolla-ansible部署openstack+opendaylight

    1 环境准备 准备三台机器 分别作为OpenStack的controller和compute节点 OpenDayLight节点 另外把controller作为本次的部署节点 其中controller和compute节点各两张网卡 odl节点