任务目标:搭建内网高可用gitlab私服。/ 参考博客 /
实现方法:两台服务器上部署完全一样的gitlab,其中gitlab有关文件采用 inotify + rsync 进行同步,数据库采用psql主从,且实现开机自启与数据自动备份。
准备两台服务器,环境如下
系统版本: Centos7
数据库版本: 9.6.11
主库: 192.168.32.123
从库: 192.168.32.124
安装有gcc: yum install gcc(安装命令)
安装前查了下内存情况,确保内存充足
192.168.32.123
192.168.32.124
一、安装postgresql
1. 安装postgresql
以下操作步骤主从两个节点都执行:
# 下载源码包
wget --no-check-certificate https://ftp.postgresql.org/pub/source/v9.6.11/postgresql-9.6.11.tar.gz
# 安装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
adduser postgres
mkdir /data/postgresql/data
chown postgres /data/postgresql/data
2. 主库初始化
以下操作步骤只在主库执行:
# 只在主库初始化
su - postgres
/data/postgresql/bin/initdb -D /data/postgresql/data
#初始化完毕之后启动数据库
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile start
# 修改监听配置
vim /data/postgresql/data/postgresql.conf
# 修改内容
listen_addresses = '*'
# 添加允许访问数据库的网段
vim /data/postgresql/data/pg_hba.conf
# 添加内容
host all all 0.0.0.0/0 trust
3. 主库配置
# 以下为主数据库配置
# 创建复制用户,专门进行主从同步使用
su – postgres
/data/postgresql/bin/psql
create user rpl superuser password '123456';
# 主库上配置从库允许的网段
vim /data/postgresql/data/pg_hba.conf
# 添加内容
host replication rpl 192.168.32.0/0 md5
# 修改主库参数文件
vim /data/postgresql/data/postgresql.conf
# 添加内容
wal_level = hot_standby #启用流复制
max_wal_senders=2 #流复制允许连接进程
wal_keep_segments =64 #xlog目录中最多容纳多少个wal日志文件,超过了则删掉最初的几个。
max_connections = 1000 #主库最大连接数
# 重启主库服务
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile restart
4. 从库配置
以下操作步骤只在从库执行:
# 基础备份
#在从库无需拷贝主库的数据文件到本地,使用pg_basebackup可将主库的数据文件通过网络复制到本地、包括目录结构
#备注:如果主库存在自定义表空间,此操作会失败
/data/postgresql/bin/pg_basebackup -h 192.168.32.123 -p 5432 -U rpl -F p -x -P -R -D /data/postgresql/data/
# 从库配置文件配置
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 #数据库最大连接数
# 创建恢复文件recovery.conf
# recovery.conf 用于主库,从库切换时的参数配置。如果从库没有recovery.conf文件可拷贝模板
vim /data/postgresql/data/recovery.conf
# 添加内容
recovery_target_timeline = 'latest'
standby_mode = 'on'
primary_conninfo = 'host=192.168.32.123 port=5432 user=rpl password=123456'
# 启动从库服务
chmod -R 0700 /data/postgresql/data/
su - postgres
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile start
# 重启(此操作是为了看下是否正常启动)
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l logfile restart
重启如果报如下错误,请赋予权限
回到root用户下执行chown -R postgres:root /data/postgresql/data