作者walker088 (巴拉圭鲁蛇)
看板Soft_Job
标题[请益] 如何同时更新多台Server内的DB及APP
时间Fri Nov 16 04:18:52 2018
各位年薪百万大大们好
小鲁我是目前在巴拉圭的替代役男
刚开始在地球另一端抠顶大概三周而已
工作的计画是协助他们国家医院医疗资讯系统的开发&维护
使用的技术如下:
Backend: Java 8, Struts2, Tomcat 8.5
Database: PostgreSQL-9.4
Platform: CentOS 7
Others: Flyway, Gradle
这边想跟各位大大请益问有关DevOps的问题
这里开始使用我们系统的医院目前都有独立的伺服器
因此当我们的APP(Java)或DB有做修改後
他们目前是逐台Server做手动更新
满浪费时间的而且未来推广到更大量医院时候很惨
几分钟前老板让我找个方法可以同时更新所有的Server
这边因为基本上更新主要有两个任务:
1. 写好更新DB的sql後丢上Server用Flyway执行 (或直接psql吃.sql)
2. 开发出新的版本後包成 .war 档丢进Server的Tomcat
----------------------以下是土法炼钢--------------------------
目前直觉想到的解法是写个简单的轻量TCP Server放在医院们的Server上
接受可以通过一些检查(e.g., rsa)的TCP client的请求後执行上面两个更新的动作
-------------------------炼钢完毕-----------------------------
但因为并不熟悉Dev-Ops的领域
怕这样土法炼钢未来会比较麻烦
毕竟役期只有接近一年,结束後就会返台了
为了避免留下困扰给之後的人
想询问是否有比较主流 or 有制度 or未来好管理扩充的做法
有开源工具或者相关关键字的话就更好不过了!
感恩感恩
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 200.108.131.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1542313134.A.FB3.html
※ 编辑: walker088 (200.108.131.62), 11/16/2018 04:21:57
1F:推 SheLoBDenI: cronjob+bash_script, gluster? 11/16 06:39
感谢大大关键字分享
2F:推 bapemilo: Ansible 11/16 06:58
3F:推 bapemilo: 你可以看看Jenkins & Ansible 11/16 07:01
4F:→ bapemilo: 用Jenkins撰写一个发布的Job 11/16 07:02
5F:→ bapemilo: 这个job做的是打包成War然後执行flyway 11/16 07:02
6F:→ bapemilo: 再透过Ansibleㄧ次将war更新多台机器 11/16 07:03
好像很多人推Anible+CI server耶 感谢大大
7F:推 pxycho: Chef or Ansible 11/16 08:35
8F:推 LuLuCow: CI + Ansible 11/16 09:05
9F:推 didifong: Ansible+1 11/16 09:05
10F:→ qrtt1: 跑在什麽系统上? 11/16 09:20
Server是CentOS 7
11F:推 Sieg2010: Ansible 11/16 09:27
12F:推 hxrgjo: Ansible +1 布署很方便的 11/16 09:28
13F:推 gofigure: 我想你需要的是replication相关 而不是上面那堆土法炼钢 11/16 09:39
我也觉得直接写不大好 能解问题但未来更多问题orz
感谢soft_job版众们的帮助
14F:推 SISQUAKE: Ansible 一解 11/16 10:21
15F:→ qrtt1: 别冲动,你的基础建设有完整了吗?灾难回复策略跟演练呢? 11/16 10:50
16F:推 vi000246: 如果要土法练钢我有写支FTP布署的 11/16 11:01
水哦感谢大大的分享
18F:推 ripple0129: 看样子ansible已经称霸CM市场了 11/16 11:09
19F:推 ian90911: 推qrtt1 先厘清复原手段 11/16 11:15
20F:→ ChungLi5566: 主流就是一台一台手动部署 11/16 12:15
量很大且人力不足的话 (e.g.,300台机器 5人的team)
也会是倾向逐台手动吗? 不会是像MS那样直接更新?
21F:→ alog: 你们有没有规划怎麽rollback上一个版本 这个很重要 11/16 12:33
22F:推 alog: 还有有没有可能搞挂资料库 或 退回上一个版本资料被你们砍 11/16 12:35
23F:→ alog: 掉 11/16 12:35
24F:→ alog: 如果是停机维护还好 可以在执行前再备份 如果是不停机 就会 11/16 12:41
25F:→ alog: 比较尴尬 新进资料搞挂了包你囧爆 11/16 12:41
26F:→ alog: 另外就是 或许还会有更酷的工具 或是 需要整合其他的先进服 11/16 12:54
27F:→ alog: 务进入到你们的架构 11/16 12:54
28F:→ alog: 但一定要留意你们在处理的资料 他是国家级的医疗资讯,或许 11/16 12:59
29F:→ alog: 可能内容还好,但有些工具或先进的系统服务 最好要跟你上面 11/16 12:59
30F:→ alog: 的主管确认/授权过再用 不要没有确认过就直接傻傻用 怕你没 11/16 12:59
31F:→ alog: 事变有事 11/16 12:59
目前应该会是采用停机维护的方式加上备份比较保险
感谢大大提醒到弄坏新进资料的部分
想询问一下在rollback的部分有什麽推荐吗
32F:推 Masakiad: docker + CI/CD server啊 11/16 13:32
因为web app已经包成war档了 想询问这样再加上docker可以扮演的角色是?
33F:→ remmurds: 架构魔人要出动了吗? 11/16 15:47
哈哈哪位大大是架构魔人
34F:推 gino0717: 巴拉圭有电脑喔 11/16 17:55
有啊网速也还行 wifi也大概有个3-5mbps左右
行动网路他们走3G+LTE
35F:推 single4565: 这替代役好像还不错欸 11/16 18:14
-------------------------------------------------------------------
感谢以上大神们的热情分享和帮助
小鲁会好好survey一下的
※ 编辑: walker088 (200.108.131.62), 11/16/2018 19:46:16
※ 编辑: walker088 (200.108.131.62), 11/16/2018 19:48:26
37F:→ ChungLi5566: war安装完会有个路径来放解开後的档案 11/16 20:44
38F:→ ChungLi5566: 设成ftp站台 换版就直接把war解开後盖过去 11/16 20:45
39F:→ ChungLi5566: 不过即使UAT环境测过 也无法保证Prod也ok 11/16 20:49
40F:→ ChungLi5566: 所以主流还是晚上加班手动换版 11/16 20:50
41F:推 RunRun5566: Ansible, DB不要放server,不然就用Dicker把app跟db绑 11/17 09:08
42F:→ RunRun5566: 着用 11/17 09:08
43F:推 MIKEmike07: Jenkins + Ansible 11/17 14:35