59网站一起做网店,wordpress双站 中英文,静态网站挂马,免费网站建站排行榜0. OpenStack 部署
系统要求
单机部署最低配置#xff1a;
2张网卡8G内存40G硬盘空间
主机系统#xff1a;
CentOS Stream 9Debian Bullseye (11)openEuler 22.03 LTSRocky Linux 9- Ubuntu Jammy (22.04) 官方不再支持CentOS 7作为主机系统#xff0c;我这里使用的是R…0. OpenStack 部署
系统要求
单机部署最低配置
2张网卡8G内存40G硬盘空间
主机系统
CentOS Stream 9Debian Bullseye (11)openEuler 22.03 LTSRocky Linux 9- Ubuntu Jammy (22.04) 官方不再支持CentOS 7作为主机系统我这里使用的是Rocky Linux 9.2最小化安装 如果这些主机中有网卡名称不一致的问题则可以通过team来使网卡名称一致 关闭所有节点的防火墙和selinux
systemctl disable --now firewalld
setenforce 0;sed -i ‘s/SELINUXenforcing/SELINUXdisabled/g’ /etc/selinux/config
1. deploy节点安装依赖
1.1 安装基础依赖
dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux1.2 安装Ansible额外需要的包
官方文档中没有说明实际部署过程中没有这两个包会无法使用pip安装的ansible
dnf install python3-resolvelib sshpass1.3 设置Python-venv虚拟环境
为了防止与系统的python环境冲突这里使用虚拟环境安装ansible与kolla-ansible /path/to/venv是虚拟环境的目录可以自己指定
创建虚拟环境
python3 -m venv /path/to/venv进入虚拟环境
source /path/to/venv/bin/activate在虚拟环境中输入deactivate命令即可退出虚拟环境 更换pip国内源更新pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U pip1.4 安装Ansible
Kolla-ansible需要ansible-core2.13~2.14的版本这里需要指定版本安装
pip install ansible7.7.0 ansible-core2.14.111.5 所有节点安装docker
控制节点、网络节点、存储节点和计算节点
2. deploy节点安装Kolla-ansible
2.1 安装本体
pip install githttps://opendev.org/openstack/kolla-ansiblestable/2023.12.2 获取Kolla配置文件
创建配置文件夹
mkdir /etc/kolla复制global.yml与password.yml到配置文件夹
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla2.3 获取Ansible清单文件
复制all-in-one与multinode两个清单文件分别对应了单机部署与多节点部署
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* /etc/kolla3. 安装Ansible Galaxy依赖
kolla-ansible install-deps #可能偶现ERROR多尝试4. 配置Ansible 单机部署时可以跳过这一步 编辑/etc/ansible/ansible.cfg如果没有则需要先创建将下面的内容添加到配置文件中
[defaults]
host_key_checkingFalse
pipeliningTrue
forks1005. 准备初始化配置 deploy
5.1 修改hosts 单机部署时可以跳过这一步 在部署机的hosts中添加需要部署的主机的主机名后续会自动同步到所有节点 编辑/etc/hosts文件我这里准备部署3台控制节点与3台计算节点 (共用)
还需要配置deploy节点到这几个节点的 SSH互信
10.0.0.10 control01.openstack.instack.cloud control01
10.0.0.20 control02.openstack.instack.cloud control02
10.0.0.21 control03.openstack.instack.cloud control035.2 准备清单文件
单机部署时使用all-in-one清单文件- 多节点部署时使用multinode清单文件 单机部署时可以不用修改all-in-one清单文件 下面是我的multinode清单文件的开头部分供参考
[all]
control01
control02
control03[control]
# 指定root密码、管理网卡
control01 # ansible_ssh_passroot network_interfaceens192
control02 # ansible_ssh_passroot network_interfaceens192
control03 # ansible_ssh_passroot network_interfaceens192[network:children]
# 可在组名后添加:children来对组进行嵌套
control[compute]
# 指定root密码、管理网卡、外部网卡
control [monitoring:children]
control[deployment]
localhost ansible_connectionlocal详细的配置规则见 Ansible文档(opens new window) 配置完成后使用下面的命令测试Ansible的连通性
ansible -i multinode all -m ping5.3 生成密码
kolla-genpwd密码存储在/etc/kolla/passwords.yml中 推荐自己修改一下某些密码比如keystone_admin_password 5.4 配置 global.yml
镜像选择
Kolla可以选择多种镜像版本
CentOS Stream (centos)- Debian (debian)- Rocky (rocky)- Ubuntu (ubuntu) 官方推荐新安装的使用rocky或ubuntu这里使用和主机相同的rocky发行版
提示
默认不用修改
kolla_base_distro: rocky镜像仓库
国内可能访问quay.io比较慢可以指定国内的quay.io源
docker_registry: quay.nju.edu.cn自建仓库
docker_registry: hub.huahuayun.cloud登录
docker_registry_insecure: yes
docker_registry_username: admin
# docker_registry_password在password.yml中配置
#docker_registry: quay.nju.edu.cn
docker_registry: hub.huahuayun.cloud网络
管理网络的网卡也用于主机之间的通信若非所有主机网卡名都是一致的可以使用bond或team技术
network_interface: bond0连接外部网络的网卡需要一个开启的没有配置IP的网卡
neutron_external_interface: bond1用于管理的浮动IP由keepalived提供高可用性必须是管理网络中没有被使用的地址
kolla_internal_vip_address: 10.0.0.250
kolla_external_vip_address: 192.168.110.110
kolla_external_vip_interface: bond2监控
enable_prometheus虚拟机高可用
enable_hacluster中心日志
enable_central_logging: yes
enable_venus: yesglobal.yml中所有的选项都可以在清单文件中为每个主机单独配置。上面的multinode文件中指定了每台主机的管理网卡与外部网卡。 [roothuahuadeploy kolla]# cat globals.yml | grep -v ^# | grep -v ^$
---
workaround_ansible_issue_8743: yes
kolla_internal_vip_address: 10.20.10.110 # 内部管理网络VIPinternal endpoint使用
kolla_external_vip_address: 192.168.110.110 # 可选外部管理网络VIP public endpoint使用
docker_registry: hub.huahuayun.cloud # 本地Harbor仓库或使用quay.io或使用quay.nju.edu.cn
docker_registry_insecure: yes
docker_registry_username: admin
network_interface: bond0 # 内部管理网络网卡名称使用bond可以统一不同节点的网卡名称或者提供网络高可用
kolla_external_vip_interface: bond2 # 可选有外部管理网VIP时填写
neutron_external_interface: bond1 # 提供者网络一般用于公网IP和弹性IP
keepalived_virtual_router_id: 110 # 同一网络下有多个集群时需要不同的router_id类型为uint8
openstack_region_name: ChengDuTest
enable_hacluster: yes # 是否启用实例高可用节点故障时迁移
enable_barbican: yes
enable_ceilometer: yes
enable_ceilometer_ipmi: yes
enable_central_logging: yes
enable_cinder: yes
enable_cinder_backup: yes
enable_fluentd: yes
enable_gnocchi: yes
enable_gnocchi_statsd: yes
enable_grafana: yes
enable_ironic: yes # 是否需要包括裸金属服务
enable_mariabackup: yes
enable_neutron_dvr: yes
enable_neutron_qos: yes
enable_prometheus: yes
enable_redis: yes # 是否使用redis提供缓存和gnocchi的incoming存储
enable_skyline: yes
enable_venus: yes
enable_ironic_ipxe: no
ironic_dnsmasq_serve_ipxe: false
ceph_glance_keyring: ceph.client.glance1.keyring # ceph相关的默认就行这里用户和池名称均添加了数字1
ceph_glance_user: glance1
ceph_glance_pool_name: images1
ceph_cinder_keyring: ceph.client.cinder1.keyring
ceph_cinder_user: cinder1
ceph_cinder_pool_name: volumes1
ceph_cinder_backup_keyring: ceph.client.cinder-backup1.keyring
ceph_cinder_backup_user: cinder-backup1
ceph_cinder_backup_pool_name: backups1
ceph_nova_keyring: {{ ceph_cinder_keyring }}
ceph_nova_user: cinder1 # 重点
ceph_nova_pool_name: vms1 # 重点
ceph_gnocchi_keyring: ceph.client.gnocchi1.keyring
ceph_gnocchi_user: gnocchi1
ceph_gnocchi_pool_name: gnocchi1
glance_backend_ceph: yes
gnocchi_backend_storage: ceph
cinder_backend_ceph: yes
nova_backend_ceph: yes
ironic_dnsmasq_interface: bond0 # 裸金属dnsmasq默认使用内部管理网
ironic_dnsmasq_dhcp_ranges:- range: 10.20.10.241,10.20.10.250routers: 10.20.10.254
ironic_inspector_kernel_cmdline_extras: [ipa-lldp-timeout90.0, ipa-collect-lldp1]
prometheus_cmdline_extras: --web.enable-lifecycle6. 配置ceph
我们需要提前部署一个ceph集群要求ceph的public network和计算节点网络相通
存储池的名称和用户名可以在/etc/kolla/globals.yml中找到并修改
nova_backend_ceph, cinder_backend_ceph, glance_backend_ceph, ceph_cinder_backup_pool_name
ceph_nova_user, ceph_cinder_user, ceph_glance_user, cinder-backup
# Glance
ceph_glance_keyring: ceph.client.glance1.keyring
ceph_glance_user: glance1
ceph_glance_pool_name: images1
# Cinder
ceph_cinder_keyring: ceph.client.cinder1.keyring
ceph_cinder_user: cinder1
ceph_cinder_pool_name: volumes1
ceph_cinder_backup_keyring: ceph.client.cinder-backup1.keyring
ceph_cinder_backup_user: cinder-backup1
ceph_cinder_backup_pool_name: backups1
# Nova # 重点是cinder1不是nova1
ceph_nova_keyring: {{ ceph_cinder_keyring }}
ceph_nova_user: cinder1
ceph_nova_pool_name: vms1
# Gnocchi
ceph_gnocchi_keyring: ceph.client.gnocchi1.keyring
ceph_gnocchi_user: gnocchi1
ceph_gnocchi_pool_name: gnocchi1以下均在cephadm节点执行
6.1 创建存储池
ceph osd pool create volumes1
ceph osd pool create images1
ceph osd pool create backups1
ceph osd pool create vms1
ceph osd pool create gnocchi1rbd pool init volumes1
rbd pool init images1
rbd pool init backups1
rbd pool init vms1
ceph osd pool application enable gnocchi1 rgw # 在页面上去设置也可,poolsgnocchieditapplicationrgw# optional
ceph osd pool create cephfs_data 64 64
ceph osd pool create cephfs_metadata 64 64
ceph osd pool application enable cephfs_data cephfs
ceph osd pool application enable cephfs_metadata cephfs
ceph fs new myfs cephfs_metadata cephfs_data6.2 创建glance cinder cinder-backup账户
ceph auth get-or-create client.glance1 mon profile rbd osd profile rbd poolimages1 mgr profile rbd poolimages1ceph auth get-or-create client.cinder1 mon profile rbd osd profile rbd poolvolumes1, profile rbd poolvms1, profile rbd-read-only poolimages1 mgr profile rbd poolvolumes1, profile rbd poolvms1ceph auth get-or-create client.cinder-backup1 mon profile rbd osd profile rbd poolbackups1 mgr profile rbd poolbackups1ceph auth get-or-create client.gnocchi1 mon allow r osd allow rwx poolgnocchi16.3 复制keyring
ceph auth get-or-create client.glance1 /etc/ceph/ceph.client.glance1.keyring
ceph auth get-or-create client.cinder1 /etc/ceph/ceph.client.cinder1.keyring
ceph auth get-or-create client.cinder-backup1 /etc/ceph/ceph.client.cinder-backup1.keyring
ceph auth get-or-create client.gnocchi1 /etc/ceph/ceph.client.gnocchi1.keyring将上述文件copy到deploy节点的/etc/kolla/config下
.
├── cinder
│ ├── cinder-backup
│ │ ├── ceph.client.cinder-backup.keyring
│ │ ├── ceph.client.cinder.keyring
│ │ └── ceph.conf - /etc/kolla/config/custom/ceph.conf
│ └── cinder-volume
│ ├── ceph.client.cinder.keyring
│ └── ceph.conf - /etc/kolla/config/custom/ceph.conf
├── custom
│ └── ceph.conf
├── glance
│ ├── ceph.client.glance.keyring
│ └── ceph.conf - /etc/kolla/config/custom/ceph.conf
├── gnocchi
│ ├── ceph.client.gnocchi1.keyring
│ └── ceph.conf - /etc/kolla/config/custom/ceph.conf
├── haproxy
├── ironic
│ ├── ironic-agent.initramfs
│ ├── ironic-agent.kernel
│ └── pxelinux.0
├── nova
│ ├── ceph.client.cinder.keyring
│ └── ceph.conf - /etc/kolla/config/custom/ceph.conf
└── nova.confnova.conf
[DEFAULT]
block_device_allocate_retries 6000
block_device_allocate_retries_interval 30
# config drive 能够在 instance 启动时将网络配置信息动态注入到操作系统中
flat_injected true
[libvirt]
inject_password true
[filter_scheduler]
enabled_filters SimpleCIDRAffinityFilter,DifferentHostFilter,JsonFilter,SameHostFilter7. 配置Ironic可选
vim /etc/kolla/globals.yml
enable_ironic: yes
enable_ironic_neutron_agent: {{ enable_neutron | bool and enable_ironic | bool }}
ironic_dnsmasq_interface: {{ network_interface }}
ironic_cleaning_network: ext_net_test
ironic_dnsmasq_dhcp_ranges:- range: 192.168.131.10,192.168.131.50routers: 192.168.2.1
ironic_dnsmasq_boot_file: pxelinux.0
ironic_inspector_kernel_cmdline_extras: [ipa-lldp-timeout90.0, ipa-collect-lldp1]下载镜像 (我们自己有——virt-custom制作的initramfs允许root登录)
$ curl https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-stable-2023.1.kernel \-o /etc/kolla/config/ironic/ironic-agent.kernel$ curl https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-stable-2023.1.initramfs \-o /etc/kolla/config/ironic/ironic-agent.initramfs8. 部署
我这里采用多节点部署使用的是multinode清单文件单机部署请使用all-in-one清单文件
引导服务器
kolla-ansible -i ./multinode bootstrap-servers # 检查是否干净关闭防火墙安装一些包这是需要联网的部署前检查
kolla-ansible -i ./multinode prechecks开始部署 莫慌先去掉所有节点外网IP
kolla-ansible -i ./multinode deploy9. 使用OpenStack
9.1 命令行OpenStack CLI
安装CLI客户端
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2023.1
pip install python-ironicclient
pip install python-ironic-inspector-client生成openrc文件
kolla-ansible post-deploy使用openrc文件
. /etc/kolla/admin-openrc.sh接下来就可以使用OpenStack CLI了
9.2 网页Horizon
浏览器中访问kolla_internal_vip_address or kolla_external_vip_address
skyline默认端口 9999
horizon默认端口80
输入账号密码即可 账号密码可在password.yml中找到 10 另外
若需要多个flat网络可以通过neutron_bridge_name这个配置选项来配置网卡名称globals.yaml中不提供此配置需要自己写请先跟踪一下ansible脚本