gitlab搭建+主从实时同步

本文参考:https://www.jianshu.com/p/52de6a8d29d6
https://www.cnblogs.com/netonline/archive/2017/10/13/7660767.html

lsyncd复制+pgsql复制

1.安装gitlab (主、从)

* 配置yum源

vi /etc/yum.repos.d/gitlab-ce.repo

复制以下内容:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

* 更新本地yum缓存

yum makecache

* 安装GitLab社区版

yum install gitlab-ce #自动安装最新版本

注:若需安装指定版本,则添加版本号即可,即yum install gitlab-ce-x.x.x

* 加载配置文件

gitlab-ctl reconfigure

* 修改配置文件

vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
Image.png
Image [1].png

* 修改域名

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
Image [2].png

* 修改GitLab服务端口

vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
Image [3].png

* 启动服务

gitlab-ctl start # 启动所有 gitlab 组件;

* GitLab常用命令


gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
gitlab-ctl reconfigure # 启动服务;(重新加载配置文件,在GitLab初次安装后可以使用,但是在业务环境中不可随意使用,reconfigure会把一些过去的config还原,导致修改的端口以及域名等都没有了。)
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;

使用lsyncd复制数据

2.安装lsyncd(主)

yum install epel-release

 yum install lsyncd

* 修改配置文件

vi /etc/lsyncd.conf 
settings {
    logfile ="/var/log/lsyncd/lsyncd.log",
    statusFile ="/var/log/lsyncd/lsyncd.status",
    inotifyMode = "CloseWrite",
    maxProcesses = 8,#同时最大起的rsync进程数,一个rsync同步一个文件
    }


-- IV. 远程目录同步,rsync模式 + ssh shell
sync {
    default.rsync,
    source    = "/var/opt/gitlab",#源目录,路径使用绝对路径
    target    = "root@192.168.1.6:/var/opt/gitlab/",#目标目录
    -- 上面target,注意如果是普通用户,必须拥有写权限
    exclude = { "backups", "gitlab-ci", "sockets", "gitlab.yml", "redis", "postmaster.pid","recovery.conf","postgresql.conf","pg_hba.conf"},
    maxDelays = 5,#统计到多少次监控事件即开始一次同步
    delay = 30,#若30s内未出发5次监控事件,则每30s同步一次
    -- init = true,
    rsync     = {
        binary = "/usr/bin/rsync",#rsync可执行文件
        archive = true,#保持文件所有属性
        compress = true,#压缩传输,是否开启取决于带宽及cpu
        bwlimit   = 2000 #限速 kb/s
        -- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
        -- 如果要指定其它端口,请用上面的rsh
        }
    }

3、配置免密登录

* 生成秘钥

通过命令”ssh-keygen -t rsa“,生成之后会在用户的根目录生成一个 “.ssh”的文件夹

ssh-keygen -t rsa
Image [4].png

vi ~/.ssh/known_hosts #删除对应ip的相关rsa信息

* 发送公钥到从机

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.6

4、重启lsyncd服务

systemctl restart lsyncd

5、从机也要安装lsyncd服务

6、需要重起postgresql (从)

gitlab-ctl stop postgresql

gitlab-ctl start postgresql

gitlab的PostgresSQL复制

只使用lsyncd对代码层是好使的,但是如果涉及到用户的操作,会导致失败,从库的PostgresSQL起不起来,所以在上面的基础上,再做一个PostgresSQL的复制。

1、主库配置

* 创建一个有登录和复制权限的账号

由于gitlab上的postgresql已经创建了复制账号,所以不用再创建
有账号可不必进行下面的操作
登录PostgresSQL

su - gitlab-psql
psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
Image [5].png
select * from pg_roles;
Image [6].png

否则创建账号

postgres=#create role repl login replication encrypted password 'repl@123';

* 认证文件pg_hba.conf

cd /var/opt/gitlab/postgresql/data
vi pg_hba.conf 

在最下面添加可访问远程ip,trust代表不需要密码访问

host  replication gitlab_replicator 192.168.1.6/32 trust
Image [7].png

* 修改配置文件

vi postgresql.conf

修改如下内容

#监听服务器
listen_addresses = '*'

#主从设置为热备模式,流复制必选参数
wal_level = hot_standby

#流复制允许的连接进程,一般同standby数量一致
max_wal_senders = 2

#流复制在没有基于文件的连续归档时,主服务器可能在备机收到WAL日志前回收这些旧的WAL,此时备机需要重新从一个新的基础备份初始化;可设置wal_keep_segments为一个足够高的值来确保旧的WAL段不会被太早重用;1个WAL日志为16MB,所以在设置wal_keep_segments时,在满足空间的前提下可以尽量设置大一些
wal_keep_segments = 64

* 重启服务

gitlab-ctl restart postgresql

2、从库配置

* 备份主库的数据

备份之前先把主库的lsyncd服务停掉,否则会同步主库数据,清空data目录

cd /opt/gitlab/embedded/postgresql/9.6/bin

./pg_basebackup -h 192.168.1.9 -p 5432 -U gitlab_replicator -F p -P -D  /var/opt/gitlab/postgresql/data/

* 赋予备份目录权限

chown -R gitlab-psql:root  /var/opt/gitlab/postgresql/data/

* 修改从库配置文件postgresql.conf

cd /var/opt/gitlab/postgresql/data/
vi postgresql.conf
#在基础备份时,初始化文件是从主库复制来的,所以配置文件一致,可将wal_level,max_wal_senders与wal_keep_segments等参数注释,以下是新增或修改的参数

#在备份的同时允许查询
hot_standby = on

#可选,流复制最大延迟
max_standby_streaming_delay = 30s

#可选,从向主报告状态的最大间隔时间
wal_receiver_status_interval = 10s

#可选,查询冲突时向主反馈
hot_standby_feedback = on

#默认参数,非主从配置相关参数,表示到数据库的连接数,一般从库做主要的读服务时,设置值需要高于主库
max_connections = 1000

* 修改恢复文件recovery.conf

复制文件

 cp /opt/gitlab/embedded/postgresql/9.6/share/recovery.conf.sample ./recovery.conf

更改文件所属

chown gitlab-psql:root recovery.conf

修改文件

vi recovery.conf

#指明从库身份
standby_mode = on

#连接到主库信息
primary_conninfo = 'host=192.168.1.9 port=5432 user=gitlab_replicator'

#同步到最新数据
recovery_target_timeline = 'latest'

* 重启服务

gitlab-ctl restart postgresql

启动主库的lsyncd服务

systemctl restart lsyncd

* 验证

主库sender进程

 ps -ef | grep postgres
Image [8].png

从库receiver进程

 ps -ef | grep postgres
Image [9].png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容