文章结构

  • 利用gitlab/gogs创建高可用的git服务器
  • 前言
  • 日志
  • 平台创建
  • 1、git-lib(提供简易自动化脚本)
  • 2、gogs(提供建议自动化脚本)
  • 3、威联通(gogs)
  • 威联前提条件
  • 创建命令和脚本
  • 注意事项
  • 总结


利用gitlab/gogs创建高可用的git服务器

前言

1、本情况适用于小型团队, 无运维人员或者兼职运维的人员的团队作为一个参考方案,尽可能降低运维需求,降低因长时间导致的难维护,无法维护的服务出现的可能性。
2、gitlab相对gogs对资源要求较高,所以在环境资源较为拮据的情况下建议使用gogs创建,此篇文章加入威联通主要针对的arm处理器,基于arm的威联通具备性价比高,维护简易,本身自带数据安全存储,是一个极佳的承载git服务环境的设备,当然并不是无缺点, 威联通的arm只有gogs镜像可以使用,不过仍然建议优先考虑此方案
使用低成本的阿里云也是一个不错的方案,阿里云服务器建议:阿里云 2、此外,本人尽可能的通俗易懂,算是苦力活,无技术含量,勿喷
3、如有错误请指出不胜感激

日志

2020.4.13:修复了威联通的命令, 完善了执行流程,目前可以直接制作成脚本执行

平台创建

1、git-lib(提供简易自动化脚本)

#!/bin/bash

#分割线以前是工具与docker的安装, 已存在docker环境可以忽略
yum install -y wget
yum install -y nfs-utils
yum install -y vim
yum update
#下载并安装docker-ce
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
mv docker-ce.repo /etc/yum.repos.d/
yum clean all
yum install -y docker-ce
systemctl start docker
systemctl enable docker

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#添加自启动挂载
echo [nfs服务器地址]:[数据存储路径]  /mnt/xfs/       nfs >> /etc/fstab
#创建文件夹并且生效
mkdir /mnt/xfs
mount -a  
#此处的run-gitlab便是下面另一个脚本, 脚本主要就是判断和启动docker
#此处的拷贝路径可自己编辑,可将其同git-lab一同放入数据服务器上,
#新装机器执行此批命令后自动将相关脚本拷贝至本地,之后便可无损启动
cp /mnt/xfs/data/gitlab/run-gitlab.sh ./
cp /mnt/xfs/data/gitlab/gitlab-ce.img ./
#此处为加载文件到镜像目录, 后面是文件名,随服务更改
docker load < gitlab-ce.img
./run-gitlab.sh 

#将脚本添加在开机启动,下次启动,执行下面脚本,启动docker
echo ./root/run-gitlab.sh & >> /etc/rc.local
#rc加权限
chmod +x /etc/rc.d/rc.local

run-gitlab.sh

#!/bin/bash
export docker_name="gitlab"
export nfs_path="/mnt/xfs/data/gitlab"
num=`sudo docker ps -a|grep "$docker_name"|wc -l`
img=`sudo docker images|grep "$docker_name"|wc -l`


#判断是否存在容器
if [ 0 -eq $num ];then
{
    #gitlan的数据总共有三个位置,将其挂载在nfs服务器上面
    #gitlab需要删除log里面的文件,来保证新的容器不出错
    rm -rf $nfs_path/log/*
    chmod -R 777 $nfs_path/*
    docker run -d --name $docker_name -p 10180:80 -p 10122:22 \
    -v $nfs_path/data:/var/opt/gitlab \
    -v $nfs_path/log/:/var/log/gitlab \
    -v $nfs_path/etc/:/etc/gitlab \
     gitlab/gitlab-ce
}
else
{
    docker start $docker_name

}
fi

2、gogs(提供建议自动化脚本)

gogs与gitlab的启动方式一样, 以上的脚本可以直接修改使用,区别在于,gogs的数据在容器中的/data下,且,在新启动docker 用旧的数据的时候,要对部分文件删除并且更改权限

#!/bin/bash
export docker_name="gogs"
export nfs_path="/mnt/xfs/data/gogs"
num=`sudo docker ps -a|grep "$docker_name"|wc -l`
img=`sudo docker images|grep "$docker_name"|wc -l`


#判断是否存在容器
if [ 0 -eq $num ];then
{
    #gogs需要删除gogs/git/下的一个隐藏文件,然后重新给与权限。此外gogs的端口不同web端口在3000位置
    rm -rf $nfs_path/gogs/git/.gitconfig
    rm -rf $nfs_path/gogs/gogs/log
    chmod -R 777 $nfs_path/*
    docker run  -p 10022:22 -p 10080:3000 \
    -v $nfs_path/gogs/:/data \
    --name gogs \
    gogs/gogs
    
}
else
{
    docker start $docker_name

}
fi

3、威联通(gogs)

威联前提条件
  1. 要求处理器在双核a15 1.7ghz以上,内存1G以上,过低的配置连基本的千兆都跑不满,不建议承载其他服务(我感觉这个配置已经很低了)
  2. 威联通需要自己处理相关数据冗余灾备相关,且不用nfs服务,是通过本地文件系统,默认共享路径在/share下,自行寻找位置。
  3. 本人因为数据安全性不是“极高”所以是单盘直通,且不同阵列下,对于处理器的资源损耗不同,第一条可以适当提高
  4. 软件需要安装container,里面自带docker。
创建命令和脚本
#!/bin/bash

#!/bin/bash
#删除之前的日志,否则会报错
rm -rf /share/Public/data/gogs/gogs/log
docker pull gogs/gogs-rpi
docker run -d  -p 10022:22 -p 10080:3000 \
   -v /share/Public/data/gogs/:/data \
   --name gogs \
   gogs/gogs-rpi
   #arm版本gogs名称为gogs-rpi
#等待5s,执行docker运行完毕后的清理于权限,若出现端口访问失效, 手动执行
sleep 5
rm -rf /share/Public/data/gogs/git/.gitconfig
chmod -R 777  /share/Public/data/gogs

创建后进入控制台,可以看到控制台多出一个项目,点击名字,设置开启自启动就可以

docker 部署 ntp 服务器 docker部署nas_容器


docker 部署 ntp 服务器 docker部署nas_linux_02

注意事项

1、威联通的原厂的控制台是有bug的(0923版本) ,挂载路径与实际路径是有出入, 所以创建的操作尽可能用脚本创建,创建成功后可以再通过控制台设置自启动,或者通过其他方式实现自启动
2、除了被共享的文件外,部分目录在nas重启后会被删除,谨慎选择数据目录

总结

方案可以选择服务器阿里云 以上列举了一种服务的高可用性,实际情况例如 ,论坛网站, 社区,云服务,等 绝大多数web应用,在借助docker下,均可以通过此实现高可用转移,且数据存储直观明了,转移时候直接脚本数据拷贝即可,无需重新部署
本人还有wiki的x86与arm版本,论坛等其他的脚本感兴趣可以问本人索要
威联通是一个傻瓜化几乎可以达到免维护的一个设备,若用量小本人极力推荐威联通docker部署
以上方案可以,通过网络以及存储性能的优化来提高可用性,具体操作这里不细讲。