部署简介:

  为了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 #重新启动
  1. ok: run: gitlab-git-http-server: (pid 3922) 1s
  2. ok: run: logrotate: (pid 3929) 0s
  3. ok: run: nginx: (pid 3936) 1s
  4. ok: run: postgresql: (pid 3941) 0s
  5. ok: run: redis: (pid 3950) 0s
  6. ok: run: sidekiq: (pid 3955) 0s
  7. ok: run: unicorn: (pid 3961) 1s

#提示启动成功

6、访问gitlab页面

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

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

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

  1. gitlab-rails console production #登录gitlab终端
  2.  
  3. user = User.where(id: 1).first
  4. user.password = 'secret_pass'
  5. user.password_confirmation = 'secret_pass' #新密码
  6.  
  7. 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、可能出现的问题
  1. 报错处理:
  2.  
  3. 一.登录502报错
  4.  
  5. 一般是权限问题,解决方法:chmod -R 755 /var/log/gitlab
  6.  
  7. 如果还不行,请检查你的内存,安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.
  8.  
  9. 二.gitlab-ctl reconfigure
  10.  
  11. 报错n itdb: could not obtain information about current user: Permission denied
  12.  
  13. Error executing action `run` on resource 'execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8]'
  14.  
  15. 根据报错信息大概锁定用户的权限问题,安装gitlab-ce会自动添加用户四个用户:
  16.  
  17. gitlab-www:x:497:498::/var/opt/gitlab/nginx:/bin/false
  18.  
  19. git:x:496:497::/var/opt/gitlab:/bin/sh
  20.  
  21. gitlab-redis:x:495:496::/var/opt/gitlab/redis:/bin/nologin
  22.  
  23. gitlab-psql:x:494:495::/var/opt/gitlab/postgresql:/bin/sh
  24.  
  25. google和百度都搜索不到解决方法,既然出错提示到权限问题,那么按照这个方向去查就不会有问题,后来查了文件/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分区上在进行分区,否则就会报错)

报错信息

  1. [root@gitlab2 drbd.d]# drbdadm create-md all
  2. md_offset 161061269504
  3. al_offset 161061236736
  4. bm_offset 161056321536
  5.  
  6. Found ext3 filesystem
  7. 157286400 kB data area apparently used
  8. 157281564 kB left usable by current configuration
  9.  
  10. Device size would be truncated, which
  11. would corrupt data and result in
  12. 'access beyond end of device' errors.
  13. You need to either
  14. * use external meta data (recommended)
  15. * shrink that filesystem first
  16. * zero out the device (destroy the filesystem)
  17. Operation refused.
  18.  
  19. Command 'drbdmeta 0 v08 /dev/mapper/cl-drbd0 internal create-md' terminated with exit code 40

对新磁盘分区

  1. [root@srv5 ~]# fdisk /dev/sdb
  2.  
  3. Command (m for help): n
  4. Command action
  5. e extended
  6. p primary partition (1-4)
  7. e
  8. Partition number (1-4): 1
  9. First cylinder (1-130, default 1):
  10. Using default value 1
  11. Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
  12. Using default value 130
  13.  
  14. Command (m for help): n
  15. Command action
  16. l logical (5 or over)
  17. p primary partition (1-4)
  18. l
  19. First cylinder (1-130, default 1):
  20. Using default value 1
  21. Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
  22. Using default value 130
  23.  
  24. Command (m for help): w
  25. The partition table has been altered!
  26.  
  27. Calling ioctl() to re-read partition table.
  28. Syncing disks.
  29. 载入磁盘信息
  30. partprobe /dev/sdb
  31. 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

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

global_common.conf

  1. global {
  2. usage-count no;
  3. }
  4. common {
  5. protocol C;
  6. startup {
  7. wfc-timeout 15;
  8. degr-wfc-timeout 15;
  9. outdated-wfc-timeout 15;
  10. }
  11. disk {
  12. on-io-error detach;
  13. fencing resource-only;
  14. }
  15. net {
  16. cram-hmac-alg sha1;
  17. shared-secret "123456";
  18. }
  19. syncer {
  20. rate 100M;
  21. }
  22. }

创建一个xserver.res

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

两个服务器上的配置完全一样就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

Gitlab + DRBD HA的更多相关文章

  1. linux服务之drbd

    http://www.drbd.org/docs/about/http://oss.linbit.com/drbd/ 一般我们会在生产环境的MYSQL中用drbd +ha做master 备份,当然这是 ...

  2. MySQL常见架构的应用

    MySQL 的架构设计 MySQL 架构一定要结合前台业务来设计.优化,所以不管是哪种架构.根据业务要求组合成符合需求的即是最好的.不能泛泛而谈同时.也必须注意数据的安全(如ipsec,ssh,vpn ...

  3. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  4. 高可用集群(HA)之DRBD原理和基础配置

    目录 1.工作原理图 2.用户空间工具 3.工作模式 4.实现主备故障自动切换 5.所需软件 6.配置文件 7.详细配置     1.配置通用属性信息     2.定义一个资源     3.初始化资源 ...

  5. CentOS 7 MySQL HA之DRBD

    一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实 ...

  6. 【原】ubuntu下Mysql的HA(corosync+pacemaker+drbd)

    一.前提准备: 1.OS:ubuntu 12.04 2.cat /etc/hosts: 127.0.0.1 localhost 192.168.153.154 ha1 192.168.153.155 ...

  7. gitlab HA集群

    https://docs.gitlab.com/ee/administration/high_availability/gitlab.html https://about.gitlab.com/hig ...

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

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

  9. gitlab高可用模式

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

随机推荐

  1. Markdown高级使用之流程图

    流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid.主要内容大体分为:方向.节点.节点间的连接关系,下面就围绕这三个点来整理. mermaid支持流程图.甘特图和时序图, ...

  2. hashmap有一个loadFactory为什么是0.75从泊松分布解析看看

    简述: 写这篇文章是看到网上的一篇面试题,有面试官问hashmap有一个loadFactory为什么是0.75  我先解释一下 0.75上下文,当一个hashmap初始数组大小暂时不考虑扩容情况,初始 ...

  3. 二进制格式mysql

    1.二进制MySQL安装 #下载二进制格式的mysql软件包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31- ...

  4. git merge了错误分支,如何优雅的回退到merge前的状态?

    git merge了错误分支,如何优雅的回退到merge前的状态? 没push的话 git reset --hard (a分支5点那个时候commit之后的sha1) 然后重新 git merge

  5. C# 9 新特性 —— 补充篇

    C# 9 新特性 -- 补充篇 Intro 前面我们分别介绍了一些 C# 9 中的新特性,还有一些我觉得需要了解一下的新特性,写一篇作为补充. Top-Level Statements 在以往的代码里 ...

  6. 鸿蒙HarmonyOS应用开发落地实践,Harmony Go 技术沙龙落地北京

    12月26日,华为消费者BG软件部开源中心与51CTO Harmony OS技术社区携手,共同主办了主题为"Harmony OS 应用开发落地实践"的 Harmony Go 技术沙 ...

  7. Phoneix(四)hbase导入数据同时与phoenix实现映射同步

    一.说明 先创建一个hbase表格,能够导入本地数据到hbase中,最后能够通过phoneix进行访问. 1.数据准备(10W条,样例如下),文件test.txt 0,20190520164020,1 ...

  8. Hbase性能调优(一)

    转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...

  9. [ABP教程]第二章 图书列表页面

    Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...

  10. “500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】

    "500 oops socket" Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)[成功完美简单极致] #自 ...