作者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/m.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