Working with the bundled PgBouncer service
Working with the bundled PgBouncer service
由于它的高可用性堆栈的一部分,GitLab Premium 包含的捆绑版本可以通过管理/etc/gitlab/gitlab.rb
. PgBouncer 用于在故障转移方案中在服务器之间无缝迁移数据库连接. 此外,它可以用于非 HA 设置中以建立连接池,从而加快响应时间,同时减少资源使用.
在高可用性设置中,建议为每个数据库节点分别运行一个 PgBouncer 节点,并使用一个内部负载均衡器(TCP)相应地为其服务.
该内容已移至新位置 .
使用命令
gitlab-ctl pg-password-md5 pgbouncer
生成 PGBOUNCER_USER_PASSWORD_HASH使用命令
gitlab-ctl pg-password-md5 gitlab
. 稍后我们还需要输入纯文本 SQL_USER_PASSWORD在数据库节点上,确保在
/etc/gitlab/gitlab.rb
设置了以下/etc/gitlab/gitlab.rb
Run
gitlab-ctl reconfigure
在运行 PgBouncer 的节点上,确保在
/etc/gitlab/gitlab.rb
设置了以下/etc/gitlab/gitlab.rb
pgbouncer['enable'] = true
pgbouncer['databases'] = {
gitlabhq_production: {
host: 'DATABASE_HOST',
password: 'PGBOUNCER_USER_PASSWORD_HASH'
}
}
Run
gitlab-ctl reconfigure
在运行 Puma 的节点上,确保在
/etc/gitlab/gitlab.rb
设置了以下/etc/gitlab/gitlab.rb
Run
gitlab-ctl reconfigure
此时,您的实例应通过 PgBouncer 连接到数据库. 如果遇到问题,请参阅” 部分
在 GitLab 12.0 中引入 .
If you enable Monitoring, it must be enabled on all PgBouncer servers.
-
# Enable service discovery for Prometheus
consul['enable'] = true
# Replace placeholders
# Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z
# with the addresses of the Consul server nodes
consul['configuration'] = {
retry_join: %w(Y.Y.Y.Y consul1.gitlab.example.com Z.Z.Z.Z),
}
# Set the network addresses that the exporters will listen on
node_exporter['listen_address'] = '0.0.0.0:9100'
pgbouncer_exporter['listen_address'] = '0.0.0.0:9188'
运行
sudo gitlab-ctl reconfigure
来编译配置.
Administrative console
作为 Omnibus GitLab 的一部分,我们提供了一个gitlab-ctl pgb-console
命令,以自动连接到 PgBouncer 管理控制台. 请参阅PgBouncer 文档以获取有关如何与控制台进行交互的详细说明.
要开始会话,请运行
将提示您输入的密码是 PGBOUNCER_USER_PASSWORD
要获取有关实例的一些基本信息,请运行
pgbouncer=# show databases; show clients; show servers;
name | host | port | database | force_user | pool_size | reserve_pool | pool_mode | max_connections | current_connections
---------------------+-----------+------+---------------------+------------+-----------+--------------+-----------+-----------------+---------------------
gitlabhq_production | 127.0.0.1 | 5432 | gitlabhq_production | | 100 | 5 | | 0 | 1
pgbouncer | | 6432 | pgbouncer | pgbouncer | 2 | 0 | statement | 0 | 0
type | user | database | state | addr | port | local_addr | local_port | connect_time | request_time | ptr | link
| remote_pid | tls
------+-----------+---------------------+--------+-----------+-------+------------+------------+---------------------+---------------------+-----------+------
+------------+-----
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44590 | 127.0.0.1 | 6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12444c0 |
| 0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44592 | 127.0.0.1 | 6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x12447c0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44594 | 127.0.0.1 | 6432 | 2018-04-24 22:13:10 | 2018-04-24 22:17:10 | 0x1244940 |
| 0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44706 | 127.0.0.1 | 6432 | 2018-04-24 22:14:22 | 2018-04-24 22:16:31 | 0x1244ac0 |
| 0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44708 | 127.0.0.1 | 6432 | 2018-04-24 22:14:22 | 2018-04-24 22:15:15 | 0x1244c40 |
| 0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44794 | 127.0.0.1 | 6432 | 2018-04-24 22:15:15 | 2018-04-24 22:15:15 | 0x1244dc0 |
| 0 |
C | gitlab | gitlabhq_production | active | 127.0.0.1 | 44798 | 127.0.0.1 | 6432 | 2018-04-24 22:15:15 | 2018-04-24 22:16:31 | 0x1244f40 |
| 0 |
C | pgbouncer | pgbouncer | active | 127.0.0.1 | 44660 | 127.0.0.1 | 6432 | 2018-04-24 22:13:51 | 2018-04-24 22:17:12 | 0x1244640 |
| 0 |
(8 rows)
type | user | database | state | addr | port | local_addr | local_port | connect_time | request_time | ptr | link | rem
ote_pid | tls
------+--------+---------------------+-------+-----------+------+------------+------------+---------------------+---------------------+-----------+------+----
--------+-----
S | gitlab | gitlabhq_production | idle | 127.0.0.1 | 5432 | 127.0.0.1 | 35646 | 2018-04-24 22:15:15 | 2018-04-24 22:17:10 | 0x124dca0 | |
(1 row)
如果您遇到通过 PgBouncer 连接的任何问题,则首先检查的始终是日志:
另外,您可以在检查show databases
的输出. 在输出中,您期望在gitlabhq_production
数据库的host
字段中看到值. 此外, current_connections
应该大于 1.
请参阅Geo 文档中建议的修复程序.