V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX  ›  Web Dev

业务迁移方案讨论

  •  
  •   dream4ever · 2021-01-04 23:33:51 +08:00 · 3935 次点击
    这是一个创建于 1423 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业务现状

    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-01-05 08:34:35 +08:00 via iPhone
    作为搞搞运维的,还是评论下:
    1 、节点好像和 webdav 无关,不会是不知道 webdav 是啥吧?!
    2 、windows 迁移到 linux
    3 、业务容器化
    整体来看,一个比一个坑更大。。。
    祝你好运吧。
    dream4ever
        2
    dream4ever  
    OP
       2021-01-05 09:17:49 +08:00
    @iphoneXr 关于第一点,IIS 中看到过 WebDAV,但是没用过,哈哈。

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

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

    如果技术架构要变化,即使不用 Docker,也得维护相关的软件和环境什么的。
    dream4ever
        6
    dream4ever  
    OP
       2021-01-05 09:59:08 +08:00
    @lvzhiqiang 很详细,非常感谢。

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

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

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

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

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

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

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

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

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

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

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

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

    最后将新开的云服器释放

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

    缺点,需要花费一些钱
    dream4ever
        22
    dream4ever  
    OP
       2021-01-05 12:26:25 +08:00
    @hisway
    @lopetver 我上面没说清楚,2 核 8G 那台服务器也是阿里云的,所以现在是有两台阿里云服务器。
    dream4ever
        23
    dream4ever  
    OP
       2021-01-05 12:27:19 +08:00
    @lamesbond 哈哈,有感同身受的兄弟了,握个手
    dream4ever
        24
    dream4ever  
    OP
       2021-01-05 12:51:26 +08:00
    @hisway
    @lopetver 前面没打完字就发出去了,这里继续。

    花钱的事,在我们这种公司的这种部门就是很麻烦,所以既然已经有了一台阿里云上的 2 核 8G CentOS 服务器了,我能做的就是充分把它利用起来,把整体流程和各个环节都弄清楚,确认没问题之后,再给 4 核 16G 的阿里云服务器重装成 CentOS,然后再把业务手动迁移过去,虽然麻烦点,但这也是当前条件下的可行方案。
    lopetver
        25
    lopetver  
       2021-01-05 13:07:54 +08:00
    @dream4ever 那就没问题了
    rapperx2
        26
    rapperx2  
       2021-01-05 13:58:16 +08:00
    容器化后坑是一个比一个多 哈哈
    dream4ever
        27
    dream4ever  
    OP
       2021-01-05 14:10:02 +08:00
    @rapperx2 具体讲讲嘛,让我也感受一下,说不定就吓得不敢容器化了,哈哈
    doveyoung
        28
    doveyoung  
       2021-01-05 14:27:45 +08:00
    IIS 上用 webdav 是个坑,我学艺不精没搞好,最后用了 CentOS+apache,不记得是不是有现成的配置可以参考,从安装 apache 开始到测试使用 20 分钟搞定,当天晚上启用到正式环境上。
    dream4ever
        29
    dream4ever  
    OP
       2021-01-05 14:36:20 +08:00
    @doveyoung 我司 IIS 上没用 WebDAV,我刚明白一楼的哥们为啥问我 WebDAV,原来是我把主题的节点选成了 Web DEV 。
    lamesbond
        30
    lamesbond  
       2021-01-05 16:48:57 +08:00
    我司也准备上容器,但是发现上容器后比之前麻烦不少,不了了之了
    dream4ever
        31
    dream4ever  
    OP
       2021-01-05 16:56:17 +08:00
    @lamesbond 方便讲讲具体麻烦在哪里么?
    mingtdlb
        32
    mingtdlb  
       2021-04-02 14:39:50 +08:00
    @dream4ever #6 "参照着 CentOS 官方 Wiki 和 网上一些 CentOS 安全加固的文章",方便贴下链接么😂
    Xhack
        34
    Xhack  
       2021-04-27 14:31:20 +08:00
    Xhack
        35
    Xhack  
       2021-04-27 14:43:11 +08:00
    就这我发个链接就被打了,没必要啊
    dream4ever
        36
    dream4ever  
    OP
       2021-04-27 19:58:10 +08:00
    @Xhack 什么被打了?没看明白
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:31 · PVG 05:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.