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
- 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发信功能
- 报错处理:
- 一.登录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 denied
- Error 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/false
- git:x:496:497::/var/opt/gitlab:/bin/sh
- gitlab-redis:x:495:496::/var/opt/gitlab/redis:/bin/nologin
- gitlab-psql:x:494:495::/var/opt/gitlab/postgresql:/bin/sh
- google和百度都搜索不到解决方法,既然出错提示到权限问题,那么按照这个方向去查就不会有问题,后来查了文件/etc/passwd的权限是600,给予644权限后,成功解决报错问题
9、参考资料
二、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 161056321536
- Found ext3 filesystem
- 157286400 kB data area apparently used
- 157281564 kB left usable by current configuration
- Device 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/sdb
- Command (m for help): n
- Command action
- e extended
- p 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 130
- Command (m for help): n
- Command action
- l 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 130
- Command (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
Gitlab + DRBD HA的更多相关文章
- linux服务之drbd
http://www.drbd.org/docs/about/http://oss.linbit.com/drbd/ 一般我们会在生产环境的MYSQL中用drbd +ha做master 备份,当然这是 ...
- MySQL常见架构的应用
MySQL 的架构设计 MySQL 架构一定要结合前台业务来设计.优化,所以不管是哪种架构.根据业务要求组合成符合需求的即是最好的.不能泛泛而谈同时.也必须注意数据的安全(如ipsec,ssh,vpn ...
- Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...
- 高可用集群(HA)之DRBD原理和基础配置
目录 1.工作原理图 2.用户空间工具 3.工作模式 4.实现主备故障自动切换 5.所需软件 6.配置文件 7.详细配置 1.配置通用属性信息 2.定义一个资源 3.初始化资源 ...
- CentOS 7 MySQL HA之DRBD
一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实 ...
- 【原】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 ...
- gitlab HA集群
https://docs.gitlab.com/ee/administration/high_availability/gitlab.html https://about.gitlab.com/hig ...
- 版本管理工具Git(三)Gitlab高可用
高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...
- gitlab高可用模式
高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...
随机推荐
- Markdown高级使用之流程图
流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid.主要内容大体分为:方向.节点.节点间的连接关系,下面就围绕这三个点来整理. mermaid支持流程图.甘特图和时序图, ...
- hashmap有一个loadFactory为什么是0.75从泊松分布解析看看
简述: 写这篇文章是看到网上的一篇面试题,有面试官问hashmap有一个loadFactory为什么是0.75 我先解释一下 0.75上下文,当一个hashmap初始数组大小暂时不考虑扩容情况,初始 ...
- 二进制格式mysql
1.二进制MySQL安装 #下载二进制格式的mysql软件包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31- ...
- git merge了错误分支,如何优雅的回退到merge前的状态?
git merge了错误分支,如何优雅的回退到merge前的状态? 没push的话 git reset --hard (a分支5点那个时候commit之后的sha1) 然后重新 git merge
- C# 9 新特性 —— 补充篇
C# 9 新特性 -- 补充篇 Intro 前面我们分别介绍了一些 C# 9 中的新特性,还有一些我觉得需要了解一下的新特性,写一篇作为补充. Top-Level Statements 在以往的代码里 ...
- 鸿蒙HarmonyOS应用开发落地实践,Harmony Go 技术沙龙落地北京
12月26日,华为消费者BG软件部开源中心与51CTO Harmony OS技术社区携手,共同主办了主题为"Harmony OS 应用开发落地实践"的 Harmony Go 技术沙 ...
- Phoneix(四)hbase导入数据同时与phoenix实现映射同步
一.说明 先创建一个hbase表格,能够导入本地数据到hbase中,最后能够通过phoneix进行访问. 1.数据准备(10W条,样例如下),文件test.txt 0,20190520164020,1 ...
- Hbase性能调优(一)
转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...
- [ABP教程]第二章 图书列表页面
Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...
- “500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】
"500 oops socket" Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)[成功完美简单极致] #自 ...