业务迁移方案讨论 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX    Web Dev

业务迁移方案讨论

  •  
  •   dream4ever 2021 年 1 月 4 日 4572 次点击
    这是一个创建于 1842 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业务现状

    1. 系统环境:阿里云 4 核 16G 服务器一台,安装的 Windows Server 2012,所有网站通过 IIS 管理。
    2. 网站概况:我和另一个同事分别独自负责几个网站,我的网站全部前后端分离,后端用 Node.js 提供统一的 API 调用,数据库为 MongoDB ;同事的几个网站都用 PHP + MySQL 写的。

    迁移流程

    1. 公司还有一低配的 2 核 8G CentOS 7 服务器,先将各项业务依次迁移到该服务器上。原来的 IIS 用 Nginx 代替,数据库则安装 CentOS 下对应版本。且打算将业务运行环境容器化,包括 Nginx 、Node.js 、PHP 、MongoDB 、MySQL,都部署到各自的容器中。因为各项业务目前用户规模小,综合考虑之后认为容器化的方案利大于弊,所以采用此方案。
    2. 完整检查每项业务各部分功能,确认所有业务都正常运行。
    3. 最后将 4 核 16G 服务器也从 Windows Server 2012 切换至 CentOS 7,并将业务全部迁移回这台更高配置的服务器。

    主要问题

    1. CentOS 系统层面的安全加固,包括用户、SSH 等部分,看了官方 Wiki 上的一些文章,又在 Google 上看了一些文章,把认为有必要的内容先在低配服务器上实践了一遍了,还做了笔记:云服务器配置笔记 v6.0。至于打系统补丁之类的,CentOS 7 上的最佳实践是怎样的?
    2. 各个业务对应的前后端程序、数据库放到什么目录下比较合适?各个目录设置怎样的权限比较合适?还是说 Google 找找看着靠谱的建议照着做就行?
    3. 业务所需软件环境的容器化,上周在图书馆借了一本《 Docker 技术入门与实战》,当时大致翻了前 1/4,感觉非常实用,完全可以用在这次的业务迁移中,不知道还有没有同样优质的 Docker 图书推荐?另外容器中的软件配置有什么注意事项?比如数据库部署在容器中之后常常会踩的坑。

    现在主要就是想接着这次业务迁移的机会,尽量把各方面配置都做完善,让业务运行环境尽量安全、方便,后面就可以专心于业务开发上了。

    36 条回复    2021-04-27 19:58:10 +08:00
    iphoneXr
        1
    iphoneXr  
       2021 年 1 月 5 日 via iPhone
    作为搞搞运维的,还是评论下:
    1 、节点好像和 webdav 无关,不会是不知道 webdav 是啥吧?!
    2 、windows 迁移到 linux
    3 、业务容器化
    整体来看,一个比一个坑更大。。。
    祝你好运吧。
    dream4ever
        2
    dream4ever  
    OP
       2021 年 1 月 5 日
    @iphoneXr 关于第一点,IIS 中看到过 WebDAV,但是没用过,哈哈。

    关于第二点,自己几年前买过一台阿里云的 CentOS,网站的基本配置还知道一点,但是系统化的、规范化的运维知识就很欠缺。

    关于第三点,现在也还没拿定主意,是否要所有软件都容器化,还是只给部分软件做容器化,以及给哪些软件做容器化比较合适。
    oakcdrom
        3
    oakcdrom  
       2021 年 1 月 5 日
    我思想落后,没用 docker 。。。感觉有时候还要进 docker 里维护,好麻烦。。我懒!恩。
    lvzhiqiang
        4
    lvzhiqiang  
       2021 年 1 月 5 日
    1. 没有最佳实践,系统装较新的;
    2. 软件存放在容易识别的目录,按业务名命名,写好 REAMED 文档,重要数据独立成一个分区存放,并做好定时、异地备份
    3. Linux 的权限管理比较简单,只要保证你 root 用户权限不被别人用漏洞或其他手段拿到,基本上你的系统就是非常安全的
    4. 做好安全防护措施,定时监控 ssh 登录日志、配置防爆破登录工具、禁止 root 直接登录等
    5. 容器本质就是个进程,只是通过 Cgroups 技术 做了资源隔离,跑数据库(数据访问轻量)基本没啥问题,数据独立挂载出来就行
    dream4ever
        5
    dream4ever  
    OP
       2021 年 1 月 5 日
    @oakcdrom 业务运行环境一旦搭建好了,后面也没什么需要维护的了,除非技术架构要变化。

    如果技术架构要变化,即使不用 Docker,也得维护相关的软件和环境什么的。
    dream4ever
        6
    dream4ever  
    OP
       2021 年 1 月 5 日
    @lvzhiqiang 很详细,非常感谢。

    1. 关于“软件存放在容易识别的目录”,我打算全部容器化,这一点是不是不用管了?
    2. “重要数据独立成一个分区存放,并做好定时、异地备份”,会使用阿里云的快照业务,每天对服务器的所有磁盘进行备份。后面也会考虑要不要增加本地备份,写个脚本每天凌晨增量备份到本机。
    3. “做好安全防护措施,定时监控 ssh 登录日志、配置防爆破登录工具、禁止 root 直接登录等”,参照着 CentOS 官方 Wiki 和 网上一些 CentOS 安全加固的文章,对帐号、SSH 都做了安全加固,也配置了 fail2ban,登录失败一次直接 ban 14 天。
    4. “容器本质就是个进程,只是通过 Cgroups 技术 做了资源隔离,跑数据库(数据访问轻量)基本没啥问题,数据独立挂载出来就行”,是的,就是打算配置、数据和应用分离,应用运行在容器中,配置文件和数据放在宿主机中。
    xuanbg
        7
    xuanbg  
       2021 年 1 月 5 日
    既然是阿里云 ecs,那么安全组策略设置为对外不限来源的只开 80/443,其他服务默认端口改掉,且只允许白名单内 ip 访问就够了。
    dream4ever
        8
    dream4ever  
    OP
       2021 年 1 月 5 日
    @xuanbg 嗯,阿里云本身提供的安全组之类的功能也会充分利用。
    z80642519
        9
    z80642519  
       2021 年 1 月 5 日
    我就好奇 这个本地配置够吗 如果是测试环境当我没问
    dream4ever
        10
    dream4ever  
    OP
       2021 年 1 月 5 日
    @z80642519 这几年阿里云服务器的运维一直是我在负责,观察过系统的资源占用,4 核 16G 的主机,CPU 占用常年稳定在 20% 左右,内存占用常年稳定在 40% 左右。

    因为各项业务用户体量都不大,而且相当一部分业务是纯前端的,所以这个配置完全是够的。
    z80642519
        11
    z80642519  
       2021 年 1 月 5 日
    再上个免费的 cdn 那就可以不用人管了
    z80642519
        12
    z80642519  
       2021 年 1 月 5 日
    @dream4ever 再上个免费的 cdn 那就可以不用人管了
    dream4ever
        13
    dream4ever  
    OP
       2021 年 1 月 5 日
    @z80642519 免费 CDN 暂不考虑,因为一旦出现什么问题影响业务正常运行,就会很麻烦。之前短暂用过 BootCDN 来存放各种公共的 JS 、CSS 库,后来遇到过一次问题,之后就不再使用了。

    因为服务器的带宽够用,相比而言,稳定性比速度重要得多。
    z80642519
        14
    z80642519  
       2021 年 1 月 5 日
    @dream4ever 免费 cdn 只是蹭带宽削峰 源站当然还是本地 只是要注意有些免费 cdn 有流量上限
    dream4ever
        15
    dream4ever  
    OP
       2021 年 1 月 5 日
    @z80642519 有些麻烦,目前带宽也很富余,一旦用上,还有各种突发意外情况要应对,所以先不考虑了。
    Judoon
        16
    Judoon  
       2021 年 1 月 5 日
    1 、无脑 yum update 到最新版本。firewalld 不用折腾,浪费时间,直接用阿里云的安全组规则。
    2 、直接买阿里云的 rds 和 dds 省心。不想花钱的话,直接用 dokcer 起数据库,mount 数据目录即可。反正一台机器也不用考虑什么高可用和主备
    3 、网上的文档够多了

    另外问一句流程中的第四点,为什么不直接把原来低配的升级到 4 核 16G 呢,windows 直接释放掉不就好了
    dream4ever
        17
    dream4ever  
    OP
       2021 年 1 月 5 日
    @Judoon 因为我们是传统企业,IT 部门想要花钱太难了,各种审批各种等待,就这个低配的还是好不容易申请过来的……

    数据库目前还不考虑阿里云的收费方案,原因同上,而且业务体量也没有大到我们可以名正言顺地申请资金的程度,目前 Docker 也够了。

    关于 FirewallD,虽然阿里云的安全组很方便也很好用,但我觉得安全建设还是小心为上,所以 FirewallD 还是有必要做一些几本的配置的。
    goodryb
        18
    goodryb  
       2021 年 1 月 5 日   1
    可以认为是纯粹瞎折腾吗, 这样改了之后和之前有啥区别

    做业务稳定是压到一切,没有业务强需求需要改架构的就不要乱动,动手之前想想你最本质的诉求是啥
    hisway
        19
    hisway  
       2021 年 1 月 5 日
    再开一个月的 4 核 16G,环境啥的都弄好了,迁过去,做好镜像,原来的重装再迁回来
    lamesbond
        20
    lamesbond  
       2021 年 1 月 5 日
    @dream4ever 同传统企业,申请一台阿里云 ecs 花了已关闭月
    lopetver
        21
    lopetver  
       2021 年 1 月 5 日   1
    感觉迁移流程可以优化下

    可以不用你本地的 2H8G 服务器

    直接阿里云开台同配置的按量付费的云服务器

    并安装 centos7 然后再此台服务器上验证你说的那些问题

    如果验证通都通过了,并且项目迁移,docker 化都没问题

    将此云服务器做个镜像,然后给将次镜像还原到原来的 win 云服务器上即可。

    最后将新开的云服器释放

    优点:方便,省事,减少业务中断时间

    缺点,需要花费一些钱
    dream4ever
        22
    dream4ever  
    OP
       2021 年 1 月 5 日
    @hisway
    @lopetver 我上面没说清楚,2 核 8G 那台服务器也是阿里云的,所以现在是有两台阿里云服务器。
    dream4ever
        23
    dream4ever  
    OP
       2021 年 1 月 5 日
    @lamesbond 哈哈,有感同身受的兄弟了,握个手
    dream4ever
        24
    dream4ever  
    OP
       2021 年 1 月 5 日
    @hisway
    @lopetver 前面没打完字就发出去了,这里继续。

    花钱的事,在我们这种公司的这种部门就是很麻烦,所以既然已经有了一台阿里云上的 2 核 8G CentOS 服务器了,我能做的就是充分把它利用起来,把整体流程和各个环节都弄清楚,确认没问题之后,再给 4 核 16G 的阿里云服务器重装成 CentOS,然后再把业务手动迁移过去,虽然麻烦点,但这也是当前条件下的可行方案。
    lopetver
        25
    lopetver  
       2021 年 1 月 5 日
    @dream4ever 那就没问题了
    rapperx2
        26
    rapperx2  
       2021 年 1 月 5 日
    容器化后坑是一个比一个多 哈哈
    dream4ever
        27
    dream4ever  
    OP
       2021 年 1 月 5 日
    @rapperx2 具体讲讲嘛,让我也感受一下,说不定就吓得不敢容器化了,哈哈
    doveyoung
        28
    doveyoung  
       2021 年 1 月 5 日
    IIS 上用 webdav 是个坑,我学艺不精没搞好,最后用了 CentOS+apache,不记得是不是有现成的配置可以参考,从安装 apache 开始到测试使用 20 分钟搞定,当天晚上启用到正式环境上。
    dream4ever
        29
    dream4ever  
    OP
       2021 年 1 月 5 日
    @doveyoung 我司 IIS 上没用 WebDAV,我刚明白一楼的哥们为啥问我 WebDAV,原来是我把主题的节点选成了 Web DEV 。
    lamesbond
        30
    lamesbond  
       2021 年 1 月 5 日
    我司也准备上容器,但是发现上容器后比之前麻烦不少,不了了之了
    dream4ever
        31
    dream4ever  
    OP
       2021 年 1 月 5 日
    @lamesbond 方便讲讲具体麻烦在哪里么?
    mingtdlb
        32
    mingtdlb  
       2021 年 4 月 2 日
    @dream4ever #6 "参照着 CentOS 官方 Wiki 和 网上一些 CentOS 安全加固的文章",方便贴下链接么
    Xhack
        34
    Xhack  
       2021 年 4 月 27 日
    Xhack
        35
    Xhack  
       2021 年 4 月 27 日
    就这我发个链接就被打了,没必要啊
    dream4ever
        36
    dream4ever  
    OP
       2021 年 4 月 27 日
    @Xhack 什么被打了?没看明白
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2865 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 14:55 PVG 22:55 LAX 06:55 JFK 09:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86