版本管理工具Git(三)Gitlab高可用

摘要:
高可用模式企业版社区版我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALLINONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的2台机器。/etc/drbd.d/global_common.conf包含global和common这两部分DRBD配置信息。主从切换监控工具drbd-overview检查角色以及同步状态drbdadmstatusRESOURCE_NAMEdrbdsetupstatusgitdatadrbd--verbose–statistics详细信息部署遇到的错误1.notdefinedinyourconfig.这是因为配置文件里定义的和主机实际的名称不符。
高可用模式

企业版

版本管理工具Git(三)Gitlab高可用第1张

社区版

版本管理工具Git(三)Gitlab高可用第2张

我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的2台机器。

什么是DRBD

它是分布式复制块设备,软件实现的无需共享可以在服务器之间镜像块设备的存储复制解决方案。

版本管理工具Git(三)Gitlab高可用第3张

左侧为A节点,右侧为B节点

DRBD运行在内核里,它是一个内核模块。Linux2.6.33开始已经整合进内核。上图A为活动节点,B为被动节点。A收到数据发往内核的数据通路,DRBD在数据通路中注册钩子检查数据,当发现接收到的数据是发往自己管理的存储位置时,就复制一份,一份存储到本地的DRBD存储设备上,一份就发给TCP/IP协议栈,通过网卡传输到B节点的TCP/IP协议栈,B节点运行的DRBD模块同样在数据通路上坚持,发现有数据过来就存储到DRBD对应的位置上。如果A节点宕机,B节点上线,B节点接收到数据存储到本地,当A节点恢复以后在把变动数据同步到A节点上。

流程如下:

  • SERVICE将数据写入 FIEL SYSEM->BUFFER CACHE->DRDB
  • DRDB兵分两路一路通过磁盘DISK DRIVER写入磁盘
  • 另外一路通过TCP/IP将数据通过网卡发送到对端DRBD节点

工作模式:

  • 同步模式:当写入A服务器和B服务器成功后才返回。这是DRBD协议的C模式。生产环境中该模式最常用。
  • 异步模式:写入A服务器后返回,还有可能是写入本地服务器和远端服务器的缓存成功后返回,这属于DRBD的A、B级别。

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

版本管理工具Git(三)Gitlab高可用第4张

修改配置文件

下面是主配置文件

版本管理工具Git(三)Gitlab高可用第5张

/etc/drbd.conf是主配置文件,但是它里面引用了2个,所以真正需要配置的是在它包含的配置文件中进行配置。

版本管理工具Git(三)Gitlab高可用第6张

/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这是一个模板文件。

版本管理工具Git(三)Gitlab高可用第7张

默认这个配置文件里面没有配置什么具体内容

版本管理工具Git(三)Gitlab高可用第8张

我这里就配置了几项,主要就是协议。其他其实都不用配置都是默认值。

版本管理工具Git(三)Gitlab高可用第9张

*.res资源文件说明

默认没有这个文件,手动建立一个,以.res结尾

版本管理工具Git(三)Gitlab高可用第10张

资源是一个复制的数据集,它包括Resource name也就是资源名称、
Volumes也就是卷在一个资源集合里面可以有多个卷复制的使用共用一个复制流;另外还会包含DRBD device,这是一个虚拟块设备,在系统上表现是的/dev/XXX,这里可不是真实的设备,真是的设备都是/dev/sda|b之类的。如果是多个资源再会用到Volumes

版本管理工具Git(三)Gitlab高可用第11张

我的资源文件

版本管理工具Git(三)Gitlab高可用第12张

注意:网络连接方面建议使用背靠背的直连方式这条链路主要用于复制数据,我这里实验环境就共用一条链路。
如果你使用LVM如何找到块设备?

版本管理工具Git(三)Gitlab高可用第13张

如果你使用普通分区那就是/dev/sda|b[NUMBER]这种形式。

建立磁盘元数据和启用资源

保障你使用的块设备是空的否则会初始化失败。两个节点都要这样做初始化。

版本管理工具Git(三)Gitlab高可用第14张

启用资源,反之就是 drbdadm down 资源名称

版本管理工具Git(三)Gitlab高可用第15张

它这里知道自己是Secondary但是不知道对方,是因为防火墙导致,把两边防火墙关闭就好了,当然你也可以添加测录。

版本管理工具Git(三)Gitlab高可用第16张

两台都是这个状态表示正常

版本管理工具Git(三)Gitlab高可用第17张

启动服务

版本管理工具Git(三)Gitlab高可用第18张

版本管理工具Git(三)Gitlab高可用第19张

这时候我们之前没有的那个/dev/drbd0就出现了

版本管理工具Git(三)Gitlab高可用第20张

设置主节点并创建文件系统

这一步只能在你确定是主节点的节点上执行,不需要两个节点都执行。设置完成后再次查看状态。

版本管理工具Git(三)Gitlab高可用第21张

文件系统只能挂载到主节点上,也只能在设置了主节点后才能对这个/dev/drbd0这个设备格式化和挂载。

版本管理工具Git(三)Gitlab高可用第22张

再次查看同步已经完成

版本管理工具Git(三)Gitlab高可用第23张

大家肯定觉得我之前安装gitlab的时候设置仓库路径就是/data,没错,我做HA之前把gitlab服务停止掉,然后通过cp –rp命令吧git-data目录都拷贝到其他地方,然后才做的其他操作,当HA完成后使用相同的命令拷贝回来就行。

主从切换

版本管理工具Git(三)Gitlab高可用第24张

监控工具

drbd-overview   检查角色以及同步状态

版本管理工具Git(三)Gitlab高可用第25张

drbdadm status RESOURCE_NAME

版本管理工具Git(三)Gitlab高可用第26张

drbdsetup status gitdatadrbd --verbose –statistics  详细信息

版本管理工具Git(三)Gitlab高可用第27张

部署遇到的错误

1.not defined in your config (for this host).

版本管理工具Git(三)Gitlab高可用第28张

版本管理工具Git(三)Gitlab高可用第29张

这是因为配置文件里定义的和主机实际的名称不符。修改/etc/hostname文件。

2.open(/dev/mapper/gitdata-lv_gitdata) failed: Device or resource busy

版本管理工具Git(三)Gitlab高可用第30张

这里是因为我的那个LVM卷挂载了,需要先卸载

3.'drbdmeta 0 v08 terminated with exit code 40

版本管理工具Git(三)Gitlab高可用第31张

说明该设备数据不为0

版本管理工具Git(三)Gitlab高可用第32张

参考文档

https://docs.gitlab.com/omnibus/roles/README.html
https://docs.gitlab.com/ce/administration/high_availability/README.html
https://docs.linbit.com/docs/users-guide-8.4/#s-distro-packages
https://www.cnblogs.com/wsl222000/p/5777382.html
https://segmentfault.com/q/1010000010290689
https://blog.csdn.net/tjiyu/article/details/52723125
https://blog.csdn.net/yanggd1987/article/details/50504599
http://blog.51cto.com/freeloda/1275384

免责声明:文章转载自《版本管理工具Git(三)Gitlab高可用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇原创-PromQL语法solr6.6初探之查询篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

有注释的LED驱动

裸机下控制LED灯非常方便,只需要配置好GPIO引脚功能,然后向GPIO引脚映射的内存地址处写入数据即可,但linux下驱动就不那么简单了,需要结合字符设备驱动的架构,然后将功能实现添加进去,笔者参考linux设备驱动程序(第三版)中介绍的新的接口来实现驱动。友善之臂官网提供的源码是基于miscdevice的驱动,而且接口似乎有点老,比如在linux设备驱...

ubuntu18.04优盘只读问题

1、打开终端,查看系统日志文件: tail -f /var/log/syslog 2、插入优盘。 3、系统文集syslog输出以下内容: Feb 26 20:40:08 noi dbus-daemon[1270]: [session uid=1000 pid=1270] Successfully activated service 'org.gnome.S...

gitLab创建自己的私有库

一.创建私有库的流程简介 创建一个项目,留着后面的流程3制作私有库 在可以创建私有库的地方创建一个code repository, code repository是代码仓库,我们把代码上传到这个仓库。 在可以创建私有库的地方创建一个spec repository, spec repository是配置仓库,所有的配置按照包名、版本号分门别类的存放在这个仓...

linux挂载mount参数优化

一、 1) 蓝色:表示经过优化的xfs mount时的参数defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8,attr2,logbsize=256k 2) 灰色:表示默认的xfs mount时的参数defaults,noatime,nodiratime,nobarri...

【转】Android 源码编译make的错误处理--不错

原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载或参考android源码下载方式 Android编译版本:PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台:Linux yanggang 2.6.35-30-g...

GitLab实战操作指南

一、Git原理 1、Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。 2、Git有什么特点? 简单来说就是:高端大气上档次! 3、GIt与SVN区别 SVN管理: 属于集中式版本控制系统,版本库是集中存放在中央服务器,必须联网才能工作,脱离局域网,采取互联网提交大文件会比较慢   Git管理: 属于分布式版本控制系统,根...