gitlab高可用架构部署文档

系统环境
操作系统:centos7.6
gitlab版本:12.6.1
数据库版本:postgresql9.6
redis版本:3.2

架构图

postgresql数据库部署

安装yum源
yum -y install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm

安装数据库
yum -y install postgresql96
yum -y install postgresql96-server postgresql96-devel

初始化数据库
/usr/pgsql-9.6/bin/postgresql96-setup initdb

修改启动文件名称
mv /usr/lib/systemd/system/postgresql-9.6.service /usr/lib/systemd/system/postgresql.service

开机自启动
systemctl enable postgresql

设置环境变量
export PATH=/usr/pgsql-9.6/bin:$PATH
source /etc/profile

启动数据库
systemctl start postgresql

修改配置文件
vim /var/lib/pgsql/9.6/data/pg_hba.conf
在最后增加网络信任
host all all 0.0.0.0/0 trust

vim /var/lib/pgsql/9.6/data/postgresql.conf
修改侦听地址
listen_addresses = ‘*‘

安装扩展插件
yum -y install postgresql96-contrib
注:不要使用默认yum install postgresql-contrib安装,原因:默认安装版本是9.2,版本太低

重启服务
systemctl restart postgresql

登录数据库进行初始设置
[[email protected] ~]# su - postgres
-bash-4.2$ psql

查看信息
\l
退出数据库
lq
查看用户
\du

CREATE USER gitlab WITH PASSWORD ‘pass‘;
CREATE DATABASE gitlabhq_production;
ALTER ROLE gitlab CREATEROLE CREATEDB;
ALTER ROLE gitlab CREATEROLE SUPERUSER;

退出登录,重新登入
su - postgres

-bash-4.2$ psql gitlabhq_production
psql (9.6.6)
Type "help" for help.

postgres=# CREATE EXTENSION pg_trgm;

退出重启数据库服务
systemctl restart postgresql

注:数据库高可用可参考https://www.cnblogs.com/linkenpark/p/8339936.html
或者官网https://docs.gitlab.com/ee/administration/high_availability/database.html#configure-using-omnibus-for-high-availability


redis安装部署可参考其他文档

NFS文件共享

[[email protected] gitlab]# cat /etc/exports

/var/opt/gitlab/.ssh 172.28.13.0/24(rw,sync,no_root_squash)
/var/opt/gitlab/gitlab-rails/uploads 172.28.13.0/24(rw,sync,no_root_squash)
/var/opt/gitlab/gitlab-rails/shared 172.28.13.0/24(rw,sync,no_root_squash)
/var/opt/gitlab/gitlab-ci/builds 172.28.13.0/24(rw,sync,no_root_squash)
/var/opt/gitlab/git-data 172.28.13.0/24(rw,sync,no_root_squash)

服务端创建文件夹
mkdir -p /var/opt/gitlab/.ssh /var/opt/gitlab/gitlab-rails/uploads /var/opt/gitlab/gitlab-rails/shared /var/opt/gitlab/gitlab-ci/builds /var/opt/gitlab/git-data

服务端文件授权
chmod 777 -R /var/opt/

在gitlab应用程序节点创建文件夹
mkdir -p /var/opt/gitlab/.ssh /var/opt/gitlab/gitlab-rails/uploads /var/opt/gitlab/gitlab-rails/shared /var/opt/gitlab/gitlab-ci/builds /var/opt/gitlab/git-data

在gitlab应用程序节点挂载目录
mount -t nfs 172.28.13.235:/var/opt/gitlab/.ssh /var/opt/gitlab/.ssh
mount -t nfs 172.28.13.235:/var/opt/gitlab/gitlab-rails/uploads /var/opt/gitlab/gitlab-rails/uploads
mount -t nfs 172.28.13.235:/var/opt/gitlab/gitlab-rails/shared /var/opt/gitlab/gitlab-rails/shared
mount -t nfs 172.28.13.235:/var/opt/gitlab/gitlab-ci/builds /var/opt/gitlab/gitlab-ci/builds
mount -t nfs 172.28.13.235:/var/opt/gitlab/git-data /var/opt/gitlab/git-data

在gitlab应用程序节点修改挂载文件
vim /etc/fstab

gitlab双节点部署

git01配置
创建gitlab的yum仓库文件
vim /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 install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd postfix
systemctl enable sshd
systemctl restart sshd
systemctl enable postfix
systemctl restart postfix

yum安装gitlab-ce
yum install -y gitlab-ce
注:如果无法访问外网,可以自行下载https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.6.1-ce.0.el7.x86_64.rpm

然后使用本地yum安装
yum localinstall -y gitlab-ce-12.6.1-ce.0.el7.x86_64.rpm

修改配置文件
vim /etc/gitlab/gitlab.rb
external_url ‘http://qijian.example.com
gitlab_rails[‘time_zone‘] = ‘Asia/Shanghai‘
roles [‘application_role‘]
high_availability[‘mountpoint‘] = ‘/var/opt/gitlab/git-data‘
postgresql[‘enable‘] = false
gitlab_rails[‘db_adapter‘] = "postgresql"
gitlab_rails[‘db_encoding‘] = "utf8"
gitlab_rails[‘db_database‘] = "gitlabhq_production"
gitlab_rails[‘db_username‘] = "gitlab"
gitlab_rails[‘db_password‘] = "pass"
gitlab_rails[‘db_host‘] = "172.28.13.235"
gitlab_rails[‘db_port‘] = 5432
redis[‘enable‘] = false
gitlab_rails[‘redis_host‘] = "172.28.13.235"
gitlab_rails[‘redis_port‘] = 6379
gitlab_rails[‘redis_password‘] = "123456"
gitlab_rails[‘redis_database‘] = 0
nginx[‘enable‘] = true

创建启动服务
gitlab启动脚本
vim /etc/systemd/system/gitlab.service

[Unit]
Description=gitlab

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/gitlab-ctl start
ExecStop=/bin/gitlab-ctl stop

[Install]
WantedBy=multi-user.target

开机自启动
systemctl enable gitlab

使配置生效
gitlab-ctl reconfigure

注:如要再次初始化数据,运行 gitlab-rake gitlab:setup(一般前面执行了gitlab-ctl reconfigure已经初始化数据)
gitlab-ctl start

注:常用命令
查看日志:gitlab-ctl tail gitlab-rails
检测环境:gitlab-rake gitlab:check

git02配置
从git01把/etc/gitlab/gitlab-secrets.json 复制到 git2的/etc/gitlab目录下
touch /etc/gitlab/skip-auto-migrations

cat /etc/gitlab/gitlab.rb
external_url ‘http://qijian.example.com
gitlab_rails[‘time_zone‘] = ‘Asia/Shanghai‘
roles [‘application_role‘]
high_availability[‘mountpoint‘] = ‘/var/opt/gitlab/git-data‘
gitlab_rails[‘auto_migrate‘] = false
postgresql[‘enable‘] = false
gitlab_rails[‘db_adapter‘] = "postgresql"
gitlab_rails[‘db_encoding‘] = "utf8"
gitlab_rails[‘db_database‘] = "gitlabhq_production"
gitlab_rails[‘db_username‘] = "gitlab"
gitlab_rails[‘db_password‘] = "pass"
gitlab_rails[‘db_host‘] = "172.28.13.235"
gitlab_rails[‘db_port‘] = 5432
redis[‘enable‘] = false
gitlab_rails[‘redis_host‘] = "172.28.13.235"
gitlab_rails[‘redis_port‘] = 6379
gitlab_rails[‘redis_password‘] = "123456"
gitlab_rails[‘redis_database‘] = 0
nginx[‘enable‘] = true

使配置生效
gitlab-ctl reconfigure



前端负载均衡

前端再分别对http负载(可用nginx反向代理)

[[email protected] conf.d]# pwd
/etc/nginx/conf.d

[[email protected] conf.d]# cat qijian.example.com.conf
upstream gitlab_backend {
ip_hash;
server 172.28.13.236:80;
server 172.28.13.237:80;
}
server {
server_name qijian.example.com;

location / {
    proxy_pass http://gitlab_backend;
    proxy_set_header Host       $http_host;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
}

}

网页版访问测试
http://qijian.example.com/

ssh(可用HAproxy代理,或nginx TCP代理)
yum install haproxy -y

[[email protected] src]# cat /etc/haproxy/haproxy.cfg
global

log         127.0.0.1 local2

chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon

# turn on stats unix socket
stats socket /var/lib/haproxy/stats level admin 

defaults
retries 3
timeout client 360s
timeout server 360s
timeout connect 360s
maxconn 32000
option redispatch
option abortonclose
log global
timeout queue 1m
timeout http-request 360s
timeout check 3s

listen admin_stats
bind 0.0.0.0:11011
mode http
maxconn 10
stats refresh 10s
stats uri /web/status
stats auth admin:example
stats hide-version

listen sshd_22
bind 0.0.0.0:22
mode tcp
balance source
server sshd_vxi01 172.28.13.236:22 maxconn 2048 check inter 3000 rise 2 fall 3 weight 1
server sshd_vxi02 172.28.13.237:22 maxconn 2048 check inter 3000 rise 2 fall 3 weight 1

测试验证
将客户端密钥对公钥添加到gitlab

git clone [email protected]:chanping/front.git

gitlab集成域控制器AD验证

修改gitlab应用成程序节点配置文件
gitlab_rails[‘ldap_enabled‘] = true
gitlab_rails[‘ldap_servers‘] = YAML.load <<-‘EOS‘
main: # ‘main‘ is the GitLab ‘provider ID‘ of this LDAP server
label: ‘LDAP‘
host: ‘172.28.15.69‘
port: 389
uid: ‘sAMAccountName‘
bind_dn: ‘cn=admin001,cn=users,dc=vxiqijian,dc=com‘
password: ‘pwdpwd‘
encryption: ‘plain‘ # "start_tls" or "simple_tls" or "plain"
verify_certificates: true
active_directory: true
allow_username_or_email_login: false
lowercase_usernames: false
block_auto_created_users: false
base: ‘dc=example,dc=com‘
user_filter: ‘‘
EOS

使配置生效
gitlab-ctl reconfigure

检测gitlab与域控验证
gitlab-rake gitlab:ldap:check

注:如检测失败可以重启服务再次检测
gitlab-ctl restart

登录界面

至此,gitlab集群架构部署完成。

原文地址:https://blog.51cto.com/11212791/2467235

时间: 2024-07-31 10:31:25

gitlab高可用架构部署文档的相关文章

MHA高可用架构部署配置实例

MHA高可用架构部署配置实例 一.前言 1.1What's MHA?--原理简介 ? MHA--Master High Availability,目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的MySQL故障切换和主从提升的高可用软件. ? 这里我们提到了两个个关键点:"高可用","故障切换".我们逐一简单介绍一下这两者的含义. 1.1.1何为高可用? ? 高可用就是可用性强,在一定条件下(某个服务器出错或宕机)可以保证服务器可以正常运行,在一定程度

五、DHCP 及高可用架构部署配置

安装DHCP 1. 登录到ad02.open-cloud.com服务器,在Windows Powershell 中输入 Add-Windowsfeature DHCP ,RSAT-DHCP,添加DHCP 角色和管理工具,如图 2. 打开服务器管理器,选择"完成DHCP配置",如图 3. 在描述对话框,选择"下一步",如图 4. 在授权对话框,设置使用的用户凭据,选择"提交",如图 5. 完成DHCP 配置. 2.  配置DHCP 作用域.地址池.

线上测试高可用集群部署文档【我的技术我做主】

线上测试高可用集群部署文档 目录: 目录:1 项目需求:2 实现方式:2 拓扑图:3 系统及软件版本:3 安装步骤:4 IP分配:4 LVS和keepalived的安装和配置:4 LVS主配置:4 LVS2备 配置:7 web服务器配置9 Mysql-MHA高可用:13 Mysql主配置:13 manager管理端操作:15 VIP切换:16 测试:26 下面是centos5.6的系统环境,如果是centos6版本,只需改动少许地方即可,步骤一致 . ---- by 金戈铁马行飞燕 项目需求:

MySQL高可用架构-MHA环境部署记录

一.MHA介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.是一套优秀的作为MySQL高可用性 环境下故障切

CentOS 7 上部署Memcached 主主复制 + keepalived 高可用架构

实验环境 Memcached主主复制是指在任意一台Memcached服务器修改数据都会被同步到另外一台,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要设置VIP地址,提供给Memcached API客户端进行连接.可以使用kcepalived产生的VIP地址连接主Memceached服务器,并且提供高可用架构.本案例使用两台Memcahed服务器和一台测试主机来完成. 主Memcahed服务器IP:192.168.10.161 备Memcahed服

CentOS 7 部署百万pv项目(高可用架构)

PV简介 PV(Page View,页面浏览量)即点击量,通常意义上说PV的多少是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.pv的解释是这样的:一个访问者在24小时(0点-23点)内到底看了网站的几个页面.需要注意的是:同一个人浏览网站的同一个页面,不重复计算pv量,点击100次页只算1次. 百万pv网站架构 本次实验设计采用四层模式实现,主要分为前端反向代理层.web层.数据库缓存层和数据库层.前端反向代理层采用主备模式,web层采用集群模式,数据库缓存层采用主备模式,数据库层采用

hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclipse-plugin-2.5.0插件下载hadoop2.5.1汇总:最新编译 32位.64位安装.源码包.API下载及新特性等 新手指导:hadoop官网介绍及如何下载hadoop(2.4)各个版本与查看hadoop API介绍 从零教你在Linux环境下(ubuntu 12.04)如何编译hadoo

mysql数据库高可用架构-----MHA-0.56的详解

大家都知道,任何线上环境,都必须搭载高可用架构,是web的,也要是数据库的,严格来说更是整个架构的高可用. mysql作为时下比较热的数据库,高可用架构更加需求大.不过,以前老旧那一套已经不合时宜,现在用的比较多的就是MHA和PXC了. PXC的优势是做到同写同回滚,达到数据高度一致性,通过一些程序和代码来做第三方分发,可以做到一定程度的读写分离,是个相当不错的高可用解决方案,不过对网络要求比较高,配置也略复杂一些,最好是同一个机房里面做,不过这并不是本文重点,后面找时间再写相关的文章. 本文要

Codis 3.0 Release (密码验证) 群集部署文档

前言: Codis 3.x 由以下组件组成: Codis Server:基于 redis-2.8.21 分支开发.增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令.具体的修改可以参考文档 redis 的修改. Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议. 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy). 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例: