大家线上的 Go 服务都是如何部署的?

9 天前
 qloog

RT, Go 服务如何部署到线上环境,包括如何发布、回滚。

我先说说我知道的

前提:会对 go 应用进行打 tag

方案一:

1 、把 go 应用要上线的 release tag 打包成 docker 镜像 2 、然后在 k8s 进行部署, 回滚的话直接回滚到上一个 tag 3 、域名直接解析到 k8s 的 ingress 解析到对应的 service 中,服务也可以 HPA 动态扩容

方案二:

1 、直接把 go 的二进制文件+配置文件 放到对应的线上的机器上,如果是多台就部署到多台服务器 2 、前面加一层 nginx ,然后通过 proxy_pass + upstream 解析到对应的 go 服务器上 3 、域名直接解析到 nginx 即可。

想知道除了这两种方式,还有什么方式?

相比而言,你认为哪种方式更好?

欢迎大家畅所欲言

4508 次点击
所在节点    Go 编程语言
54 条回复
pol
9 天前
我刚学 Go 也有个疑问,借楼问下,我用 gin 写一个接口后将项目通过 go build 编译成了 linux 的可执行文件后,直接放到服务器上运行。

目前还没用到 k8s 这样的东西的情况下,启服务都是这样的吗,因为我在更新版本后 不能像 java 一样通过 pe -ef 找到对应的进程 kill , 目前我是通过端口找的进程 kill 后 重新执行新的包。

我感觉这样不对,但是不知道大佬们以及企业级是怎样的

我的问题应该比楼主更低端一点🥺
BeijingBaby
9 天前
大型项目,自动化。
小型项目,手动。

至于是 docker 还是直接 bin 看情况,都在用。
Shijamlin
9 天前
@pol ps -ef | grep 可以的呀
body007
9 天前
直接部署: https://github.com/ochinchina/supervisord
docker 部署:那当然就是 docker-compose 或者你提到的 k8s 咯
或者用 systemctl 也行,这个库 github.com/kardianos/service ,支持把自身可执行程序以服务方式部署,window 就是服务,Linux 会根据系统安装的管理工具自动挑选 systemctl 或 service 。上面的 supervisord 也用到这个库,因此 supervisord 也直接能以服务方式部署。
kumoocat
9 天前
@pol pgrep
fruitmonster
9 天前
小型接收数据的服务有几个接口,我比较懒,最开始是本机编译之后二进制直接上传,后来感觉好麻烦,还得找一个支持 rz 的终端,后来干脆就写完代码直接 git push 提交,然后服务器上写了一个脚本,内容包括,备份、编译、清理内存数据等操作,反正每次上线后也得连服务器看日志,索性直接在服务器执行这个脚本,就更新了。
ji76289
9 天前
@pol 用 systemd
povsister
9 天前
@pol
大企业:有 discovery+API 网关,一停一启/蓝绿梯度,rolling update ,南北向流量逐渐调度至新应用容器上
小作坊无网关(笑): https://github.com/cloudflare/tableflip
whoosy
9 天前
k8s
dzdh
9 天前
- k8s 容器部署 滚动发布 无所屌谓
- 蓝绿发布(nginx proxy old -new port)
- systemd+socket+reuseport

目前就知道这仨
coderxy
9 天前
有 k8s 就用 k8s 。 没有的话,应该要用类似于 supervisor 这样的进程守护程序,或者用 docker 。
ramirezyolis808
9 天前
@povsister 谢谢学习了 2 个新名词。南北流量。东西流量。
cqu1980
9 天前
supervisor
perfectlife
9 天前
如果有 k8s 选第一种,简单省事,横向扩容也方便
pol
9 天前
@Shijamlin
@kumoocat
@ji76289

我是这样启动的

nohup ./run > output.log 2> error.log &

ps -ef | grpe 和 pgrep 都查不到, 我还没尝试用 systemctl
ramirezyolis808
9 天前
@pol 怎么可能查不到。
enchilada2020
9 天前
佬们都是专业运维吗…后端开发也要操心 k8s 之类的东西吗
dislazy2023
9 天前
我用阿里云的 folw 自动打包成 docker 镜像,然后推送到阿里云个人镜像仓库,然后提前把阿里云 agent 部署到服务器上连接,后面就是阿里云自动部署了 docker-compose
povsister
9 天前
@enchilada2020
曾经遇到过只会写代码的研发,他对于自己的程序是如何接到来自用户请求的全链路是完全不知道,也不知道自己的程序是怎么运行/编排/多活 or 单元化的。
所以,有客诉反馈,结果查问题,怎么查,查什么,完全一抹黑。
系统设计和改进方向也是一问三不知。
coderxy
9 天前
@enchilada2020 后端都要会的, 不会的最多到中级开发止步。

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

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

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

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

© 2021 V2EX