游客发表
一台物理服务器,虚拟装上一套虚拟化软件,化集就能同时跑十几台甚至几十台虚拟机——这件事听起来像变魔术,群服但它是虚拟现代数据中心最基础的日常。我见过一个机柜,化集里面塞了四台两路服务器,群服每台跑着二十多个虚拟机,虚拟支撑着一家两百人公司的化集全部业务系统。这在十五年前需要整整一个机房才能做到。群服
虚拟化集群的虚拟核心逻辑不复杂:把CPU、内存、化集存储、群服网络这些物理资源抽象成资源池,虚拟再按需切分给虚拟机使用。化集但单台物理机做虚拟化有个致命问题——它挂了,群服上面所有虚拟机全完。集群就是来解决这个问题的。几台物理机通过网络连在一起,共享存储或使用分布式存储,再配合HA(高可用)机制,某台机器宕机后,上面的虚拟机可以在几分钟内自动在其他节点上重启。用户端感受到的,可能只是几秒钟的卡顿。
我印象很深的一次故障:某台ESXi主机的主板突然烧了,上面跑着一台SQL Server和两台Web服务器。vSphere的HA在四分钟内把这三台虚拟机在另一台主机上拉了起来。业务部门甚至没来得及打电话报障。这就是集群的价值——它不追求单机永不故障,而是假设故障必然发生,然后让恢复过程自动化。
但集群不是没有代价的。共享存储往往成为新的单点。我见过一个团队花大价钱买了全闪存阵列做共享存储,结果阵列的控制器固件有bug,两次导致整个集群的虚拟机全部挂起。后来他们换成了vSAN这种分布式存储,把每台主机本地的硬盘组成一个存储池,虽然性能略逊于专业阵列,但至少没有独立的存储单点。这个取舍很典型:你永远在性能和可靠性之间做选择。
另一个容易被忽视的问题是资源争抢。集群的资源池看起来是弹性的,但物理上限摆在那里。一台主机64GB内存,跑了30台虚拟机,平均每台2GB,看似合理。可一旦某台虚拟机突然要吃8GB,内存气球机制和交换文件就开始工作,整台主机的性能都会受影响。我习惯在集群里保留至少20%的CPU和内存余量,不是浪费,是给突发情况留缓冲。
网络配置也经常被低估。vMotion、iSCSI、虚拟机流量如果跑在同一个物理网卡上,迁移虚拟机时网络延迟会飙升。比较稳妥的做法是至少两块万兆网卡做冗余,管理、迁移、存储、业务流量用VLAN隔开。听起来麻烦,但出过一次网络风暴导致整个集群失联的事故后,你就会觉得这些隔离规则是值得的。
集群规模也不是越大越好。我见过一个集群塞了32台主机,结果vCenter管理界面卡得不行,HA的选举时间也变长。一般来说,8到16台主机一个集群是比较舒服的范围。超过这个数,管理复杂度和故障域都会上升,不如拆成多个集群。
虚拟化集群服务器说到底是一种妥协的艺术。它用软件层的复杂性换取了硬件层的高可用,用资源池的灵活性换取了单机性能的确定性。没有完美的配置,只有适合当前业务负载和团队能力的配置。每次规划集群时,我都会问自己:如果现在坏掉一台主机,业务能撑多久?答案决定了你该买多少冗余。
友情链接