背景
今早一个需求就扔到我头上,差点爆炸
gitlab升级要求不停业务,就代表升级过程中,开发还是可以提交代码,拉取代码。。。。。。
虽然想吐槽一下,不过吃人家饭,需求要硬也得搞,方法总比问题多嘛
方案
怎么实现业务不中断,突然想到了gitlab的副本,可以按副本的思想,进行不中断业务升级
这里,我使用的是docker安装方式,所以方案会偏向docker方向的gitlab升级,不过思想是一样的
简单说:
1. 将代码存储目录共享,git-data
2. 注意其他目录不要共享,以免导致资源冲突以及升级后资源不适用
3. 开启备用容器记得将端口进行改动
4. nginx切换就行了,这样业务的操作就会转到备用gitlab中
实现
直接修改共享卷路径,不过要先复制原共享卷中的数
volumes:
- /sdata/etc/gitlabs:/etc/gitlab # 无需改动
- /sdata/data/gitlabs:/var/opt/gitlab # 需要老/sdata/data/gitlab/git-data,通过软链接的方式,放在新的/sdata/data/gitlabs目录下,代码存储目录共享
- /sdata/var/log/gitlabs:/var/log/gitlab # 无需改动
- /sdata/data/gitlab/git-data:/sdata/data/gitlab/git-data # 因为是通过软链接的方式,开启容器后,也需要/sdata/data/gitlab/git-data目录存在
修改端口
启动容器
切换nginx
对gitlab进行升级
升级完毕后,nginx切回
备用gitlab回收