gitlab高可用部署方案

背景

公司计划将gitlab迁移上云,并部署成高可用方式,下面是gitlab高可用部署的详细方案,希望能对大家有所帮助。

架构图

在这里插入图片描述

部署两个完全一样的gitlab,其中gitlab有关目录的存储使用NAS来实现共享,数据库采用psql主从,访问入口使用slb来提供服务。

一、安装postgresql

1、环境

系统版本:    Centos7
数据库版本:  9.6.11
主库:       192.168.15.55
从库:       192.168.15.56

2、安装数据库

以下操作步骤请在两个节点进行,主库需要安装数据库软件以及初始化数据库,从库仅需要安装数据库软件即可无需初始化。
(1)下载源码包

wget --no-check-certificate https://ftp.postgresql.org/pub/source/v9.6.11/postgresql-9.6.11.tar.gz

(2)安装psql

yum install readline* zlib –y

tar -zxvf postgresql-9.6.11.tar.gz
cd postgresql-9.6.11
./configure --prefix=/data/postgresql/ --without-zlib
make 
make install

(3)初始化Postgresql数据库

adduser postgres
mkdir /data/postgresql/data
chown postgres /data/postgresql/data

#只在主库初始化
su - postgres
/data/postgresql/bin/initdb -D /data/postgresql/data

在这里插入图片描述

#初始化完毕之后启动数据库
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile start

在这里插入图片描述

(4)修改监听配置

vim /data/postgresql/data/postgresql.conf

在这里插入图片描述

(5)添加允许访问数据库的网段

vim /data/postgresql/data/pg_hba.conf
#添加
host    all             all             0.0.0.0/0            trust

在这里插入图片描述
4、5步骤只在主库执行。

3、主备数据库配置

主库配置
(1)创建复制用户,专门进行主从同步使用

su – postgres
/data/postgresql/bin/psql
create user rpl superuser password '123456';

在这里插入图片描述

(2)主库上配置从库允许的网段

vim /data/postgresql/data/pg_hba.conf
host    replication     rpl            192.168.15.0/0         md5

在这里插入图片描述

(3)修改主库参数文件

vim /data/postgresql/data/postgresql.conf
wal_level = hot_standby   #启用流复制  
max_wal_senders=2         #流复制允许连接进程  
wal_keep_segments =64     #xlog目录中最多容纳多少个wal日志文件,超过了则删掉最初的几个。
max_connections = 1000    #主库最大连接数

在这里插入图片描述

(4)重启主库服务

/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile restart

从库配置
(1)基础备份

#在从库无需拷贝主库的数据文件到本地,使用pg_basebackup可将主库的数据文件通过网络复制到本地、包括目录结构。
#备注:如果主库存在自定义表空间,此操作会失败
/data/postgresql/bin/pg_basebackup -h 192.168.15.55 -p 5432 -U rpl -F p -x -P -R -D /data/postgresql/data/

在这里插入图片描述

(2) 从库配置文件配置

vim /data/postgresql/data/postgresql.conf
hot_standby = on #从库上执行只读操作   
max_standby_streaming_delay = 30s #从库接收主库日志最大超时时间  
wal_receiver_status_interval = 10s #从库向主库报告的最大时间间隔  
hot_standby_feedback = off #从库与主库发生冲突的反馈信息  
max_connections = 1500 #数据库最大连接数

在这里插入图片描述

(3)创建恢复文件recovery.conf

recovery.conf 用于主库,从库切换时的参数配置。如果从库没有recovery.conf文件可拷贝模板
vim /data/postgresql/data/recovery.conf
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=192.168.15.55 port=5432 user=rpl password=123456'

在这里插入图片描述

(4)启动从库服务

chmod -R 0700 /data/postgresql/data/
su - postgres
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile start

4、主从状态检查

(1)查看主库sender进程信息

ps -ef|grep "wal sender process"

在这里插入图片描述
(2)查看从库receiver进程信息

ps -ef|grep "wal receiver"

在这里插入图片描述

(3)psql查询主从同步状态

select usename,application_name,client_addr,state,sync_state from  pg_stat_replication;

在这里插入图片描述
(4)主库集群状态

/data/postgresql/bin/pg_controldata /data/postgresql/data/ |grep "Database cluster state"

在这里插入图片描述
(5)从库集群状态

/data/postgresql/bin/pg_controldata /data/postgresql/data/ |grep "Database cluster state"

在这里插入图片描述

#主从数据同步验证,主库建库、从库进行查询测试
create database test owner postgres;

主库
在这里插入图片描述

从库
在这里插入图片描述
主从同步正常。
备注: 从库只有只读功能,无法做写入操作

5、创建gitlab所需用户与数据库

/data/postgresql/bin/psql
#创建用户
create role gitlab login encrypted password 'jiahe123';

#创建数据库
create database gitlab owner=gitlab ENCODING = 'UTF8';

在这里插入图片描述

6、postgresql扩展pg_trgm

(1)安装,两节点

cd /root/postgresql-9.6.11/contrib/btree_gin
make && make install

cd /root/postgresql-9.6.11/contrib/pg_trgm
make && make install

#重启postregsql
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile restart

(2)创建扩展

/data/postgresql/bin/psql gitlab
create extension pg_trgm;
create extension btree_gin;

在这里插入图片描述

二、安装gitlab

1、安装依赖

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

2、下载软件包

wget --no-check-certificate  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm

3、绑定阿里云nas

mkdir /data/gitlab
#挂载,步骤这里就不列了,阿里云nas挂载很简单

在这里插入图片描述

4、安装gitlab-ce

rpm -ivh gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm

在这里插入图片描述

5、修改gitlab配置文件(两个节点)

vim /etc/gitlab/gitlab.rb
external_url 'http://gittest.addnewer.com'
gitlab_rails['backup_path'] = "/data/gitlab/backups"
 git_data_dirs({
    
    
   "default" => {
    
    
     "path" => "/data/gitlab/git-data"
    }
 })
postgresql['enable'] = false
gitlab_rails['db_adapter'] = "postgresql"
gitlab_rails['db_encoding'] = "utf8"
gitlab_rails['db_database'] = "gitlab"
gitlab_rails['db_pool'] = 30
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "jiahe123"
gitlab_rails['db_host'] = "192.168.15.55"
gitlab_rails['db_port'] = "5432"
#这条配置很重要,要不然两个gitlab只能启动一个
unicorn['socket'] = '/var/opt/gitlab/sockets/gitlab.socket'

mkdir /var/opt/gitlab
cd /var/opt/gitlab

#ssh目录
mkdir /data/gitlab/.ssh
ln -s /data/gitlab/.ssh .ssh

#用户头像
mkdir /data/gitlab/gitlab-rails
ln -s /data/gitlab/gitlab-rails/ gitlab-rails

在这里插入图片描述

6、启动

#两节点都执行
gitlab-ctl reconfigure
gitlab-ctl restart

7、配置slb

阿里云购买一个slb,配置一个https,指向这两台服务器的80即可
在这里插入图片描述
记得开启会话保持

8、域名解析,之后登录

在这里插入图片描述
重置密码后登录。

三、迁移

1、导入数据

#停止相关数据连接
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

#还原
cd /data/gitlab/backups/
chmod 777 1638208742_2021_11_30_11.9.8_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=1638208742_2021_11_30_11.9.8

在这里插入图片描述
之后输入几个“yes”
在这里插入图片描述
同步完成。

2、重启gitlab

gitlab-ctl restart

在这里插入图片描述
使用之前gitlab的账户进行登录
在这里插入图片描述

3、点击runner界面,发现报500错误

在这里插入图片描述
原因: 这是因为之前的token与现在的不一样,需要删除一下

4、删除之前token,恢复访问

在这里插入图片描述

这个问题大家可以访问我上篇博客:
https://blog.csdn.net/qq_37837432/article/details/121642542

四、gitlab-runner配置

1、找一台服务器添加runner,测试这种方案是否可用

怎么安装runner这里就不介绍了
在这里插入图片描述
在这里插入图片描述
安装成功。

2、测试gitlab CI/CD是否可以正常运行

在这里插入图片描述
在这里插入图片描述
Gitlab-runner运行正常

3、测试负载均衡

在阿里云slb上轮流摘除相应服务器,看gitlab使用是否会有异常,没有的话证明高可用已部署成功。
移除一台

在这里插入图片描述
访问正常
在这里插入图片描述

迁移到此就成功了。

おすすめ

転載: blog.csdn.net/qq_37837432/article/details/121665318
おすすめ