Gitlab + DRBD HA

2023-10-28 21:20
文章标签 ha gitlab drbd

本文主要是介绍Gitlab + DRBD HA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

部署简介:

  为了gitlab有容灾的能力,所以部署一个HA的小集群,用到的软件有 gitlab 和brbd,目前现有环境为

master节点

    系统版本:CentOS release 6.5 (Final)

    gitlab版本: 8.12.4

slave节点

    系统版本: CentOS Linux release 7.3.1611 (Core)

    gitlab 版本:11.5.3

一、gItlab安装部署

简介: GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。

 

为了更简单的部署直接选择的是用官服rpm包部署

1、安装依赖

yum -y install policycoreutils openssh-server openssh-clients postfix

2、设置postfix开机自启,并启动,postfix支持gitlab发信功能

systemctl enable postfix && systemctl start postfix

 

3、下载gitlab安装包,然后安装
centos 6系统的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
centos 7系统的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.0.0-ce.0.el7.x86_64.rpm  #(根据需求自己选择版本)
rpm -i gitlab-ce-8.0.0-ce.0.el7.x86_64.rpm
4、修改gitlab配置文件指定服务器ip和自定义端口:
vim  /etc/gitlab/gitlab.rb
将  external_url    ‘http://localhost’   修改为 http://IP:端口
这里端口如果被占用或者无法使用自行检查一下防火墙等
5、重置并启动GitLab
gitlab-ctl reconfigure #加载配置文件
gitlab-ctl restart #重新启动
ok: run: gitlab-git-http-server: (pid 3922) 1s
ok: run: logrotate: (pid 3929) 0s
ok: run: nginx: (pid 3936) 1s
ok: run: postgresql: (pid 3941) 0s
ok: run: redis: (pid 3950) 0s
ok: run: sidekiq: (pid 3955) 0s
ok: run: unicorn: (pid 3961) 1s

#提示启动成功

6、访问gitlab页面

按照刚刚配置文件里面填写的进行访问

初始账户: root 密码: 5iveL!fe

 

我的不知道怎么回事,初始密码无效,所以还要费劲找回一下

gitlab-rails console production #登录gitlab终端user = User.where(id: 1).first
user.password = 'secret_pass'
user.password_confirmation = 'secret_pass' #新密码user.save! #保存

7、设置gitlab发信功能

发信系统用的默认的postfix,smtp是默认开启的,两个都启用了,两个都不会工作。
我这里设置关闭smtp,开启postfix
关闭smtp方法:vim /etc/gitlab/gitlab.rb
找到#gitlab_rails['smtp_enable'] = true 改为 gitlab_rails['smtp_enable'] = false
修改后执行gitlab-ctl reconfigure
另一种是关闭postfix,设置开启smtp,相关教程请参考官网https://doc.gitlab.cc/omnibus/settings/smtp.html
测试是否可以邮件通知:
登录并添加一个用户,我这里使用qq邮箱添加一个用户
如果邮箱能正常收到注册邮件说明发件系统正常(可能会在垃圾邮件里)
8、可能出现的问题
报错处理:一.登录502报错一般是权限问题,解决方法:chmod -R 755 /var/log/gitlab如果还不行,请检查你的内存,安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.二.gitlab-ctl reconfigure报错n itdb: could not obtain information about current user: Permission deniedError executing action `run` on resource 'execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8]'根据报错信息大概锁定用户的权限问题,安装gitlab-ce会自动添加用户四个用户:gitlab-www:x:497:498::/var/opt/gitlab/nginx:/bin/falsegit:x:496:497::/var/opt/gitlab:/bin/shgitlab-redis:x:495:496::/var/opt/gitlab/redis:/bin/nologingitlab-psql:x:494:495::/var/opt/gitlab/postgresql:/bin/shgoogle和百度都搜索不到解决方法,既然出错提示到权限问题,那么按照这个方向去查就不会有问题,后来查了文件/etc/passwd的权限是600,给予644权限后,成功解决报错问题

 

9、参考资料

 

gitlab中文网 :https://gitlab.com/larryli/gitlab

二、DRBD安装部署 

简介:DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。

 

PS:这里网上安装部署教程很多,大家可以多查查综合考量一下

1、准备环境

 

修改主机名称

vim /etc/sysconfig/network

配置hosts

192.168.9.100 gitlab2
192.168.6.90 gitlab1

磁盘分区

(这里需要注意一下,分区不能挂载,不可以现在格式化,如果是lvm分区需要在lvm分区上在进行分区,否则就会报错)

报错信息

[root@gitlab2 drbd.d]# drbdadm create-md all
md_offset 161061269504
al_offset 161061236736
bm_offset 161056321536Found ext3 filesystem157286400 kB data area apparently used157281564 kB left usable by current configurationDevice size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either* use external meta data (recommended)* shrink that filesystem first* zero out the device (destroy the filesystem)
Operation refused.Command 'drbdmeta 0 v08 /dev/mapper/cl-drbd0 internal create-md' terminated with exit code 40

对新磁盘分区

[root@srv5 ~]# fdisk /dev/sdbCommand (m for help): n
Command actione   extendedp   primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-130, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): 
Using default value 130Command (m for help): n
Command actionl   logical (5 or over)p   primary partition (1-4)
l
First cylinder (1-130, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): 
Using default value 130Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
载入磁盘信息
partprobe /dev/sdb
cat /proc/partions

2、安装配置DRBD

 

两台机器分别安装drbd

因为可能自带的yum包里没有 brdb包所以要配置一下yum仓库

#相关yum 仓库地址  http://elrepo.org/tiki/tiki-index.php  

yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

yum -y install drbd*

 

安装完成之后需要检查一下内核是否加载了brdb模块 (搞了好久...)

modprobe -l | grep -i drbd

如果没有需要去dbrd官网去下载内核驱动

https://www.linbit.com/en/drbd-community/drbd-download/

根据自己的dbrdb版本选择内核驱动程序

我选择的是这个,然后下载下来,解压。

make && make install #安装

modprobe drbd #加载drbd模块
lsmod |grep drbd #检查

 

3、修改配置文件

/etc/drbd.conf

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

global_common.conf

global {usage-count no;
}
common {protocol C;startup {wfc-timeout 15;  degr-wfc-timeout 15;  outdated-wfc-timeout 15;  }disk {on-io-error detach;  fencing resource-only;  }net {cram-hmac-alg sha1;  shared-secret "123456";   }syncer {rate 100M;  }
}

创建一个xserver.res

resource xserver {   meta-disk internal;   device /dev/drbd0; #device指定的參数最后必须有一个数字,用于global的minor-count,#否则会报错。device指定drbd应用层设备。 on srv5.localdomain{    #注意:drbd配置文件里。机器名大写和小写敏感。address 192.168.8.5:7789;   disk /dev/sdb5;    #新建的分区磁盘}   on srv6.localdomain {   address 192.168.8.6:7789;   disk /dev/sdb5;  }   
}

 

两个服务器上的配置完全一样就ok

4、在两台机器上创建drbd元数据

[root@srv5 ~]# drbdadm create-md all
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.

 

如果中间提示 选择yes就好了

[root@gitlab2 drbd.d]# drbdadm create-md all
md_offset 161060220928
al_offset 161060188160
bm_offset 161055272960

Found some data

==> This might destroy existing data! <==

Do you want to proceed?
[need to type 'yes' to confirm] yes

initializing activity log
initializing bitmap (4800 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

5、启动服务

因为我服务器版本不同启动命令不一样

centos6 :

service drbd start

chkconfig brdb on

centos7:

systemctl start drbd

systemctl enable drbd

6、设置主节点

 

在两台机器上用以下的命令drbd-overview或者cat /proc/drbd查看,发现都是Secondary 备份状态
[root@srv5 ~]# drbd-overview
  0:xserver  Connected Secondary/Secondary Inconsistent/Inconsistent C r----- 

 

在主节点上执行命令,将设置为主节点

drbdadm -- --overwrite-data-of-peer primary all

查看状态 (等待同步结束)

[root@gitlab2 drbd.d]# cat /proc/drbd
version: 8.4.11 (api:1/proto:86-101)
srcversion: C27D50EE6C67ED861348AA6
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:27740336 nr:0 dw:0 dr:27741248 al:8 bm:0 lo:0 pe:2 ua:0 ap:0 ep:1 wo:f oos:129540892
[==>.................] sync'ed: 17.7% (126504/153592)M
finish: 3:30:25 speed: 10,240 (10,140) K/sec

转载于:https://www.cnblogs.com/mjiu/p/10577904.html

这篇关于Gitlab + DRBD HA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296041

相关文章

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软

Gerrit与Gitlab同步配置replication其他配置

一、Gerrit与Gitlab同步配置 当配置好gerrit环境后,还需要与现有gitlab库进行同步配置,否则会影响现有开发与打包流程。 1.安装gerrit replication插件 unzip gerrit.warcp WEB-INF/plugins/replication.jar ~/temp/ssh -p 29418 admin@172.19.16.64 gerrit plu

git命令上传代码到gitHub、gitLab

1 、输入git账号和密码 git config --global user.name"git账号" git config --global user.name"密码" 2.添加要上传的SSH (如果你的文件已经有了SSH,删除本身有的)git remote rm origin 添加 git remote add origin SSH或http 3 添加本地的所有文件  git ad

【gitlab 上传代码】gitlab 推送本地代码到远程仓库

1、安装git。 2、新建项目,只勾选私有,或者公开,注意不要勾选readme 3、添加和配置SSH公钥 cd ~/.ssh如果提示 “ No such file or directory”,手动的创建一个 .ssh文件夹即可mkdir ~/.sshgit config --global user.name "赖德发"git config --global user.email "lai

828华为云征文|华为云Flexus X实例docker部署最新gitlab社区版,搭建自己的私人代码仓库

828华为云征文|华为云Flexus X实例docker部署最新gitlab社区版,搭建自己的私人代码仓库 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新

k8s集群本地搭建,使用gitlab、harbor、jenkens、cicd来实现devops自动化构建

k8s集群本地搭建 准备:一台windows即可我windows内存是32gb的,6核,每核2线程全程使用终端 ssh命令操作.我是直接用的mac点操作windows,然后windows连接虚拟机即可.虚拟机记得改网卡,这样才能保证以后ip不变.介绍:k8s集群本地搭建(1master、2node)k8x运用devops来自动化构建服务(gitlab、harbor、jenkens、cicd)简介

快看 | Java连接集成Kerberos的HA HDFS方案

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 来源:http://suo.im/5SGnSD 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 在实施方案前,假设读者已经基本熟悉以下技术  (不细说) Java,mavenhdfs,kerberos 方案实施 最后目录大概如下新建maven工程,pom.xml配置, 添加

三十分钟完成 Gitlab 搭建安装指南(支持 HTTPS 访问)

背景 由于我们早期使用 phabricator 进行代码管理,但是在使用的过程当中发现和社区的 github 使用方式有些不同,所以为了让大伙都习惯 github 社区相同的使用风格,所以我们换成了 gitlab 作为公司内部的代码管理系统;并且其强大的 CI/CD 的方式为后续的持续集成工作打下基础。 注意 Gitlab 分为 社区版 (gitlab-ce) 与 企业版 (gitlab-ee)

gitlab结合docker实现CI/CD

gitlab的continue integration 和 continue delivery,因为高可用尚未实现暂时不做continue deployment 1.部署gitlab-runner 官网:https://docs.gitlab.com/runner/install/docker.html centos7下docker部署方式。 docker run -d -

Gitlab删除本地标签和分支

Gitlab 删除本地分支 删除分支 git branch -d <BranchName> 删除标签 要删除本地 Git 标签,可以按照以下步骤操作: 使用 git tag 命令查看本地已有标签。 根据需要选择要删除的标签名称。 使用 git tag -d 命令删除选择的标签。 git tag -d <TagName> 使用 git tag 命令确认标签已被删除。