kvm+glusterfs+pcs分布式存储构建kvm高可用群集。

news2025/1/12 8:53:18
  • kvm+glusterfs+pcs分布式存储构建kvm高可用群集。

    • 高可用指能在短时间内自动完成故障转移,kvm在实现故障自动转移的方式如果要考虑速度那么基于共享存储的迁移方法无疑是最快的。而共享存储的高可用就可以用glusterfs来实现。

      • glusterfs可以利用分布式复制卷兼顾了性能与容错。其全局统一命名空间与无元数据架构也是不可多得的优势。

    • 话不多说进入实验

      • 拓扑

        • 目标1:部署glusterfs文件系统,实现kvm基于共享存储的动态迁移。

        • 目标2:实现kvm虚拟机主机的故障自动切换

          • 通过pcs实现

      • 部署glusterfs群集

        • 关闭所有节点的防火墙与内核安全机制

        • 修改hosts文件添加域名节点信息(全部节点)

          • 192.168.10.101 node1 192.168.10.102 node2 192.168.10.103 node3 192.168.10.104 node4 192.168.10.201 kvm01 192.168.10.202 kvm02

        • 联网安装glusterfs软件(全部节点)

          • yum -y install centos-release-gluster

            • 安装完成过后修改其yum仓库的配置文件,将国外源替换为国内源。

          • yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

            • 最后确保安装包在15个或以上

          • 所有glusterfs节点都启动该服务并永久启动

            • systemctl start glusterd.service && systemctl enable glusterd.service

        • 添加节点信息(单个节点)

          • gluster peer probe node2:以此类推,不添加自己的

          • 最后在其它节点能查看除自己外的其他节点

            • gluster peer status

        • 创建brick目录,为了方便本案例采用系统自带的,实际环境中要单独创建brick挂载目录。

          • mkdir /data

        • 创建分布式复制卷

          • gluster volume create models replica 2 node1:/data node2:/data node3:/data node4:/data force

        • 最后启动并查看卷信息

          • gluster volume start models

          • gluster volume info models

      • kvm实现基于共享存储的动态迁移

        • kvm服务器需要安装gluster客户端软件

          • yum -y install glusterfs glusterfs-fuse

        • 创建并挂载和永久挂载glusterfs目录

          • mkdir /kvmdata

          • mount -t glusterfs node1:models /kvmdata/

          • echo “node1:models /kvmdata glusterfs defaults,_netdev 0 0">>/etc/fstab

          • df -h 查看

        • 在kvm01上安装虚拟机

          • 准备好centos官方提供的qcow2格式的系统镜像

            • (CentOS-7-x86_64-GenericCloud-2009.qcow2)

          • 将其拷贝到共享目录中为了后续命令的方便进行重命名

            • cp CentOS-7-x86_64-GenericCloud-2009.qcow2 /kvmdata/test01.qcow2

          • 可以选择为该镜像文件设置root密码

            • virt-customize -a /kvmdata/test01.qcow2 --root-password password:aptech

          • 执行安装动作

            • virt-install --name=test01 -r 1024 --vcpus=1 --disk device=disk,bus=virtio,path='/kvmdata/test01.qcow2',size=10 -w bridge:br0 --virt-type=kvm --boot hd

          • 最后利用virt-manager进行登录测试查看虚拟机是否能正常运行

        • 配置kvm01与kvm02的无密码登录环境两台机可同步进行

          • ssh-keygen -t rsa

          • ssh-copy-id kvm01

          • ssh-copy-id kvm02

        • 最后进行迁移测试,验证两端各自的迁移是否能成功

          • virsh migrate --persistent --undefinesource test01 qemu+ssh://kvm02/system

          • 查看状态

            • virsh list --all

          • 分别验证kvm01的迁移效果与kvm02的迁移效果

      • 实现高可用环境

        • 前提准备

          • 在共享目录中创建虚拟机资源目录,将配置文件也拷贝到共享资源目录

            • mkdir /kvmdata/config

            • cp /etc/libvirt/qemu/test01.xml /kvmdata/config/

              • 这一步利用导出也可以

                • virsh dumpxml test01 >/kvmdata/config

          • 重新定义虚拟机使之使用共享目录的配置文件

            • virsh shutdown test01

              • 关机才能被取消定义

            • virsh undefine test01

            • virsh define /kvmdata/config/test01.xml

            • virsh start test01

              • 最后启动并验证登录状态,要求不但是running状态,利用virt-manager要看到登录界面。

        • 群集管理工具部署

          • 如果要加入到该群集都需要安装该组件

          • 设置好阿里网络资源并安装软件包

            • yum -y install pcs pacemaker fence-agents-all

              • pacemaker

                • 一个集群管理器,利用openAIS或hearbeat提供的消息和成员能力,由辅助接点和系统进行故障检测和回收,实现资源的高可用性。

              • fence-agents-all

                • 集群管理的概念,发生电源故障或其他故障时确保集群的稳定运行。

              • pcs

                • 一个集群管理的守护进程,利用pcs提供的工具对集群配置以及状态进行管理。

          • 安装完毕后会自动生成一个hacluster的用户,需要为该用户设置密码,为后续加入集群做验证提供凭证。

            • passwd hacluster 本案例密码为:aptech

          • 最后启动该服务

            • systemctl enable pscd --now

          • 单节点操作

            • pcs cluster auth kvm01 kvm02 -u hacluster -p aptech

              • 加入集群认证

            • pcs cluster setup --name chluster-kvm kvm01 kvm02

              • 设定集群名称

            • 最后启动

              • pcs cluster start --all

                • 启动所有节点

              • pcs cluster enable --all

                • 所有节点开机自启

            • pcs status

              • 查看集群信息状态

            • 关闭设备隔离

              • pcs property set stonith-enabled=false

                • 当设备硬件不一样时,开启此功能可以忽略不同硬件带来的设备差异性

            • 添加资源

              • pcs resource create test01 VirtualDomain hypervisor=”qemu:///system“ config=”/kvmdata/config/test01.xml“ migration_transport=ssh meta allow-migrate=”true“

            • 再次查看资源状态

              • pcs status

                • 注意是否有资源

            • 迁移前的准备工作

              • 清除资源限制

                • pcs resource clear test01

                  • 清空针对test01的资源限制

                • pcsconstraint

                  • 查看资源限制

                    • Location Constraints: Ordering Constraints: Colocation Constraints: Ticket Constraints:

                      • 冒号后无内容表示没有资源限制

                • 当虚拟机迁移后会出现资源限制,因此要清除资源限制才能继续迁移。

            • 最后可以尝试验证迁移功能

              • pcs resource move test01

                • 手动迁移

              • 挂起运行虚拟机的主机验证是否会转移

                • 挂起后重新恢复虚拟机会显示还在运行,必须重启才能验证

复制以上内容到xmind即可实现条理性笔记。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解RocketMQ之消费者如何进行消息重试

大家好,我是苍何。 在上一篇[[图解RocketMQ之生产者如何进行消息重试]]中分析了当生产者发送消息失败的时候,RocketMQ 是如何进行重试的。 最后留了一个问题,生产端的消息是重试 hold 住了,但如果消费者出现异常,消费…

leetcode53. 最大子数组和(java实现)

今天分享的题目是leetcode53题 本题的解题思路:贪心算法。 举个例子: nums [-2,1,-3,4,-1,2,1,-5,4],如果说我们的累加和是负数那么就将其舍弃,换下一个位置从新进行累加,因为如果目前我们的累加和如果是负数那么还不…

Zotero的探索之路

下载安装 Zotero | Downloads:点击链接,不仅要下载软件本身,也要下载浏览器connector,这样就方便从网页抓取论文到zotero本地了,浏览器是使用插件导入下载包即可 导入文献方法 zotero自动下载(推荐&#…

C 语言快速排序算法

升序排序 /*快速排序算法排序规则 */ int32_t CmpCb(const void* _a, const void* _b) {uint16_t* a (uint16_t*)_a;uint16_t* b (uint16_t*)_b;int32_t val 0;if (*a > *b){val 1;}else if (*a < *b){val -1;}else {val 0;}return val; }int main() {// 创建局部…

c++----类与对象(下)

当我们简单的学习了上一篇日期类。简单的理解并且使用了我们前面学习的知识。当然这还只是我们c的九牛一毛。并且我们的类与对象的知识还没学习完。今天我们来把类与对象的知识完善一下。 初始化列表 那么今天我们就不讲废话了&#xff0c;我们直接来主题。首先我们可以看到我…

大型语言模型入门

大型语言模型 快速、全面了解大型语言模型。学习李宏毅课程笔记。 ChatGPT 目前由OpenAI公司发明的非常火的人工智能AI应用ChatGPT&#xff0c;到底是什么原理呢&#xff1f; G&#xff1a;Generative(生成) P&#xff1a;Pre-trained(预训练) T&#xff1a;Transformer(一种…

手把手教你如何在Linux上轻松安装Python,告别编程入门难题

导语&#xff1a; Python作为当下最热门的编程语言之一&#xff0c;受到了越来越多人的喜爱。对于Linux用户来说&#xff0c;掌握如何在Linux上安装Python至关重要。今天&#xff0c;就让我带领大家一步步在Linux上安装Python&#xff0c;让你轻松迈入编程世界&#xff01; 一…

MATLAB(7)潮汐模型

一、前言 在MATLAB中模拟潮汐通常涉及到使用潮汐的理论模型&#xff0c;如调和常数模型&#xff08;Harmonic Constants Model&#xff09;&#xff0c;它基于多个正弦和余弦函数的叠加来近似潮汐高度随时间的变化。以下是一个简化的MATLAB代码示例&#xff0c;用于模拟一个基于…

centos在线安装部署2024年最新的docker版本

1.yum 包更新到最新 sudo yum update -y2.安装依赖软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23.添加阿里的镜像&#xff0c;下载镜像速度比较快 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/dock…

docker compse简介与安装

目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…

【跨时代】第四次工业革命彻底来袭!什么是AI+

你有没有一种很割裂的感觉&#xff0c;就是在短视频里&#xff0c;AI已经要改变全世界了 但自己一用&#xff0c;却发现只能和AI聊聊天 画几张图 难道是姿势不对&#xff1f;但具体是哪里不对呢。 作为一个老牌程序员&#xff0c;我前面分享了很多计算机相关内容&#xff0c;总…

java基础概念06-原码、反码、补码

一、八位二进制的取值范围&#xff08;没有符号位&#xff09; 二、原码 三、反码 若是反码的计算结果跨0了&#xff0c;则会溢出&#xff0c;计算结果又误差&#xff01; 原因&#xff1a;在反码当中0有两种表现形式&#xff1a; 解决方式&#xff1a;将反码中的两个0&#x…

SSM大学生体质管理系统-计算机毕业设计源码75960

摘要 基于SSM的大学生体质管理系统是一款综合性平台&#xff0c;融合了在线课程、健康知识、体测报告等多项功能&#xff0c;旨在为广大大学生提供全方位的健康管理服务。通过在线课程和健康知识模块&#xff0c;用户可以随时学习健康知识&#xff0c;掌握科学的健康管理方法&a…

推荐一个比较好的开源位置服务平台

平台简介 一直想做一款后台管理系统&#xff0c;同时可以管理人&#xff0c;车&#xff0c;物品&#xff0c;猫&#xff0c;狗&#xff0c;牛羊等一切可以移动的室外事物进行集中化管理&#xff0c;最初的需求聚焦——谁在哪儿&#xff01; 系统框架是基于当前最常用的RuoYi框架…

C# 设计模式之创建者模式

总目录 前言 在软件系统中&#xff0c;有时需要创建一个复杂对象&#xff0c;并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中&#xff0c;如果需要采购员去采购一批电脑时&#xff0c;在这个实际需求中&#xff0c;电脑就是一个复杂的对象&…

DVWA (SQL注入 low)

&#xff08;1&#xff09;判断注入是字符型还是数值型 判断恒为真&#xff0c;字符型&#xff0c;输出ures表中全部用户信息。 1 or 123 123 # &#xff08;2&#xff09;猜测SQL查询字段数 1后面加 闭合 id 查询的 &#xff0c;末尾加# 是注释了后面 的内容&#xff…

LLM智能体工程落地思考(一)

人工智能领域著名教授吴恩达在今年3月份红杉资本的人工智能峰会(AI Ascent)以及最近Snowflake峰会开发者日上都发表了关于AI Agent(人工智能体)的演讲。演讲中&#xff0c;其分享了对AI Agent未来发展潜力的展望。认为AI Agent能够让人工智能胜任更多种类的任务&#xff0c;甚至…

STL源码刨析:树的导览

目录 1.前言 2.关联式容器 3.二叉搜索树 4.平衡二叉搜索树 前言 在阅读了STL源码刨析系列的前几章&#xff0c;我们可以知道容器分为序列式容器和关联式容器。在前几个小节中&#xff0c;我们对序列式容器中的vector和list容器进行了讲解&#xff0c;并比较了vector和list的区别…

学习记录——day24 多线程编程

目录 多线程局部概念 线程支持函数&#xff08;多线程编程&#xff09; pthread_create&#xff1a;创建线程 pthread -self&#xff1a;线程号获取 pthread_exit&#xff1a;线程退出函数 pthread_jion&#xff1a;线程资源回收 pthred_detath&#xff1a;线程分离态 p…

检索增强生成(RAG):智能内容生成的新纪元

引言 在大 AI 时代&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;模型&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;&#xff0c;已经展现出了令人瞩目的能力。然而&#xff0c;这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…