企业版html
社区版git
咱们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,须要2台ALL IN ONE的GitLab服务器,也就是经过上面安装方式把全部组件都安装在一块儿的2台机器。segmentfault
它是分布式复制块设备,软件实现的无需共享能够在服务器之间镜像块设备的存储复制解决方案。缓存
左侧为A节点,右侧为B节点服务器
DRBD运行在内核里,它是一个内核模块。Linux2.6.33开始已经整合进内核。上图A为活动节点,B为被动节点。A收到数据发往内核的数据通路,DRBD在数据通路中注册钩子检查数据,当发现接收到的数据是发往本身管理的存储位置时,就复制一份,一份存储到本地的DRBD存储设备上,一份就发给TCP/IP协议栈,经过网卡传输到B节点的TCP/IP协议栈,B节点运行的DRBD模块一样在数据通路上坚持,发现有数据过来就存储到DRBD对应的位置上。若是A节点宕机,B节点上线,B节点接收到数据存储到本地,当A节点恢复之后在把变更数据同步到A节点上。网络
流程以下:app
工做模式:异步
DRBD创建在底层设备之上,对于用户来讲一个DRBD设备就像一块物理磁盘。它支持磁盘、软RAID、LVM等其余块设备。分布式
# 添加源 # CentOS 6 rpm -ivh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm # CentOS 7 rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # 安装 yum -y install drbd84-utils kmod-drbd84 # 安装后重启 reboot
下面是主配置文件ide
/etc/drbd.conf是主配置文件,可是它里面引用了2个,因此真正须要配置的是在它包含的配置文件中进行配置。
/etc/drbd.d/global_common.conf包含global和common这两部分DRBD配置信息。而*.res文件而资源文件。
/etc/drbd.d/global_common.conf配置文件说明
/usr/share/doc/drbd84-utils-9.3.1/drbd.conf.example这是一个模板文件。
默认这个配置文件里面没有配置什么具体内容
我这里就配置了几项,主要就是协议。其余其实都不用配置都是默认值。
*.res资源文件说明
默认没有这个文件,手动创建一个,以.res结尾
资源是一个复制的数据集,它包括Resource name也就是资源名称、
Volumes也就是卷在一个资源集合里面能够有多个卷复制的使用共用一个复制流;另外还会包含DRBD device,这是一个虚拟块设备,在系统上表现是的/dev/XXX,这里可不是真实的设备,真是的设备都是/dev/sda|b之类的。若是是多个资源再会用到Volumes
个人资源文件
注意:网络链接方面建议使用背靠背的直连方式这条链路主要用于复制数据,我这里实验环境就共用一条链路。
若是你使用LVM如何找到块设备?
若是你使用普通分区那就是/dev/sda|b[NUMBER]这种形式。
保障你使用的块设备是空的不然会初始化失败。两个节点都要这样作初始化。
启用资源,反之就是 drbdadm down 资源名称
它这里知道本身是Secondary可是不知道对方,是由于防火墙致使,把两边防火墙关闭就行了,固然你也能够添加测录。
两台都是这个状态表示正常
启动服务
这时候咱们以前没有的那个/dev/drbd0就出现了
这一步只能在你肯定是主节点的节点上执行,不须要两个节点都执行。设置完成后再次查看状态。
文件系统只能挂载到主节点上,也只能在设置了主节点后才能对这个/dev/drbd0这个设备格式化和挂载。
再次查看同步已经完成
你们确定以为我以前安装gitlab的时候设置仓库路径就是/data,没错,我作HA以前把gitlab服务中止掉,而后经过cp –rp命令吧git-data目录都拷贝到其余地方,而后才作的其余操做,当HA完成后使用相同的命令拷贝回来就行。
drbd-overview 检查角色以及同步状态
drbdadm status RESOURCE_NAME
drbdsetup status gitdatadrbd --verbose –statistics 详细信息
这是由于配置文件里定义的和主机实际的名称不符。修改/etc/hostname文件。
这里是由于个人那个LVM卷挂载了,须要先卸载
说明该设备数据不为0
参考文档
https://docs.gitlab.com/omnibus/roles/README.html https://docs.gitlab.com/ce/administration/high_availability/README.htmlhttps://docs.linbit.com/docs/users-guide-8.4/#s-distro-packages https://www.cnblogs.com/wsl222000/p/5777382.htmlhttps://segmentfault.com/q/1010000010290689https://blog.csdn.net/tjiyu/article/details/52723125 https://blog.csdn.net/yanggd1987/article/details/50504599 http://blog.51cto.com/freeloda/1275384