业务迁移方案讨论

2021-01-04 23:33:51 +08:00
 dream4ever

业务现状

  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 图书推荐?另外容器中的软件配置有什么注意事项?比如数据库部署在容器中之后常常会踩的坑。

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

3718 次点击
所在节点    Web Dev
36 条回复
iphoneXr
2021-01-05 08:34:35 +08:00
作为搞搞运维的,还是评论下:
1 、节点好像和 webdav 无关,不会是不知道 webdav 是啥吧?!
2 、windows 迁移到 linux
3 、业务容器化
整体来看,一个比一个坑更大。。。
祝你好运吧。
dream4ever
2021-01-05 09:17:49 +08:00
@iphoneXr 关于第一点,IIS 中看到过 WebDAV,但是没用过,哈哈。

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

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

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

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

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

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

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX