zoukankan      html  css  js  c++  java
  • Gitlab 11.9.1 高可用教程

    Gitlab 11.9.1 高可用教程

    一、 PostgreSQL数据迁移

    由于默认Gitlab的安装会内置Postgres数据库,并且没有对外,所以我们需要通过设置对应的Gitlab的配置将其中的数据库对外,
    以便于我们将其中的数据导出到外部的数据库。

    1. 公开PostgreSQL连接

    这里将把PostgreSQL公开对外。

    vi /etc/gitlab/gitlab.rb
    
    postgresql['listen_address'] = '0.0.0.0'
    postgresql['port'] = 5432
    postgresql['md5_auth_cidr_addresses'] = %w(192.168.1.1/24)
    postgresql['trust_auth_cidr_addresses'] = %w(127.0.0.1/24)
    postgresql['sql_user'] = "gitlab"
    postgresql['sql_user_password'] = Digest::MD5.hexdigest "securesqlpassword" << postgresql['sql_user']
    

    读者需要根据实际需要连接到数据库的IP地址段决定md5_auth_cidr_addresses参数,对于密码读者需要调整修改securesqlpassword
    为实际连接数据库的密码。

    为了保证调整数据库后,Gitlab依然可以正常工作,这里我们还需要调整gitlab_rails部分的设置即可,具体设置如下所示:

    gitlab_rails['db_host'] = '127.0.0.1'
    gitlab_rails['db_port'] = 5432
    gitlab_rails['db_username'] = "gitlab"
    gitlab_rails['db_password'] = "securesqlpassword"
    

    其中对应的连接的用户名和密码需要跟之前我们配置的信息一致,完成之后我们重启对应服务即可:

    gitlab-ctl reconfigure
    

    如果发现端口5432没有被监听等情况可以通过指令gitlab-ctl restart postgresql手动重启数据库。

    最后迁移我们通过使用pgadmin备份数据库然后在其他主机上进行恢复即可。

    2. 使用外部PostgreSQL数据库

    完成以上操作后,我们就可以在不影响服务的情况下开始进行服务的迁移工作了,在实际完成具体的迁移后我们
    就需要禁用自带的数据库,调整对应的连接字符串到我们安装的数据库上。

    vi /etc/gitlab/gitlab.rb
    
    postgresql['enable'] = false
    
    gitlab_rails['db_adapter'] = 'postgresql'
    gitlab_rails['db_encoding'] = 'utf8'
    gitlab_rails['db_host'] = '0.0.0.0'
    gitlab_rails['db_port'] = 5432
    gitlab_rails['db_username'] = 'USERNAME'
    gitlab_rails['db_password'] = 'PASSWORD'
    

    完成以上设置后我们需要重启服务gitlab-ctl reconfigure,至此我们就完成了数据库的切换工作。

    二、 Redis数据迁移

    1. 公开Redis连接

    如果读者希望Redis数据完全同步,通过公开进行数据的迁移,否则可以直接进行切换。

    redis['enable'] = true
    redis['port'] = 6379
    redis['bind'] = '0.0.0.0'
    redis['password'] = 'Redis Password'
    

    由于Redis公开了,那么Gitlab连接其服务的方式也要进行适当的调整,以保证服务可以正常访问:

    gitlab_rails['redis_host'] = '127.0.0.1'
    gitlab_rails['redis_port'] = 6379
    gitlab_rails['redis_socket'] = '/tmp/redis.sock'
    gitlab_rails['redis_password'] = 'Redis Password'
    

    其中我们需要注意Redis的密码需要与设定的时候一致。

    2. 使用外部存储

    如果使用外部存储,需要将自带的关闭然后调整对应地址进行访问即可:

    redis['enable'] = false
    
    gitlab_rails['redis_host'] = 'redis.example.com'
    gitlab_rails['redis_port'] = 6379
    gitlab_rails['redis_password'] = 'Redis Password'
    

    最后通过重启服务进行sudo gitlab-ctl reconfigure

    三、 PostgreSQL主从复制

    由于核心数据均存储在PostgreSQL,为了保证数据库的数据不存在丢失的情况,这里我们需要借助于其
    自身提供的流复制机制实现一主多从架构,从而保证数据在可允许的容错范围内实现数据多重备份,避免
    因物理损坏从而导致代码文件的丢失。

    以下教程均采用基于Docker部署的容器服务。

    1. 创建复制账户(主节点)

    为了能够让从节点能够连接到主节点进行数据的复制,这里我们需要创建拥有对应权限的单独账户用于日志
    的复制,首先我们需要进入到容器后通过如下指令进入到具体的数据库中:

    su postgres
    
    psql
    
    # 创建用户
    
    CREATE ROLE replica login replication encrypted password 'replica';
    

    注意其中的密码需要修改为实际的密码,最后通过q即可退出。

    2. 调整配置(主节点)

    为了能够修改配置文件,这里我们安装相关的依赖插件:

    apt-get update
    apt-get install vim
    

    完成安装后我们就可以进行文件的编辑了:

    vi /var/lib/postgresql/data/pg_hba.conf  #允许对应IP连接
    
    host replication replica 192.168.14.34/32 trust
    

    其中的IP地址需要根据实际从节点的IP地址决定,接着我们还需要调整其他对应的参数:

    vi /var/lib/postgresql/data/postgresql.conf
    
    listen_addresses = '*'   # 监听所有IP
    archive_mode = on  # 允许归档
    archive_command = 'cp %p /var/lib/postgresql/data/pg_archive/%f'  # 用该命令来归档logfile segment
    wal_level = hot_standby #开启热备
    max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
    wal_keep_segments = 64 # 设置流复制保留的最多的xlog数目,一份是 16M,注意机器磁盘 16M*64 = 1G
    wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
    max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的
    

    完成以上配置后主节点的容器就可以重启了。

    3. 拷贝数据(从节点)

    由于主节点已经产生的部分的数据,为了保证两边的数据的同步性,这里我们需要
    通过对应的复制指令实现基础数据的复制工作,这里我们需要指令如下指令进行对应的复制操作:

    su postgres
    
    rm -rf /var/lib/postgresql/data/*
    pg_basebackup -h 192.168.14.187 -U replica -D /var/lib/postgresql/data -X stream -P
    mkdir -p /var/lib/postgresql/data/pg_archive
    

    注意其中的-h后的IP地址需要为主节点的地址

    4. recovery.conf配置(从节点)

    vi /var/lib/postgresql/data/recovery.conf #增加如下内容
    
    standby_mode = on    # 说明该节点是从服务器
    primary_conninfo = 'host=192.168.14.187 port=5432 user=replica password=replica'  # 主服务器的信息以及连接的用户
    recovery_target_timeline = 'latest'
    

    5. postgresql.conf配置(从节点)

    vi /var/lib/postgresql/data/postgresql.conf
    
    wal_level = hot_standby
    max_connections = 1000 # 一般查多于写的应用从库的最大连接数要比较大
    hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询
    max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
    wal_receiver_status_interval = 10s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
    hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈
    

    完成以上操作后,我们将从节点的容器进行重启即可。

    6. 验证主从部署

    这里我们需要进入到主节点的容器中,通过如下指令进行查询:

    su postgre
    psql
    
    select client_addr,sync_state from pg_stat_replication;
    

    如果显示了我们刚刚添加的从节点则表示主从复制已经启用了。

  • 相关阅读:
    0615-temp-python web
    ResultSet 转ArrayList
    svn与git
    日期与时间
    springboot 注解
    函数式编程
    几个O
    springboot框架中的异步执行
    JDBC
    mysql 导出表结构
  • 原文地址:https://www.cnblogs.com/yaozhenfa/p/13637888.html
Copyright © 2011-2022 走看看