Openstack 与 Ceph集群搭建(下): Openstack部署

文章目录

  • 文章参考
  • 部署节点准备
        • 1. 修改Host文件与hostname名称
        • 2. 安装NTP软件
        • 3. 网卡配置信息
        • 4. 开启Docker共享挂载
        • 5. 安装python虚拟环境
        • 6. 安装kolla-ansible
        • 7. 加载Ansible galaxy requirements
  • Openstack 安装前预配置
        • 1. 配置密码
        • 2. 配置multinode文件
        • 3. 修改全局配置文件
  • Openstack正式安装
        • 1. 启动bootstrap-servers
        • 2. 预环境检查
        • 3. 拉取镜像
        • 4. 安装
  • Openstack初始化及优化
        • 1. 安装openstack client
        • 2. 生成openrc文件并导入
        • 3. 平台初始化
        • 4. 登录Dashboard
        • 5. 下载并上传镜像
        • 6. 建立ssh-key
        • 7. 创建外部网络 (vlan没有添加vlanid 导致不通,需要修改);请先完成14步再回来从这里开始继续。
        • 8. 创建VM网络
        • 9. 创建路由器
        • 10. 连接内外网络
        • 11. 建立安全策略
        • 12. 创建flavor模板
        • 13. 创建虚拟机
      • 14. 配置支持VLAN
      • 15. 解决虚拟机创建超时问题

文章参考

Openstack 官方对接ceph文档
Openstack 与 Ceph集群搭建(上): 规划与准备
Openstack 与 Ceph集群搭建(中): Ceph部署
Openstack 与 Ceph集群搭建(下): Openstack部署
Openstack 与 Ceph集群搭建(完结): 配置Ceph作为Openstack后端存储
前面文章对集群的规划已经做了详细说明,并完成了Ceph集群的部署,接下来就是最重要的Openstack集群部署了。
环境描述:

项目描述说明
系统Ubuntu Server 22.04 LTSOpenStack 2022调研显示:受众多,文档丰富
docker在ceph环节已经安装
python33.10系统默认安装
kolla-ansiblekolla-ansible-16.5.1.dev55
Openstack2024.01
Ceph18.2.2

部署节点准备

1. 修改Host文件与hostname名称

请参考ceph安装部分

注意:节点hostname名称应与hosts文件保持一致。

2. 安装NTP软件

请参考ceph安装部分

3. 网卡配置信息

注意:以下网卡名称因各自环境不同而不同,但是OpenStack需要至少两张网卡,一张用于集群通信,另一种用于其中的虚拟机通信,用于虚拟机通信的网卡根据OpenStack部署的网络不同而不同。Flat对应access接口;Vlan对应Trunk接口。

如规划设计篇的架构图,其网卡配置如下:

  • vlan1250:管理网
  • bond0:用于给Openstack虚拟机使用的网络,由于OpenStack 网络部署为Vlan模式,在屋里交换机需要配置Trunk接口, bond0 也为Trunk接口; 若部署为flat模式,则模式为access。本文将部署为Vlan模式。
4. 开启Docker共享挂载

在Openstack 全节点执行;所谓共享挂载即同一个目录或设备可以挂载到多个不同的路径并且能够保持互相之间的共享可见性,类似于 mount --shared。在 OpenStack for Kolla 中,主要解决 Neutron 的 namespace 在不同 container 中得以保持实效性的问题。

如果以下路径或文件不存在,创建新目录和文件即可。

# 创建文件夹
mkdir /etc/systemd/system/docker.service.d# 创建文件及编辑内容
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
5. 安装python虚拟环境

python虚拟环境用于kolla-ansible使用。该步骤非必须项,但推荐使用虚拟环境运行ansible。
该部分在部署节点上执行。使用虚拟环境主要用于避免与系统包冲突。

# 安装基础依赖包
apt update
apt install git python3-dev libffi-dev gcc libssl-dev
apt install python3-venv# 创建虚拟环境并激活
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate# 升级pip 到最新版本
pip install -U pip# 安装ansible: 这里针对不同版本的OpenStack,需要查询官方文档。
pip install 'ansible-core>=2.15,<2.16.99'  # for Openstack 2024.1 本文使用
pip install 'ansible-core==2.14'   # for 2023.2/2023.1
6. 安装kolla-ansible

在部署节点执行:

# 指定2024.1 版本的Kolla
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2024.1# 安装最新版
# pip install git+https://opendev.org/openstack/kolla-ansible@master# 创建/etc/kolla目录及授权
mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla# 复制 globals.yml and passwords.yml 到 /etc/kolla directory.
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla# 复制inventory文件到当前文件夹: 包括单节点与多节点配置
cp -r /path/to/venv/share/kolla-ansible/ansible/inventory/* /etc/kolla/.
7. 加载Ansible galaxy requirements

部署节点执行:

kolla-ansible install-deps

Openstack 安装前预配置

请确保在python虚拟环境中操作,避免冲突。

1. 配置密码

默认密码存放于/etc/kolla/passwords.yml且密码为空,可使用下面的命令生成随机密码:

kolla-genpwd

注意:需要单独修改keystone的密码,用于horizon登录,否则随机密码输入很困难。其次建议修改grafana的秘密

编辑文件:/etc/kolla/passwords.yml

# 将keystone的密码修改为 KEYSTONE_PASS,便于用户从UI输入
keystone_admin_password: KEYSTONE_PASS
grafana_admin_password: xxxx
2. 配置multinode文件

该文件位于/etc/kolla/,作用是定义各节点角色,其名称需要与hosts文件严格一致。

配置说明如下:

#[xxx]代表一组对象,kolla根据各组所包括的节点进行功能定位与配置下发。 
#控制节点组
[control]          # 组名
node-01		   # 组成员
node-02
node-03# 网络节点
[network]
node-01
node-03#计算节点
[compute]
node-01		  
node-02
node-03# 监控节点
[monitoring]
node-01
node-02
node-03# 存储节点: 若对接ceph, 可以配置为node-01,但不能留空
[storage]
node-01# 部署节点: 也就是运行kolla-ansible的节点
[deployment]
localhost       ansible_connection=local# 其他节点,默认继承现有组,保持默认即可
[baremetal:children]         # 子组
control						 # 继承[control]组
network
compute
storage
monitoring[tls-backend:children]
control[common:children]
control
network
compute
storage
monitoring[collectd:children]
compute[grafana:children]
monitoring

检查配置是否正确:

通过执行以下命令检查部署节点是否能与目标节点(multinode所定义的节点)进行免密登录。

ansible -i /etc/kolla/multinode all -m ping
3. 修改全局配置文件

/etc/kolla/globals.yml,该文件定义OpenStack所需要安装的服务。因为顺序原因,这里只做了基本的网络配置,在对接ceph的文章中将展示完整配置,大家也可以直接使用完整配置替代以下配置:

cat > /etc/kolla/globals.yml <<EOF
---
kolla_base_distro: "ubuntu"
kolla_internal_vip_address: "10.148.250.253"
network_interface: "vlan1250"
neutron_external_interface: "bond0"    # vm网络
nova_compute_virt_type: "kvm"   # 如果是使用虚拟化部署,此选项必须选择qemu, 如果是物理机,默认是kvm

Kolla-Ansible 將 OpenStack 網路分為幾種

  • API interface 為 OpenStack 內部個元件互相溝通還有存取 database 的介面,建議使用內部網路。
  • External VIP Interface 為 OpenStack 對外的 endpoint
  • Storage Interface 是 OpenStack VM 跟 Ceph 溝通的介面,建議使用 10G 以上的網路
  • Cluster Interface 是 Ceph 內部複製檔案的網路介面,也是建議使用 10G 以上的網路
  • Tunnel Interface 是 OpenStack VM 對 VM 網路溝通走的介面
  • Neutron External Interface 是提供 VM 對外網路的介面,floating IP 的 flat / vlan 網路也是走此介面,須為獨立的的介面上不能用 IP

除了 Neutron External Interface 需要為獨立的介面以外,其他網路都可以共用介面,預設壞帶入 network_interface 的值

Openstack正式安装

1. 启动bootstrap-servers

为各节点配置基础环境且会下载大量包请务必保证节点网络的正常

kolla-ansible -i /etc/kolla/multinode bootstrap-servers -vvvv
  1. 上述命令在执行过程中如果报错, 若内容是因为python虚拟环境导致。 可参考以下解决方案:
# 创建文件
mkdir -p ~/.config/pip# 增加以下内容
[global]
break-system-packages = true
  1. 如果报错docker 起不来,解决方案:
systemctl daemon-reload 
systemctl start docker
systemctl enable docker
  1. 如果重启后ceph docker容器不启动,直接重启物理服务器; 重启后执行以下命令确保API正常:
 ceph restful restart

输出如下(根据安装内容不同,显示不一样,主要保证failed=0即可):在这里插入图片描述

2. 预环境检查
kolla-ansible -i /etc/kolla/multinode prechecks -vvvv

如果提示"msg": "Hostname has to resolve uniquely to the IP address of api_interface"说明hosts文件有重复条目,注释即可。

输出如下(根据安装内容不同,显示不一样,主要保证failed=0即可):
在这里插入图片描述
若报错没有 docker模块, 则需要退出虚拟环境(断开会话重新连接即退出),然后执行pip install docker,安装python docker模块。

3. 拉取镜像
kolla-ansible -i /etc/kolla/multinode pull -vvvv

输出如下(根据安装内容不同,显示不一样,主要保证failed=0即可):
在这里插入图片描述

4. 安装
kolla-ansible -i /etc/kolla/multinode deploy -vvvv

输出内容(根据安装内容不同,显示不一样,主要保证failed=0即可):
在这里插入图片描述

Openstack初始化及优化

此部分有会有些笨办法,各位大佬可以多给点意见:
以下操作均在部署节点操作。

1. 安装openstack client

在哪台设备上操作openstack就在哪台设备安装。

apt  install python3-openstackclient
2. 生成openrc文件并导入

生成用户名密码文件,执行openstack命令前必须要使用。

kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
3. 平台初始化
# 自动建立demo project,建议手工建立
source /etc/kolla/admin-openrc.sh #init-runonce 文件可以从kolla-ansible下载,如果在本地找不到的话
/usr/local/share/kolla-ansible/init-runonce
4. 登录Dashboard
http://yourIP
# admin / yourpassword
# 在/etc/kolla/admin-openrc.sh里查询
5. 下载并上传镜像

cirros是极小化linux,可使用它完成相关实验。如果导入其他image留给大家自行研究。

# 下载镜像
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img#上传镜像
glance image-create --name "cirros" \--file cirros-0.4.0-x86_64-disk.img \--disk-format qcow2 --container-format bare \--visibility=public
6. 建立ssh-key
# 建立sshkey
ssh-keygen -q -N ""openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
7. 创建外部网络 (vlan没有添加vlanid 导致不通,需要修改);请先完成14步再回来从这里开始继续。

创建VLAN100 的 172.16.100.0/24网络,GW 172.16.100.254

openstack network create --share --external --provider-physical-network physnet1 --provider-network-type vlan VLAN100
openstack subnet create --network VLAN100 --allocation-pool start=172.16.100.100,end=172.16.100.120 --dns-nameserver 8.8.8.8 --gateway 172.16.100.254 --subnet-range 172.16.100.0/24 VLAN100
8. 创建VM网络

创建Openstack内部虚拟网络给虚拟机使用,该网络需要通过Openstack 路由器与 外部网络连接

openstack network create vm-net172
openstack subnet create --network vm-net172 --dns-nameserver 8.8.8.8 --gateway 172.16.1.254 --subnet-range 172.16.1.0/24 vlan172016001
9. 创建路由器
openstack router create vm-router-01
10. 连接内外网络
openstack router add subnet vm-router-01 vlan172016001
openstack router set vm-router-01 --external-gateway external
openstack port list 
11. 建立安全策略
openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
12. 创建flavor模板
# 建立模板
openstack flavor create --id 0 --vcpus 1 --ram 256 --disk 1 m1.nano
openstack flavor create --id 1 --vcpus 1 --ram 2048 --disk 20 m1.small
13. 创建虚拟机
openstack server create --image cirros --flavor m1.nano --security-group default --key-name mykey --network vm-net172 instance01 

14. 配置支持VLAN

在所有网络节点编辑配置 /etc/kolla/neutron-server/ml2_conf.ini

[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vlan                      # 千万不要写 vxlan,vlan 否则dashboard要报错
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security[ml2_type_vlan]
network_vlan_ranges = physnet1:1:4094					# 添加 physnet1:1:4094	[ml2_type_flat]
flat_networks = physnet1[ml2_type_vxlan]
vni_ranges = 1:1000

执行命令重启容器生效:docker restart neutron_server

15. 解决虚拟机创建超时问题

/etc/kolla/config/nova/nova-compute.conf

[DEFAULT]
block_device_allocate_retries = 600

然后重新配置nova即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410206.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Windows上用Visual Studio编译Tesseract

Tesseract是著名的OCR&#xff08;文字识别&#xff09;开源项目。我想自己编译它的源代码。然而总体而言&#xff0c;大型开源项目在Windows上编译多少都会有些磕磕绊绊&#xff0c;如果有幸最后成功了&#xff0c;都值得写一篇文章来纪念一下。这便是本文的由来。 编译环境&…

客户端可以访问ntp时钟源,时间却一直不同步的问题

ntp时钟源通常是通过开放123 的udp端口对外提供ntp服务的&#xff0c;udp端口的访问可以通过nc -uvz xx.xx.xx.xx 123 端口进行验证&#xff0c;验证发现ntp时钟服务的123端口是开放的&#xff0c;也没有防火墙拦截123端口&#xff0c;但为什么客户端不同步ntp时钟源呢&#xf…

OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数对数组应用自适应阈值。 该函数根据以下公式将灰度图像转换为二值图像&#xff1a; 对于 THRESH_BINARY: t e x t d s t ( x , y ) { maxV…

OpenCV几何图像变换(10)透视变换函数warpPerspective()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 warpPerspective 函数使用指定的矩阵对源图像进行透视变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 M 31 x M 32 y M 33 , M…

C++笔记10•容器适配器:stackqueue priority_queue•

从C中看stack&queue&priority_queue 1.stack的介绍 官方stack实现&#xff1a; 本质是一个数组 1. stack 是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack 是作为容器适…

系统之家游戏专用版Win10系统:游戏玩家首选!

今天系统之家小编给大家带来最新的Win10游戏专用版&#xff0c;该版本系统是专为游戏玩家打造的操作系统&#xff0c;针对大型游戏做了专业优化&#xff0c;性能更优秀&#xff0c;玩家玩游戏体验感更好&#xff0c;还有出色的兼容性支持&#xff0c;能完美兼容各种类型的游戏&…

【与C++的邂逅】--- 模板初阶

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将了解C中泛型编程体现的一大利器 --- 模板&#xff0c;有了模板可以帮我们用户省力。 &#x1f3e0; 泛型编程 如何实现一个通…

Python数据采集与网络爬虫技术实训室解决方案

在大数据与人工智能时代&#xff0c;数据采集与分析已成为企业决策、市场洞察、产品创新等领域不可或缺的一环。而Python&#xff0c;作为一门高效、易学的编程语言&#xff0c;凭借其强大的库支持和广泛的应用场景&#xff0c;在数据采集与网络爬虫领域展现出了非凡的潜力。唯…

聚鼎科技:新人开一家装饰画店铺怎么快速起店

在当下这个看重审美和个性表达的时代&#xff0c;开设一家装饰画店铺无疑是迎合市场的明智选择。对于新人来说&#xff0c;快速且有效地启动一家装饰画店铺并非易事&#xff0c;但通过遵循一些关键步骤&#xff0c;可以大大缩短起步时间并提高成功率。 进行市场调研&#xff0c…

用序列模型(GPT Bert Transformer等)进行图像处理的调研记录

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 北大和字节团队的一篇VLM&#xff0c;在生成任务上&#xff0c;用GPT范式&#xff0c;声称在FID上超过了DIT&#xff0c;SD3和SORA。开源。首先是multi-scale的VQVAE&#xff0c;然后是…

足球联赛|基于SprinBoot+vue的足球联赛管理系统(源码+数据库+文档)

足球联赛管理系统 目录 基于SprinBootvue的足球联赛管理系统 一、前言 二、系统设计 三、系统功能设计 5.1 系统前台功能实现 5.2 后台功能模块实现 5.2.1 管理员模块实现 5.2.2 用户后台模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

Linux离线安装fontconfig

Linux离线下载yum包&#xff0c;安装字体库 一、下载安装包 以CentOS Linux release 7.9.2009下载fontconfig的rpm包的为例 http://mirror.centos.org/centos/7/按提示跳转历史库 找到对应版本的centos https://vault.centos.org/7.9.2009/os/x86_64/Packages/在Packages目…

Level3 — PART 4 机器学习算法 — 决策树

目录 引言 信息量 信息熵 案例 ID3 属性选择—信息增益 决策树生成 Python实现ID3 C4.5 属性选择—信息增益率 连续型属性 缺失值 剪枝 CART 分类树属性选择—基尼系数 回归树属性选择—方差 剪枝 Python实现CART CHAID GBRT 决策树对比 模拟题 CDA L…

集团数字化转型方案(十六)

为了全面推进集团的数字化转型&#xff0c;我们将实施一系列战略举措&#xff0c;包括整合最新的人工智能、大数据分析和云计算技术&#xff0c;升级企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;实现业务流程的自动化与优化&#xff1b;同时&#xff0c;建立全方位…

在银河麒麟服务器V10上源码编译安装mysql-5.7.42-linux-glibc2.12-x86_64

在银河麒麟服务器V10上源码编译安装mysql-5.7.42-linux-glibc2.12-x86_64 一、卸载MariaDB&#xff08;如果已安装&#xff09;二、下载MySQL源码包并解压三、安装编译所需的工具和库四、创建MySQL的安装目录及数据库存放目录五、编译安装MySQL六、配置MySQL七、设置环境变量八…

用EA和SysML一步步建模的操作指南(01)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 对于许多学习SysML和MBSE的同学来说&#xff0c;比较头痛的问题之一是&#xff1a;各种各样的教程里给出的案例&#xff0c;图都是画好了的&#xff01;如何从零开始用建模工具把模型画…

centos7.9系统安装cloudpods并使用ceph存储(二)

1.ceph安装 1.1 环境准备 配置hosts&#xff1a; $ vim /etc/hosts 10.121.x.x node01设置ssh无密码登录&#xff1a; # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa node01关闭selinux、firewalld # setenforce 0 # sed -i "s#SELINUXenforcing#SELINUXd…

如何使用双重IP代理实现更安全的网络访问

在进行网络爬虫或其他需要隐匿真实IP的操作时&#xff0c;单一的代理IP有时并不能完全满足我们的需求。为了进一步提高安全性和隐私保护&#xff0c;我们可以使用双重IP代理。本文将详细介绍如何使用Java实现双重IP代理&#xff0c;帮助你在网络环境中更加游刃有余。 什么是双重…

安装CUDA以及GPU版本的pytorch

使用pytorch进行深度学习的时候&#xff0c;往往想用GPU进行运算来提高速度。于是搜索便知道了CUDA。 下面给出一个自检的建议&#xff1a; 检查cuda的版本是否适配自己的GPU。 打开NVDIA控制面板&#xff0c;点击左下角“系统信息”&#xff0c;然后就可以看到NVDIA GPU的详…

深入了解搜索引擎蜘蛛:从定义到最新技术应用

撰写一篇关于搜索引擎蜘蛛的详细文章&#xff0c;需涵盖从基础概念到未来趋势的多个方面。以下是根据您提供的大纲撰写的长篇文章&#xff0c;适合用于了解搜索引擎蜘蛛的重要性及其在现代互联网中的作用。 1. 引言 在互联网的浩瀚世界中&#xff0c;搜索引擎就像是庞大的图书…