热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

KVM虚拟机环境与高可用

KVM是成熟的开源虚拟化解决方案,将其部署于企业生产环境,其高可用性也是必须要仔细考虑的问题。高可用性(HighAvailability)是指系统提供不间断服务的能力,也就是尽可能的减少系统停止服务的时间。KVM虚拟化环境也存在HA的问题,KVM主机软硬件或外部环境都有

KVM是成熟的开源虚拟化解决方案,将其部署于企业生产环境,其高可用性也是必须要仔细考虑的问题。

高可用性(High Availability)是指系统提供不间断服务的能力,也就是尽可能的减少系统停止服务的时间。KVM虚拟化环境也存在HA的问题,KVM主机软硬件或外部环境都有可能出现问题甚至是灾难,这就必须要考虑一些高可用方案。

KVM高可用方案无非就是如何能最大限度的让客户机保持正常运行。目前想到的HA方案有如下几个。

1、DRBD

DRDB(Distributed Replicated Block Device),可以直译为"分布式复制块设备",其工作方式为通过网络来镜像块设备,可以称其为网络RAID1(Network RAID1)。 DRDB在本地接受IO请求,除了将数据写入本地硬盘外,还会通过网络发送给另一主机,另一主机将其写入自己的本地硬盘,从而保持两台主机的块设备实时同步。

从kernel 2.6.33开始DRDB已经进入mainline。DRBD 9.0之前只能将数据复制到一个节点,9.0之后将提供复制到多个节点的能力。

通过与heartbeat结合可以做到自动的failover,从而达到高可用性。

DRBD是一种通用解决方案,KVM虚拟化环境完全可以使用这一高可用技术。

2、Sheepdog

Sheepdog是专为QEMU/KVM开发的分布式块存储系统。它可以提供QEMU/KVM可以直接挂接使用的高可用块级存储卷。Sheepdog可以扩大到上百个节点,并且支持高级卷管理特性,比如快照、克隆、thin provisioning等。它是针对KVM的专用集群存储方案。

这玩意儿听起来真像那么一回事儿,但目前版本为0.3.0,成熟度貌似还很不够。不过很看好这项目。

3、双机

双机共享存储,但这种方式仍然存在单一故障点,那就是存储,所以这种方式并不是一种很好的方式,虽然存储的可靠性比主机要高的多。

目前正在采用这种方式,两台服务器分别通过多路径连接到共享的磁盘阵列,但同一时刻只能有一台服务器挂载磁盘阵列。因为磁盘阵列使用的是ext4文件系统,这种单机文件系统是不支持两台主机同时访问的,会造成数据混乱,甚至文件系统崩溃。

KVM客户机客户机磁盘镜像文件和启动KVM客户机的命令脚本都放在共享存储上面,当正在使用磁盘阵列的主机出现故障时,可以使用备机挂载磁盘阵列来运行KVM客户机。因为有了共享存储,也可以通过NFS来做客户机的动态迁移,即V2V热迁移,客户机可以在几乎没有任何中断的情况下从一台主机迁移到另一台主机。

因为存储是单一故障点,所以有必要经常备份KVM客户机。但目前KVM客户机还不能热备份,也就是要想完整备份客户机,只能将客户机停掉,然后拷贝其磁盘镜像文件。显然这样太麻烦了。

热备份的问题可以通过文件系统快照来间接实现。ext4不支持snapshot,ZFS是更好的选择。ZFS on linux是ZFS到linux的原生移植,以内核模块的方式来绕过license限制。通过ZFS给文件系统做快照,然后将快照传输到远程主机,来间接的实现KVM虚拟机的热备份。

近期会测试这种方式,ZFS on linux 现在的版本为0.6.0-rc8,不知道稳定性如何!

当然还有一种备份方式,现在的磁盘阵列大部分提供一种功能叫做远程卷镜像RVM(remote volume mirroring)的特性,但这种方式有许多缺点,比如硬件投资高,灵活性差,而且RVM会忠实的镜像一切数据,包括错误,一旦原卷数据损坏,可能远程镜像卷也会无法使用,如果RVM能提供事务支持就更好了,当然也有阵列提供snapshot功能。但是能用软件方案解决的问题还是尽量不要用硬件解决方案。

总结

总的来说,使用DRBD或Sheepdog是更好的解决方案,Sheepdog还不太成熟,也许DRDB是目前一个很好的选择。双机热备这种古老的技术其实并不灵活也不十分可靠,集群才是高可用和高性能的方向。


推荐阅读
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
author-avatar
AndreaDittis
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有