zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-03-09 22:22:00 时间

第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

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