运维前线:一线运维专家的运维方法、技巧与实践3.1 数据中心搬迁准备

简介:

第3章

数据中心搬迁中的x86自动化运维

作者简介

吴传玉,具有10年以上x86服务器平台系统管理经验,熟悉Windows及Redhat Linux系列运维,自2008年接触VMware虚拟化产品,获得RHCT、VMware VCP和HCNA认证。善于使用各类脚本工具编制日常运维的脚本。目前就职于某大型金融企业基础设施运维部门,负责容灾及研发测试环境x86整体运维工作。

本章主要介绍在大型数据中心搬迁的过程中,如何利用自行编制的各类脚本,低成本、高效率又准确地完成大量节点的逻辑搬迁工作。


3.1 数据中心搬迁准备


3.1.1 数据中心搬迁介绍

世间万物都存在着自身的生命周期,大到宇宙恒星的诞生与消亡,小到细胞从一次分裂完成开始到下一次分裂结束所经历的全过程,都离不开生命周期。

作为承载着公司核心竞争、运维能力的数据中心,也无法回避生命周期的问题。当数据中心的空间、电力等基础硬件无法支持公司业务需求的高速扩展时,公司的决策层势必会考虑采用更合理的方案,以满足日益增长的业务需求。第一种是在保持现有数据资源不变的情况下,建立第二个数据中心(非容灾中心);另一种是新建一个条件更优越的数据中心以替代旧的数据中心。

采用第一种方式,可以平滑地进行扩容,但从长远来看双倍的运维成本会加重公司的负担。如果采用第二种方式,虽然在搬迁过程中对基础层、应用层运维人员的要求相对较高,但从长远来看可为公司节省可观的运维开支,主要的成本仅在于一次性搬迁的方案所承担的开支。

大型金融企业中,基础运维人员相对于应用运维、开发人员、测试人员来说是属于更底层、更核心的角色。从整体运维的宏观结构来看,基础运维位于一个漏斗的底部出口位置,支撑着众多应用业务系统的基础需求。总结起来就是底层硬件架构多元化、需求种类多、运维量大,如果涉及搬迁则工作量更大更繁琐。

因我主要负责的是x86平台的非生产环境日常运维工作,且正参与数据中心的搬迁项目。故本章将从系统层基础运维人员的角度出发,介绍在大型数据中心搬迁的过程中,如何自行编制脚本,从而降低成本、高效准确地完成大量节点的逻辑搬迁工作。

首先介绍一下物理搬迁与逻辑搬迁的对比。

数据中心的搬迁一般分为两类:物理搬迁和逻辑搬迁。

如果物理设备及其上的逻辑节点数量少且搬迁距离较短,对可用性的要求不高,能够进行短期的停机,那么这种小型数据中心,一般较适用于同城数据中心的物理搬迁。

如果涉及的节点数量多且搬迁距离较长,对可用性要求较高,无法满足短期停机的要求,则需要考虑逻辑搬迁。

3.1.2 搬迁环境介绍

此次我所参与的搬迁存在诸多制约因素,如硬件种类繁多、应用关联性大、搬迁周期短、搬迁成本缩减等。基于以上现状分析,最终确定按应用环境,逐批次实施逻辑搬迁。

搬迁批次的定义如表3-1所示。

表3-1 搬迁批次定义

批次 搬迁环境 资源准备及搬迁思路

1 容灾环境 ①新购计算资源放置在目标数据中心,预先完成虚拟化环境的部署

②新购存储放置在源数据中心,通过存储复制技术完成灾备逻辑节点的复制。将完成复制的新存储物理搬迁至目标数据中心,释放之上的逻辑节点至新购计算资源,完成后续配置

注意:由于节点量大,通过广域网链路进行存储复制对带宽的要求相当高,故采用局域网内完成存储复制的工作

2

研发环境

①利用批次1中已完成逻辑迁移的存储资源,通过存储复制技术完成研发测试环境逻辑节点的复制。将批次1留下的计算资源与完成研发测试环境复制的存储资源物理搬迁至目标数据中心,释放之上的逻辑节点,完成后续配置

②对批次2中研发测试环境已完成逻辑搬迁的计算与存储资源进行物理搬迁,补充至目标数据中心

注意:循环利用上批次释放的物理资源进行后续批次搬迁,可以有效地控制硬件成本

 

3.1.3 搬迁前的准备工作

搬迁过程不仅仅是物理设备位置的改变,还需要对虚拟化层及各个节点内的参数进行调整。由于金融企业的环境特殊,公司安全部门禁止自行配置自动化运维管理工具,因此只能利用现有的技术做文章了。

在此次迁移过程中,我利用了平时运维常用的一些系统自带的脚本工具。

这些工具分为三类,其中有用于虚拟化层的工具vCLI、PowerCLI,有用于Linux环境的Bash,还有用于Windows环境的批处理、WMIC和注册表。

vCLI:vSphere CLI,命令行管理接口。

PowerCLI:VMware vSphere PowerCLI,是一款功能强大的命令行工具,可自动执行vSphere的各方面管理,包括主机、网络、存储、虚拟机、客户操作系统等。

Bash:Bourne-Again Shell,是一个为GNU计划编写的Unix Shell,是许多Linux发行版的默认Shell,Bash的命令语法是Bourne Shell命令语法的超集。数量庞大的Bourne Shell脚本大多不经修改即可在Bash中正常执行。

批处理:Batch,也称为批处理脚本。顾名思义,批处理就是对某些对象进行批量处理,通常被认为是一种简化的脚本语言,它一般应用于DOS和Windows系统中。批处理文件的扩展名为bat。

WMIC:WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具),提供了对从命令行接口和批命令脚本执行系统管理的支持。

注册表:Registry,是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。

3.1.4 搬迁信息收集

俗话说“九层之台,起于垒土”,因此对于搬迁来讲,基础信息至关重要。我们需要准确掌握现有搬迁环境所涉及的所有物理与逻辑信息,才能更好地完成搬迁任务。因此搬迁的首要任务就是收集所有的资源信息。

1.?计算资源信息收集

作为目标端新设备的配置依据,应收集(包含但不限于)如下信息:型号、序列号、CPU、MEM、硬件管理IP、HBA WWN号。

编辑文件/tmp/getESXIinfo.sh,保存内容如下:

# 获取物理设备型号

xh=`esxcli hardware platform get | grep "Product Name" | awk -F: '{print $2}'`

# 获取物理设备序列号

SN=`esxcli hardware platform get | grep "Serial Number" | awk -F: '{print $2}'`

# 获取物理CPU个数

cpunum=`esxcli hardware cpu list | grep "CPU:" | wc -l`

# 获取物理内存容量(以GB计算)

mem=`esxcli hardware memory get | grep "Physical Memory" | awk -F" " '{print

$3}'`

TotalMem=` expr $mem / 1024 / 1024 / 1024 `

# 获取硬件管理IP

vmkip=` esxcli network ip interface ipv4 get | grep vmk0 | awk '{print $2}'`

#获取HBA WWN信息

wwn=`esxcli storage core adapter list | grep link-up | awk -F: '{print $2}'

| awk '{print $1}'`

wwn1=`echo $wwn | awk -F" " '{print $1}'`

wwn2=`echo $wwn | awk -F" " '{print $2}'`

echo $xh,$SN,$cpunum,$TotalMem,$vmkip,$wwn1,$wwn2 >/tmp/$vmkip.csv

可将以上脚本文件上传至所有ESXI系统,以备批量收集信息之用。图3-1为显示结果。

 

图3-1 显示结果

2.?存储资源信息收集

基于现有x86环境对ESXI主机通过FC和FCoE协议分配外挂存储,因此目标数据中心仍保持原有架构不变,数据传输采用基于同构存储的LUN COPY方式。

首先需要确定哪些LUN COPY盘在目标端会挂给哪些ESXI主机,需要收集的信息如下:

目标ESXI IP

逻辑卷名

存储naa号(WWN号)

因为同一组中的外挂存储盘是通过共享的方式同时映射给同一群集内的多台ESXI主机的,所以只需要对同一群集中的一台ESXI进行操作即可。

命令收集信息如下:

esxcli storage vmfs extent list | sort $1 | awk '{if($5==1){print $1 "," $4}}'(注:

1 表明是外挂盘,3 表明是内置盘)。

以下为同一群集内某台ESXI的外挂存储盘的逻辑卷名及存储号,如图3-2所示。

 

图3-2 ESXI的外挂存储盘逻辑卷名及存储号

3.虚拟网络信息收集

虚拟网络信息的收集,对于在新环境中每台ESXI需要分配多少个逻辑上联口、多少vSwitch和网段VLAN的定义至关重要。

因此我们编辑以下/tmp/getnetworkinfo.awk文件,用于收集现有ESXI的vSwitch Name、Uplinks(上联口)和Portgroups信息。

文件内容如下:

$1 ~ /Name:/ {print $1,$2}

$1 ~ /Uplinks:/ {print $0}

$1 ~/Portgroups:/ {print $0}

我们编辑并执行以下/tmp/getnetworkinfo.sh文件,该文件会将getnetworkinfo.awk文件作为执行的过滤参数。

文件内容如下:

esxcli network vswitch standard list | awk –f /tmp/getnetworkinfo.awk

接下来就可以根据整理的各类信息完成后续逻辑迁移所需要的自动配置了。


相关文章
|
2天前
|
消息中间件 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的融合实践
【5月更文挑战第9天】随着云计算和微服务架构的普及,自动化运维成为确保系统可靠性和效率的关键。本文将深入探讨如何通过Ansible和Kubernetes的集成,构建一个强大的自动化运维体系。我们将分析Ansible的配置管理功能以及Kubernetes容器编排的优势,并展示如何将二者结合,以实现持续部署、快速扩展和高效管理现代云原生应用。文章还将涵盖实际案例,帮助读者理解在真实环境下如何利用这些工具优化运维流程。
|
4天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Ansible的策略与实践
【5月更文挑战第8天】 在当今IT基础设施管理领域,自动化不再是一个选择,而是必要的步骤。随着复杂性的增加和变更的频繁性,自动化工具如Ansible提供了一种高效、可靠的解决方案来简化配置管理和多节点部署。本文将探讨如何利用Ansible构建一个高效的自动化运维体系,涵盖其核心原理、策略设计以及在实际环境中的应用。我们将分析Ansible与其他自动化工具的不同之处,并提供一些最佳实践,以帮助运维专家提升他们的工作效率和系统稳定性。
|
6天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器化技术融合实践
【5月更文挑战第6天】随着企业IT架构的复杂化以及快速迭代的市场需求,传统的运维模式已难以满足高效率和高质量的交付标准。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系,旨在实现持续集成、持续部署和自动化管理,提升系统的可靠性、可维护性和敏捷性。
|
6天前
|
存储 机器学习/深度学习 运维
提升数据中心能效:现代运维策略与实践
【5月更文挑战第6天】 在数字化时代,数据中心作为信息处理的核心设施,其能源消耗和环境影响成为业界关注的焦点。本文将探讨如何通过现代运维策略和技术手段提升数据中心的能效,同时保证系统的可靠性和服务的连续性。文章将详细分析数据中心能耗的主要来源,介绍先进的能效优化措施,并通过案例分析展示这些措施的实际效果,为数据中心管理者提供实用的能效改进建议。
|
11天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
11天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
11天前
|
机器学习/深度学习 运维 监控
构建高效自动化运维体系:从理论到实践
【4月更文挑战第30天】 在信息技术日益发展的今天,自动化运维已经成为提高系统稳定性、优化资源配置和降低人力成本的关键。本文旨在探讨如何构建一个高效的自动化运维体系,涵盖从初步规划到具体实施的全过程。文章首先分析了自动化运维的必要性,接着提出一套完整的构建方案,并详细阐述了关键技术与工具的选择和应用。通过案例分析,验证了所提方案的有效性,并对自动化运维的未来趋势进行了展望。
|
11天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第30天】 在现代IT基础设施管理中,自动化运维不再是可选项而是必需品。随着复杂性的增加和变更的频繁性,自动化可以提高效率、减少错误并释放人员专注于更有价值的任务。本文将探讨构建一个高效的自动化运维系统的关键环节,包括工具选择、流程设计以及监控和优化策略。通过案例分析和最佳实践分享,读者可以获得实施自动化运维的实用指导和启发。
|
12天前
|
人工智能 运维 监控
构建高效自动化运维体系:DevOps与AI的融合实践
【4月更文挑战第30天】 在当今快速迭代的软件开发环境中,高效的自动化运维体系成为确保交付速度和服务质量的关键。本文探讨了如何通过整合DevOps理念和人工智能(AI)技术来构建一个更加智能、高效的运维体系。文章将详细阐述自动化运维的核心组件,以及如何利用AI技术优化这些组件的性能和决策过程。通过实际案例分析,本文展示了这种融合实践在提高运维效率、降低错误率以及提升系统稳定性方面的显著成效。
|
8月前
|
缓存 运维 Linux
Linux(CentOS)运维脚本工具集合
Linux(CentOS)运维脚本工具集合
155 2