自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构
自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构
欢迎加QQ群:1026880196 进行交流学习
环境说明:
1. 满足一台电脑一个网卡的环境进行模拟测试,由于配置较低,这里只涉及常规测试,不做更深入开展。
2.如果你是物理机,可以准备2个物理网卡,一个作为管理网接口,一个作为浮动网接口(实例上外网的需要,这里需要交换机支持dhcp功能,可以自动获取ip地址)。
3.根据环境需要注意一下参数修改:
nova_compute_virt_type: "kvm"
vim /etc/kolla/config/nova/nova-compute.conf
[libvirt]
inject_password=true
cpu_mode=host-passthrough
virt_type =
kvm
1. PC台式电脑硬件配置

2. 虚拟软件配置
#虚拟机下载 VMware-workstation-full-16.1.0-17198959.exe 百度网盘: 链接:https://pan.baidu.com/s/1RlgNja260HZtRffN_vc9EA 提取码:2021




3. 节点信息 # 三台融合控制/计算/存储
node1 CPU:4核 内存:8GB 系统盘SSD 200GB*1 数据盘SSD 300GB*1 管理网:ens33 192.168.1.20/24 浮动网:ens34 dhcp ( BOOTPROTO=dhcp )
node2 CPU:4核 内存:8GB 系统盘SSD 200GB*1 数据盘SSD 300GB*1 管理网:ens33 192.168.1.21/24 浮动网:ens34 dhcp ( BOOTPROTO=dhcp )
node3 CPU:4核 内存:8GB 系统盘SSD 200GB*1 数据盘SSD 300GB*1 管理网:ens33 192.168.1.22/24 浮动网:ens34 dhcp ( BOOTPROTO=dhcp )
4. 系统安装配置 #镜像下载 https://mirrors.ustc.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
1. 系统版本
CentOS-7-x86_64-Minimal-2009.iso(CentOS 7.9 64位) 2. 语言
英文=标准安装 3. 分区
/boot 1000M /swap 4096M 其余/
5. 网卡信息


6. 系统基本环境 #注意每个节点都要执行
1. 安装常用软件包
yum install gcc vim wget net-tools ntpdate git -y
2. 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
3. 关闭selinux
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config
setenforce 0
4. 主机名:
echo "
192.168.1.20 node1
192.168.1.21 node2
192.168.1.22 node3
">>/etc/hosts
5. ssh免密验证 #只在node1下操作,其它节点不执行
ssh-keygen
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3
6. 修改ssh
sed -i 's/#ClientAliveInterval 0/ClientAliveInterval 60/g' /etc/ssh/sshd_config
sed -i 's/#ClientAliveCountMax 3/ClientAliveCountMax 60/g' /etc/ssh/sshd_config
systemctl daemon-reload && systemctl restart sshd && systemctl status sshd
7. 使用中国科技大学源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
8. 配置docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
9. 安装epel源
yum makecache
yum install -y epel-release
10. 使用豆瓣pypi源
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
EOF
11. 安装安装python-pip
yum install python-pip -y
pip install --upgrade "pip < 21.0"
pip install pbr
12. 升级系统软件包
yum update -y
13. 重启系统
reboot
7. 时间同步 #注意每个节点都要执行
1. 安装chrony服务
yum -y install chrony 2. 配置chrony文件
cp /etc/chrony.conf{,.bak}
echo "
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp6.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
">/etc/chrony.conf 3. 启动服务
systemctl enable chronyd && systemctl restart chronyd && systemctl status chronyd 4. chrony同步源
chronyc sources -v
ntpdate ntp1.aliyun.com
hwclock -w 5. 配置定时任务
crontab -e
0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
0 */1 * * * ntpdate ntp2.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
8. 安装配置
# node1下操作 1. 安装依赖软件包
yum install python2-devel libffi-devel openssl-devel libselinux-python -y
yum remove docker docker-common docker-selinux docker-engine -y
yum install yum-utils device-mapper-persistent-data lvm2 -y 2. 安装ansible
yum install -y "ansible < 2.9.19" 3. 配置ansible.cfg文件
sed -i 's/#host_key_checking = False/host_key_checking = True/g' /etc/ansible/ansible.cfg
sed -i 's/#pipelining = False/pipelining = True/g' /etc/ansible/ansible.cfg
sed -i 's/#forks = 5/forks = 100/g' /etc/ansible/ansible.cfg 4. 安装 kolla-ansible
pip install kolla-ansible==9.3.1 --ignore-installed PyYAML 5. 安装docker-ce
yum install docker-ce -y 6. kolla-ansible配置文件到当前环境
mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla
cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp /usr/share/kolla-ansible/ansible/inventory/* . 7. 修改docker配置文件配置国内阿里云地址,docker推送地址
mkdir /etc/docker/
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
8. 开启 Docker 的共享挂载功能
mkdir -p /etc/systemd/system/docker.service.d
cat >> /etc/systemd/system/docker.service.d/kolla.conf << EOF
[Service]
MountFlags=shared
EOF 9. 设置docker服务启动
systemctl daemon-reload && systemctl enable docker && systemctl restart docker&& systemctl status docker
9. 文件配置
#node1节点下操作
1. 配置清单
vim /root/multinode 修改如下:
[control]
node1
node2
node3 [network]
node1
node2
node3 [compute]
node1
node2
node3 [storage]
node1
node2
node3 [monitoring]
node1
node2
node3 [deployment]
node1
node2
node3 2. 配置globals.yml文件,开启需要的文件
vim /etc/kolla/globals.yml 修改如下:
kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "train"
node_custom_config: "/etc/kolla/config"
kolla_internal_vip_address: "192.168.1.19"
#docker_registry: "xxx123.zixuanyun.com:4000"
docker_namespace: "kolla"
network_interface: "ens33"
neutron_external_interface: "ens34"
neutron_plugin_agent: "openvswitch"
neutron_tenant_network_types: "vxlan,vlan,flat"
keepalived_virtual_router_id: "56"
openstack_logging_debug: "True"
enable_ceph: "yes"
enable_ceph_dashboard: "{{ enable_ceph | bool }}"
enable_chrony: "yes"
enable_cinder: "yes"
enable_cinder_backup: "yes"
enable_ceph_dashboard: "{{ enable_ceph | bool }}"
enable_heat: "no"
enable_neutron_dvr: "yes"
enable_neutron_agent_ha: "yes"
enable_neutron_provider_networks: "yes"
enable_nova_ssh: "yes"
glance_backend_ceph: "yes"
cinder_backend_ceph: "{{ enable_ceph }}"
cinder_backup_driver: "ceph"
nova_backend_ceph: "{{ enable_ceph }}"
nova_compute_virt_type: "qemu"
nova_console: "novnc" 3. 生成随机密码
kolla-genpwd 4. 修改界面登陆密码为123456
sed -i 's/^keystone_admin_password.*/keystone_admin_password: 123456/' /etc/kolla/passwords.yml 5. 准备后端存储# node1-3都需要执行
#格式化
mkfs.ext4 /dev/sdb 数据盘准备ceph的标签
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO1 1 -1 6. 设置nova配置文件
mkdir /etc/kolla/config
mkdir /etc/kolla/config/nova
cat >> /etc/kolla/config/nova/nova-compute.conf << EOF
[libvirt]
virt_type = qemu
cpu_mode = none
EOF 7. 创建虚拟机界面禁止默认创建新卷.
mkdir /etc/kolla/config/horizon/
cat >> /etc/kolla/config/horizon/custom_local_settings << EOF
LAUNCH_INSTANCE_DEFAULTS = {'create_volume': False,}
EOF 8. 创建ceph.conf
cat >> /etc/kolla/config/ceph.conf << EOF
[global]
osd pool default size = 3
osd pool default min size = 2
mon_clock_drift_allowed = 2
osd_pool_default_pg_num = 8
osd_pool_default_pgp_num = 8
mon clock drift warn backoff = 30
EOF
10. 开始安装
#node1 上执行
1. 引导各节点依赖
kolla-ansible -i ./multinode bootstrap-servers
2. 检查
ansible -i multinode all -m ping
kolla-ansible -i ./multinode prechecks

3. 部署
kolla-ansible -i ./multinode deploy
4. 部署完成后生成rc文件
kolla-ansible -i ./multinode post-deploy
5. 拷贝admin-openrc.sh文件
cp /etc/kolla/admin-openrc.sh ./
chmod +x admin-openrc.sh
source admin-openrc.sh 6. 安装openstack 包
cd /etc/yum.repos.d/
yum install centos-release-openstack-train -y
yum makecache fast
yum install python-openstackclient -y
cd
7. 编辑初始化脚本
vim /usr/share/kolla-ansible/init-runonce
EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.1.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.1.200,end=192.168.1.254'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.1.1'}
8. 执行#这里需要执行pip install kolla-ansible==9.3.1 --ignore-installed PyYAML 不然报错依赖
pip install kolla-ansible==9.3.1 --ignore-installed PyYAML
sh /usr/share/kolla-ansible/init-runonce
10. 打开浏览器访问openstack-dashboard控制台
http://192.168.1.19/ admin 123456


11. 镜像上传
#node1上执行 1. 镜像下载
mkdir /root/qcow2
cd /root/qcow2
#百度云盘 链接:https://pan.baidu.com/s/1WK_VbWb-f9boOL2-QahIng
提取码:2021 #其它镜像 需要开通会员才能上传大于4G的文件........... 2. 格式转换
yum -y install qemu-img
qemu-img convert CentOS7.8_x86_64bit.qcow2 CentOS7.8_x86_64bit.raw 3. 镜像上传
source /root/admin-openrc.sh
openstack image create "CentOS 7.8 64位" --file CentOS7.8_x86_64bit.raw --disk-format raw --container-format bare --property hw_qemu_guest_agent=yes --property os_type=linux --public
4. 查看镜像是否成功
openstack image list
12. 准备工作

13. 创建实例测试



13. 后端ceph存储状态查看
docker exec -it ceph_mon ceph --version
docker exec -it ceph_mon ceph -s
docker exec -it ceph_mon ceph -w
docker exec -it ceph_mon ceph df
docker exec -it ceph_mon ceph osd tree
docker exec -it ceph_mon ceph osd perf

14. 卸载openstack集群环境
1.卸载openstack
kolla-ansible destroy -i /root/multinode --include-images --yes-i-really-really-mean-it 2.所有节点重启系统
reboot 3.所有节点硬盘格式化
dmsetup remove_all
mkfs.ext4 /dev/sdb 4.所有节点重新打ceph标签
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO1 1 -1
15. 如果集群设备意外关机,导致数据库集群挂掉。
5. mariadb服务异常
### 解决办法 ########## 停止所有mariadb容器 ##########
docker stop mariadb
########## 找到最后关闭的mariadb主机,如果不记得就随机选取一台或者根据/var/lib/docker/volumes/mariadb/_data/grastate.dat的seqno进行选取(越大优先级越高),然后修改其grastate.dat文件的safe_to_bootstrap参数 ##########
vim /var/lib/docker/volumes/mariadb/_data/grastate.dat
safe_to_bootstrap: 1
########## 修改mariadb容器启动命令后启动容器,查询日志保证mariadb服务正常启动 ##########
vim /etc/kolla/mariadb/config.json
"command": "/usr/bin/mysqld_safe --wsrep-new-cluster",
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
########## 启动其他节点的mariadb容器 ##########
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
########## 确保集群运行正常后,恢复最初修改的config.json(这样就保证集群中所有的mariadb容器都是平等的)##########
vim /etc/kolla/mariadb/config.json
"command": "/usr/bin/mysqld_safer", tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log 如果一切正常 不需要关闭mariadb
docker stop mariadb
docker start mariadb
tail -200f /var/lib/docker/volumes/kolla_logs/_data/mariadb/mariadb.log
自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构的更多相关文章
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...
- openstack pike 集群高可用 安装 部署 目录汇总
# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...
- 【高可用架构】开发机上部署Deploy项目(一)
准备 部署项目的细节可以看这个,传送门Centos 7部署Laravel项目 主机IP:192.168.10.17 [高可用架构]系列链接:待部署的架构介绍 演示 部署Deploy composer ...
- MySQL高可用架构-MMM环境部署记录
MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理 ...
- 理想的DevOp流程怎么做?看看Slack的代码部署实践 原创 Michael Deng 高可用架构 今天
理想的DevOp流程怎么做?看看Slack的代码部署实践 原创 Michael Deng 高可用架构 今天
- centos7.1使用kubeadm部署kubernetes 1.16.2的master高可用
机器列表,配置域名解析 cat /etc/hosts192.168.200.210 k8s-master1192.168.200.211 k8s-master2192.168.200.212 k8s- ...
- mysql高可用架构MHA搭建(centos7+mysql5.7.28)
无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql. 现在几乎所有的公司项 ...
- Rancher On K3s 高可用架构部署
Rancher 推荐部署架构 k3s 模式 RKE 和 k8s 模式 备注: 我对 RKE 的理解就是 Ansible + kubeadm 的打包,首先 rke 需要到每一个节点都可以免密 ssh , ...
随机推荐
- 16_MySQL聚合函数的使用(重点,建议大家多动手操作)
本节所涉及的SQL语句 -- 聚合函数 SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; -- SUM SELECT SUM(sal) FROM t_ ...
- JDK源码阅读-DirectByteBuffer
本文转载自JDK源码阅读-DirectByteBuffer 导语 在文章JDK源码阅读-ByteBuffer中,我们学习了ByteBuffer的设计.但是他是一个抽象类,真正的实现分为两类:HeapB ...
- clipse中mybatis的xml配置文件代码提示
编写mybatis的xml文件时,没有代码提示会很麻烦,是有解决办法的: 按下图打开 点击右上角的Add按钮,添加配置,配置如下,添加后点击OK: Location:http://mybatis.or ...
- JAVA基础(零)—— 踩坑与错误(常更)
JAVA基础(零)-- 踩坑与错误(常更) 1 坑 考虑输入为null的情况 自动转换 x/Math.pow(10,i)*Math.pow(10,i) //由于math.pow()返回double类型 ...
- 公钥基础设施PKI利用SRAM物理不可克隆函数PUF实现芯片标识唯一性
下面给出PKI利用SRAM PUF实现芯片标识唯一性的方法思路: PKI利用SRAM PUF实现芯片标识唯一性的方式 (1)使用PUF原因 物理上不可克隆函数利用硅制造的自然变化来产生每个芯片统计上唯 ...
- HDOJ-6685(暴力+思维)
Rikka With Coin HDOJ-6685 主要的思想如下: 首先10元的硬币最多只会用一个,如果用了两个,直接替换成一个10元.一个20元一定不亏. 20元的硬币最多只会用三个,如果用了四个 ...
- SpringMVC-01 什么是SpringMVC
SpringMVC-01 什么是SpringMVC 回顾MVC 1.什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑 ...
- 七种方案!探讨Redis分布式锁的正确使用姿势
前言 日常开发中,秒杀下单.抢红包等等业务场景,都需要用到分布式锁.而Redis非常适合作为分布式锁使用.本文将分七个方案展开,跟大家探讨Redis分布式锁的正确使用方式.如果有不正确的地方,欢迎大家 ...
- android底部导航栏小结
android自带的有TabHost,但好像无法满足要求, 本文只记录使用 TabLayout + Fragment 和 android 自带的 BottomNavigationView + Fra ...
- css3中的渐变效果
大家好,这里是demo软件园,今天为大家分享的是css3中的渐变效果. css3中的渐变需要注意的是渐变的是图片而不是颜色,而渐变又分为两种:线性渐变与径向渐变,今天我们重点介绍的是线性渐变. 1.线 ...





