开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

记一次Linux物理服务器迁移总结

简介:
+关注继续查看

    两天前我们对生产系统中的两台服务器做了在线迁移,因此在此想总结一下迁移前后发生的一些事情和获得的经验教训。本着专业做事的风格,在此前后我阅读了微软和红帽官方的一些迁移指南,但发现实用的部分并不是特别多,因此在参考了微软和红帽的迁移指南后我决定自己一篇符合当前场景的服务器迁移“指南”,仅供参考。    
    迁移背景:      
    两台服务器由于要挪作它用(可以理解为服务器硬件升级,新的服务器硬件比旧的服务器性能要好,如更强劲的CPU、内存和存储),因此要把原先的两台服务器迁移到新的两台服务器上。由于白天活动用户数量比较多导致每一台服务器的并发数较高,因此要在夜间进行迁移(后面会讲到如何避免这种情况)     
    一些迁移的相关概念:      
    系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化,因此如果是虚拟化环境,那就简单的多了,因为虚拟机可以认为是无状态的计算。     
    一些迁移原则:

    1. 尽量不中断业务,不影响用户使用,如果影响用户使用,则应该告知用户做好接受和准备    
    2. 服务器硬件资源要统一,如硬件架构、芯片组、处理器等     
    3. 系统软件运行环境要尽可能保持一致     
    4. 用最合适的人去做这件事情,有问题及时沟通

    一些迁移指标:

    1. 整体迁移时间:从源主机开始迁移到迁移结束的时间    
    2. 停机时间:迁移过程中,源主机、目的主机同时不可用的时间     
    3. 对应用程序的性能影响:迁移对于被迁移主机上运行服务性能的的影响程度。

    一个优秀的迁移工具,目标是最小化整体迁移的时间和停机时间,并且将迁移对于被迁移主机上运行服务的性能造成的影响降至最低。当然,这几个因素互相影响,实施者需要根据迁移针对的应用的需求在其中进行衡量,选用合适的工具软件。对于Linux系统的迁移,由于是开源系统,因此可以借助一些开源工具和脚本,手动迁移系统,这种方法要求负责实施迁移的管理员必须具有相关经验,并且对物理机中运行的Linux系统非常熟悉。    
    迁移的整体步骤以及流程:

    1. 准备迁移

        1). 收集源主机硬件信息与软件环境等信息,准备与源主机的相关软硬件文档    
        2). 依据上述信息和文档将目标主机配置成与源主机相同的软件环境(服务器硬件资源统一的条件下)     
        3). 测试上述配置结果(测试方法参考验证迁移)     
        4). 以上工作在迁移前做好

    2. 实施迁移

        1). 提前通知相关人员,做好迁移准备    
        2). 切换网络参数,如切换IP等     
        3). 关闭源主机上的业务应用程序     
        4). 启动目标主机上的业务应用程序     
        5). 重新启动或平滑重启相关主机运行的关联服务     
        6). 迁移当天完成

    3. 验证迁移

        1). 自测迁移结果    
        2). 请其他人员测试迁移结果,如研发团队或测试团队的相关人员     
        3). 迁移当天完成

    4. 迁移后任务

        1). 汇报通知到相关负责人    
        2). 汇报通知到相关用户     
        3). 更新相关文档和记录

    5. 完成迁移(同“迁移后任务”)    
    6. 回滚

        1). 重新切换网络参数,如切换IP等    
        2). 关闭目标主机上的业务应用程序     
        3). 启动源主机上的业务应用程序     
        4). 更新相关主机运行的关联服务的配置文件等,重新启动相关主机运行的关联服务     
        5). 修正问题,准备下一次迁移

    应用切换/迁移的注意点:

    1. 有一些应用程序因为实施之前需要测试,但启动后可能跟生产环境中的一些服务器有冲突,例如消息处理应用程序可能会与其他消息处理程序争夺消息队列中的消息,因此测试时需要注意消除这种可能存在的冲突问题,这也要求应用程序需要尽可能的松耦合,尽可能的模块化,以便于更改。    
    2. 迁移过程中,启动目标主机上的业务应用程序,必须关闭源主机上的业务应用程序,反之亦然     
    3. 无论哪种切换,尽量做到无遗漏,事事巨细

    下面列举一下Linux系统迁移过程中需要注意和考虑的地方:

    1. 整理迁移列表。

        1). 包括源主机操作系统名称,版本,主机名称,环境变量,驱动程序,进程,安装的软件,安装的服务,防火墙,内核参数,安全设置,用户配置,证书密钥,文件权限等系统基础环境    
        2). 根据进程名、端口号、防火墙配置,或者找到系统维护管理日志,根据文档查找当前服务器正在提供的服务,服务的安装手册、服务依赖的软件环境     
        3). 根据文档或者源主机当前的网络连接状态,主要是使用源主机的内网地址的相关主机,例如找到代理源服务器的相关主机,留意这些代理主机上的配置,如固定写好内网IP,域名信息等,需要一起更改,典型的例子就是nginx、HAProxy反向代理     
        4). 一些较为特殊的文件目录,软件编译目录,/etc/profile,~/.bash_profile,/etc/rc.local,~/.profile,~/.ssh,/etc/fstab,/etc/hosts,/etc/sysconfig等等     
        5). 如果迁移项目或步骤过多,可以做成相应的列表,便于对照参考,和防止遗漏,可参考附录

    2. 准备目标主机。

        1). 采用手动(可以逐条操作也可以编写脚本等)的方式,将目标主机配置成与源主机尽可能相同的软件环境测试目标主机

    3. 切换网络参数。如果只是切换公网IP,不切换内网IP,由于内网IP可能会做一些网络内部的耦合,因此需要注意其他相关主机

    迁移总结:

    1. 文档化标准化的实施很重要,尽管也许很辛苦很累,但要尽可能去做    
    2. 已经发生的变更需要及时修改相关文档和告知相关人     
    3. 部署规范化,如固定的编译安装目录,人性化的软链接,严格参照文档     
    4. 合理利用工具和技巧,减少操作时间     
    5. 软件设计过程中尽可能的高内聚低耦合,尽可能支持横向扩展,达到无状态的软件设计是一种非常理想化的设计目标     
    6. 有一些硬件制造商提供了一些迁移工具或者信息收集工具,可以进行参考,如Dell的SystemManager、dset,Cisco的UCS Manager等相关工具

    如何避免夜间迁移、升级或业务变更等操作:

    1. 要想避免半夜升级,必须采用HA的系统架构(无单点故障),即当有一台或多台服务器宕机时,对用户无影响    
    2. 软件尽可能的松耦合,尽可能支持横向扩展     
    3. 合理利用自动化、脚本、计划任务等     
    4. 多写测试多做演练,例如究竟能否正常回滚等     
    5. 凡事提前沟通,有事好商量,;)

    附录:     

    如“迁移数据收集工作表”“xxx变更表”等,迁移数据收集工作表可参考如下:

# 源服务器设置 设置标识 目标服务器设置状态结果 备注
1 key1 value1 success  
2 key2 value1 failed 原因,解决办法等

    其他参考:      
    1.红帽Red Hat文档:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/     
    2.微软Microsoft TechNet:https://technet.microsoft.com/en-us/library/dd365353(v=ws.10).aspx     
    3.微软论坛中的迁移主题:https://social.technet.microsoft.com/Forums/windowsserver/en-US/home?forum=winserverMigration     
    4.虚拟机迁移技术漫谈:http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm1/

--end--




本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1685184,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
非常好用的一款用于管理 Linux 服务器的软件
AppNode 是一款用于管理 Linux 服务器的软件,它基于 Web 页面进行可视化操作,不但可以帮助不熟悉 Linux 命令的用户无障碍地管理他们的 Linux 服务器,也可以帮助 Linux 运维人员提升运维效率。
5517 0
12个最应该使用的Linux服务器OS(下)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/56022508 12个最应该使用的Linux服务器OS(下) 作者:chszs,未经博主允许不得转载。
984 0
Linux上用nginx搭建RTMP服务器
参考文章:https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/ 我的环境ubuntu 1、 安装编译 nginx 所需要的库 sudo apt-get...
1352 0
Ubuntu Linux下搭建FTP服务器图解
1 首先用命令检查是否安装了vsftpd vsftpd -version 如果未安装用一下命令安装 apt-get install vsftpd 安装完成后,再次输入vsftpd -version命令查看是否安装成功 2 新建一个文件夹用于FTP的工作目录 mkdir /home/ftp 3 新建FTP用户并设置密码以及工作目录 ftpna
3784 0
linux下svn服务器安装配置与启动
1. 采用源文件编译安装。源文件共两个,为:      subversion-1.6.1.tar.gz  (subversion 源文件)      subversion-deps-1.6.1.tar.gz  (subversion依赖文件)      注意文件版本必须一致,否则很容易产生各种奇怪的问题. 2. 上传以上两个文件到服务器上,解压。
1266 0
linux下RDP客户端及服务器
tsclient redsktop remmina   -->对ubuntu支持的非常不错     XRdp 集合vnc作为rdp服务器端使用;
1215 0
【Linux】把web项目部署到Linux服务器上
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 打开eclipse,在已经完成的web项目上面点击右键,选择export,然后选择导出成war包 将项目打包成war-输出路径自己选择: 在Linux服务器中安装java环境,tomcat,和mysql等必须的软件 把之前导出来的项目的war包传输到linux服务器上自己设定的目录下: 选中需要上传的文件。
1547 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS系统指南之Linux系统诊断
立即下载
ECS运维指南 之 Linux系统诊断
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载