文档背景:用公司集群实际搭建过程,用心整理文档.

文档目的:让更多的开发者避开坑点快速将集群搭建成功!

正文:

我们使用 CentOS 7.4 的 3 台服务器。让这些服务器为server1、 server2、server3。我们在每台服务器上 安装PostgreSQL和Pgpool-II 。

表 8-2。主机名和 IP 地址

表 8-3。PostgreSQL 版本和配置

表 8-4。Pgpool-II 版本及配置

注:由于在服务器上9000端口被clickhouse使用,这里我们看门狗的端口改成90001

8.3.3. 安装
在这个例子中,我们使用 YUM 安装Pgpool-II和PostgreSQL RPM 包。

使用PostgreSQL YUM 存储库 安装PostgreSQL 。

[所有服务器]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[所有服务器]# yum install -y postgresql11-server

由于Pgpool-II相关软件包也包含在PostgreSQL YUM 存储库中,因此将“排除”设置添加到/etc/yum.repos.d/pgdg-redhat-all.repo 以便不会从PostgreSQL YUM 存储库 安装Pgpool-II 。

[所有服务器]# vi /etc/yum.repos.d/pgdg-redhat-all.repo

以下是/etc/yum.repos.d/pgdg-redhat-all.repo的设置示例。

[pgdg-common]
...
exclude=pgpool*[pgdg14]
...
exclude=pgpool*[pgdg13]
...
exclude=pgpool*[pgdg12]
...
exclude=pgpool*[pgdg11]
...
exclude=pgpool*[pgdg10]
...
exclude=pgpool*[pgdg96]
...
exclude=pgpool*

从 Pgpool-II YUM 存储库 安装Pgpool-II 。

[所有服务器]# yum install -y http://www.pgpool.net/yum/rpms/4.1/redhat/rhel-7-x86_64/pgpool-II-release-4.1-2.noarch.rpm
[所有服务器]# yum install -y pgpool-II-pg11-*

8.3.4. 在开始之前
在开始配置过程之前,请检查以下先决条件。

在主服务器上 设置PostgreSQL流式复制。在这个例子中,我们使用 WAL 归档。

首先,我们创建目录/var/lib/pgsql/archivedir来存储 所有服务器上的WAL段。在这个例子中,只有 Primary 节点 在本地 归档WAL 。

[所有服务器]# su - postgres
[所有服务器]$ mkdir /var/lib/pgsql/archivedir

在主服务器上 初始化PostgreSQL 。

[server1]# su - postgres
[server1]$ /usr/pgsql-11/bin/initdb -D $PGDATA

然后我们编辑server1 (primary) 上的配置文件$PGDATA/postgresql.conf如下。启用wal_log_hints 以使用pg_rewind。由于 Primary 可能稍后会成为 Standby,因此我们设置hot_standby = on。

listen_addresses = '*'
archive_mode = on
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"'
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on
wal_log_hints = on

我们使用Pgpool-II的在线恢复功能在主服务器启动后设置备用服务器。

由于安全原因,我们创建了一个用户repl仅用于复制目的,以及一个用户pgpool用于Pgpool-II的流复制延迟检查和健康检查。

表 8-5。用户

[server1]# psql -U postgres -p 5432
postgres=# SET password_encryption = 'md5';
postgres=# CREATE ROLE pgpool WITH LOGIN;
postgres=# CREATE ROLE repl WITH REPLICATION LOGIN;
postgres=# \password root
postgres=# \password root
postgres=# \password root

如果要在 SHOW POOL NODES命令结果中显示“replication_state”和“replication_sync_state”列,角色pgpool 需要是 PostgreSQL 超级用户或pg_monitor组( Pgpool -II 4.1 或更高版本)。将pg_monitor 授予pgpool:

GRANT pg_monitor TO pgpool;

假设所有Pgpool-II服务器和 PostgreSQL服务器在同一个子网中,编辑pg_hba.conf以启用MD5身份验证方法。(关键)

直接将替换如下:

# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all 0.0.0.0/0 trust
host replication repl samenet trust

要使用Pgpool-II 的自动故障转移和在线恢复,允许Pgpool-II执行用户(默认 root 用户)和postgres用户之间以及postgres用户和postgres用户之间的所有后端服务器的无密码SSH 设置是必要的。在所有服务器上执行以下命令以设置无密码SSH。生成的密钥文件名为id_rsa_pgpool。

[all servers]# mkdir ~/.ssh
[all servers]# chmod 700 ~/.ssh
[all servers]# cd ~/.ssh
[all servers]$ ssh-keygen -t rsa -f id_rsa_pgpool
[all servers]# ssh-copy-id postgres@server1
[all servers]# ssh-copy-id postgres@server2
[all servers]# ssh-copy-id postgres@server3[all servers]# su - postgres
[all servers]$ mkdir ~/.ssh
[all servers]$ chmod 700 ~/.ssh
[all servers]$ cd ~/.ssh
[all servers]$ ssh-keygen -t rsa -f id_rsa_pgpool
[all servers]$ ssh-copy-id  postgres@server1
[all servers]$ ssh-copy-id  postgres@server2
[all servers]$ ssh-copy-id  postgres@server3

最新版本没有ssh-copy-id命令 用如下命令替代

cat ~/.ssh/id_*.pub|ssh postgres@172.16.1.185 'cat>> ~/.ssh/authorized_keys'
cat ~/.ssh/id_*.pub|ssh postgres@172.16.1.193 'cat>> ~/.ssh/authorized_keys'
cat ~/.ssh/id_*.pub|ssh postgres@172.16.1.198 'cat>> ~/.ssh/authorized_keys'
vi /etc/ssh/ssh.config

添加一行 配置读取秘钥文件

IdentityFile ~/.ssh/id_rsa_pgpool

设置好后,使用ssh postgres@serverX -i ~/.ssh/id_rsa_pgpool命令确保不输入密码也能登录。如果执行ssh-copy-id失败,请为postgres用户设置密码并暂时允许密码验证。

为了允许repl用户在不指定密码的情况下进行流复制和在线恢复,并 使用postgres执行pg_rewind,我们在postgres用户的主目录中创建.pgpass文件,并将每个PostgreSQL服务器 上的权限更改为 600 。

[all servers]# su - postgres
[all servers]$ vi /var/lib/pgsql/.pgpass
server1:5432:replication:repl:<repl user password>
server2:5432:replication:repl:<repl user password>
server3:5432:replication:repl:<repl user password>
server1:5432:postgres:postgres:<postgres user password>
server2:5432:postgres:postgres:<postgres user password>
server3:5432:postgres:postgres:<postgres user password>
[all servers]$ chmod 600  /var/lib/pgsql/.pgpass

连接Pgpool-II和PostgreSQL服务器时,必须通过启用防火墙管理软件来访问目标端口。以下是CentOS/RHEL7的示例。

[all servers]# firewall-cmd --permanent --zone=public --add-service=postgresql
[all servers]# firewall-cmd --permanent --zone=public --add-port=9999/tcp --add-port=9898/tcp --add-port=9001/tcp --add-port=9694/udp
[all servers]# firewall-cmd --reload

8.3.5。Pgpool-II配置
8.3.5.1。常用设置
以下是server1、server2和server3上的常用设置。

从 RPM 安装Pgpool-II时,所有Pgpool-II配置文件都在/etc/pgpool-II中。在此示例中,我们复制流复制模式的示例配置文件。

# cp -p /etc/pgpool-II/pgpool.conf.sample-stream /etc/pgpool-II/pgpool.conf

为了允许 Pgpool-II 接受所有传入的连接,我们设置了listen_addresses = ‘*’。

listen_addresses = '*'

配置服务器node节点信息

[all servers]vi /etc/pgpool-II/pgpool_node_id

根据设备顺序,填入数字,0,1,2…

指定复制延迟检查用户和密码。在此示例中,我们将 sr_check_user留空,并在pool_passwd中创建条目。从Pgpool-II 4.0 开始,如果这些参数留空, Pgpool-II将首先尝试从sr_check_password文件中获取该特定用户的密码,然后再使用空密码。

sr_check_user = 'pgpool'
sr_check_password = ''

启用健康检查,以便Pgpool-II执行故障转移。此外,如果网络不稳定,即使后端运行正常,健康检查也会失败,可能会出现故障转移或退化操作。为了防止这种健康检查的错误检测,我们设置health_check_max_retries = 3。以与sr_check_user和sr_check_password相同的方式指定health_check_user和health_check_password。

health_check_period = 5
health_check_timeout = 30
health_check_user = 'pgpool'
health_check_password = ''
health_check_max_retries = 3

指定PostgreSQL后端信息。可以通过在参数名称末尾添加一个数字来指定多个后端。

- Backend Connection Settings -

backend_hostname0 = 'server1'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/pgsql/11/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_application_name0 = 'server1'
backend_hostname1 = 'server2'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/var/lib/pgsql/11/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_application_name1 = 'server2'backend_hostname2 = 'server3'
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = '/var/lib/pgsql/11/data'
backend_flag2 = 'ALLOW_TO_FAILOVER'
backend_application_name2 = 'server3'

8.3.5.2。故障转移配置
在failover_command 参数 中指定故障转移后要执行的 failover.sh 脚本。如果我们使用 3 个 PostgreSQL 服务器,我们需要指定 follow_master_command 在主节点故障转移后运行。如果有两个 PostgreSQL 服务器,follow_master_command 设置不是必需的。

Pgpool-II在执行脚本时将以下特殊字符替换为后端特定信息。有关每个字符的更多详细信息,请参见failover_command。

failover_command = '/etc/pgpool-II/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S'
follow_master_command = '/etc/pgpool-II/follow_master.sh %d %h %p %D %m %H %M %P %r %R'

注意: %N和%S是在Pgpool-II 4.1 中添加的。请注意,如果使用 Pgpool-II 4.0 或更早版本,则无法指定这些字符。

示例脚本failover.sh 和follow_master.sh 安装在/etc/pgpool-II/中。使用这些示例文件创建故障转移脚本。

[all servers]# cp -p /etc/pgpool-II/failover.sh{.sample,}
[all servers]# cp -p /etc/pgpool-II/follow_master.sh{.sample,}
[all servers]# chown postgres:postgres /etc/pgpool-II/{failover.sh,follow_master.sh}

基本上,如果您根据 PostgreSQL 安装目录 更改PGHOME ,它应该可以工作。

[server1]# vi /etc/pgpool-II/failover.sh
...
PGHOME=/usr/pgsql-11
...[server1]# vi /etc/pgpool-II/follow_master.sh
...
PGHOME=/usr/pgsql-11
...

将ssh脚本文件改成 默认名称
由于使用follow_master_command脚本中的PCP命令 需要用户认证,我们需要在pcp.conf中以“用户名:加密密码” 的格式指定用户名和md5加密密码。

如果在follow_master.sh的PCP_USER中指定了pgpool用户,

# cat /etc/pgpool-II/follow_master.sh
...
PCP_USER=pgpool
...

将ssh脚本文件改成 默认名称
然后我们使用pg_md5为pgpool用户创建加密密码条目,如下所示:

[all servers]# echo 'pgpool:'`pg_md5  passowrd` >> /etc/pgpool-II/pcp.conf

由于follow_master.sh脚本必须在不输入密码的情况下执行PCP命令,所以我们需要在每台服务器的Pgpool -II启动用户(postgres用户) 的主目录下 创建.pcppass 。

[all servers]# su - postgres
[all servers]$ echo 'localhost:9898:pgpool:<pgpool user password>' > ~/.pcppass
[all servers]$ chmod 600 ~/.pcppass

注意:follow_master.sh 脚本不支持表空间。如果您正在使用表空间,则需要修改脚本以支持表空间。

8.3.5.3。Pgpool-II 在线恢复配置
接下来,为了使用Pgpool-II执行在线恢复,我们指定PostgreSQL用户名和在线恢复命令 recovery_1st_stage。因为 执行在线恢复需要PostgreSQL中的超级用户权限,所以我们在recovery_user中指定postgres用户。然后,我们在PostgreSQL主服务器(server1) 的数据库集群目录下创建recovery_1st_stage和pgpool_remote_start,并添加执行权限。

recovery_user = 'postgres'
recovery_password = ''
recovery_1st_stage_command = 'recovery_1st_stage'

在线恢复示例脚本recovery_1st_stage 和pgpool_remote_start 安装在/etc/pgpool-II/中。将这些文件复制到主服务器 (server1) 的数据目录。

[server1]# cp -p /etc/pgpool-II/recovery_1st_stage.sample /var/lib/pgsql/11/data/recovery_1st_stage
[server1]# cp -p /etc/pgpool-II/pgpool_remote_start.sample /var/lib/pgsql/13/data/pgpool_remote_start
[server1]# chown postgres:postgres /var/lib/pgsql/11/data/{recovery_1st_stage,pgpool_remote_start}

基本上,如果您根据 PostgreSQL 安装目录 更改PGHOME ,它应该可以工作。

[server1]# vi /var/lib/pgsql/11/data/recovery_1st_stage
...
PGHOME=/usr/pgsql-11
...
[server1]# vi /var/lib/pgsql/11/data/pgpool_remote_start
...
PGHOME=/usr/pgsql-11
...

为了使用在线恢复功能,pgpool_recovery所以我们需要安装 在PostgreSQL服务器 server1的 template1 上。

[server1]# su - postgres
[server1]$ psql template1 -c "CREATE EXTENSION pgpool_recovery"

注意: recovery_1st_stage脚本不支持表空间。如果您正在使用表空间,则需要修改脚本以支持表空间。

8.3.5.4。客户端认证配置
因为在开始前一节中,我们已经将PostgreSQL认证方式设置为 scram-sha-256,所以需要通过 Pgpool-II设置客户端认证来连接后端节点。使用 RPM 安装时, Pgpool -II配置文件 pool_hba.conf位于/etc/pgpool-II中。默认情况下,pool_hba 身份验证被禁用,设置enable_pool_hba = on 以启用它。

enable_pool_hba = on

pool_hba.conf文件 的格式非常接近 PostgreSQL 的 pg_hba.conf格式。将pgpool和postgres用户的身份验证方法设置为scram-sha-256。(关键)

直接替换如下:

# TYPE DATABASE USER CIDR-ADDRESS METHOD# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all pgpool 0.0.0.0/0 trust
host all postgres 0.0.0.0/0 trust
host all all 0.0.0.0/0 trust
host replication repl 0.0.0.0/0 trust

生成pool_passwd文件,它将被创建在与 pgpool.conf相同的目录中。

[all servers]# su - postgres
[all servers]$ pg_md5 -p -m -u postgres pool_passwd
password: [pgpool user's password]
[all servers]$ pg_md5 -p -m -u pgpool pool_passwd
password: [postgres user's passowrd]
# cat /etc/pgpool-II/pool_passwd

postgres:md52a29a4f7eb0a98abca0992ca3fb555b6
pgpool:md5bc458983af9a98798fefe59c1a81b8bd

8.3.5.5。看门狗配置
在server1、server2、server3 上启用看门狗功能。

use_watchdog = on

指定接受来自 server1、server2、server3上的客户端连接的虚拟 IP 地址。确保尚未使用设置为虚拟 IP 的 IP 地址。

delegate_IP = '172.16.1.252'

为了启动/关闭虚拟 IP 并发送 ARP 请求,我们设置了 if_up_cmd、if_down_cmd和arping_cmd。此示例中使用的网络接口是“enp0s8”。由于执行if_up/down_cmd或 arping_cmd命令需要 root 权限,因此在这些命令上使用 setuid 或允许 Pgpool-II启动用户、postgres用户(Pgpool-II 4.1 或更高版本)在没有密码的情况下 运行sudo命令。

注意: 如果使用 RPM 安装Pgpool-II,则postgres 用户已配置为通过sudo运行ip/arping ,无需密码。

postgres ALL=NOPASSWD: /sbin/ip
postgres ALL=NOPASSWD: /usr/sbin/arping

这里我们配置以下参数以使用 sudo 运行if_up/down_cmd或arping_cmd。

if_up_cmd = '/usr/bin/sudo /sbin/ip addr add $_IP_$/24 dev em1 label em1:0'
if_down_cmd = '/usr/bin/sudo /sbin/$_IP_$/24 dev em1 的 IP 地址'
arping_cmd = '/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I em1'

注:em1 根据实际网卡填写 ifconfig命令查看

根据命令路径 设置if_cmd_path和arping_path 。如果if_up/down_cmd或arping_cmd以“/”开头,这些参数将被忽略。

if_cmd_path = '/sbin'
arping_path = '/usr/sbin'

指定每个Pgpool-II服务器 的主机名和端口号。

server1

wd_hostname = 'server1'
wd_port = 9001

server2

wd_hostname = 'server2'
wd_port = 9001

server3

wd_hostname = 'server3'
wd_port = 9001

指定每个Pgpool- II 服务器上受监控的 Pgpool-II服务器的主机名、 Pgpool-II端口号和看门狗端口号。

server1

- 其他 pgpool 连接设置 -

other_pgpool_hostname0 = 'server2'
other_pgpool_port0 = 9999
other_wd_port0 = 9001
other_pgpool_hostname1 = 'server3'
other_pgpool_port1 = 9999
other_wd_port1 = 9001

服务器2

- 其他 pgpool 连接设置 -

other_pgpool_hostname0 = 'server1'
other_pgpool_port0 = 9999
other_wd_port0 = 9001
other_pgpool_hostname1 = 'server3'
other_pgpool_port1 = 9999
other_wd_port1 = 9001

服务器3

- 其他 pgpool 连接设置 -

other_pgpool_hostname0 = 'server1'
other_pgpool_port0 = 9999
other_wd_port0 = 9001
other_pgpool_hostname1 = 'server2'
other_pgpool_port1 = 9999
other_wd_port1 = 9001

在server1、server2、server3 上指定发送心跳信号的目标主机名和端口号。

server1

heartbeat_destination0 = 'server2'
heartbeat_destination_port0 = 9694
heartbeat_device0 = ''
heartbeat_destination1 = 'server3'
heartbeat_destination_port1 = 9694
heartbeat_device1 = ''

server2

heartbeat_destination0 = 'server1'
heartbeat_destination_port0 = 9694
heartbeat_device0 = ''
heartbeat_destination1 = 'server3'
heartbeat_destination_port1 = 9694
heartbeat_device1 = ''

server3

heartbeat_destination0 = 'server1'
heartbeat_destination_port0 = 9694
heartbeat_device0 = ''
heartbeat_destination1 = 'server2'
heartbeat_destination_port1 = 9694
heartbeat_device1 = ''

8.3.5.6。/etc/sysconfig/pgpool 配置
如果您想在Pgpool -II启动时忽略pgpool_status文件, 请在/etc/sysconfig/pgpool的启动选项 OPTS 中添加“-D” 。

[all servers]# vi /etc/sysconfig/pgpool
...
OPTS=" -D -n"

8.3.5.7。日志记录
在示例中,我们将Pgpool-II的日志输出到syslog。

log_destination = 'syslog'
syslog_facility = 'LOCAL1'

创建Pgpool-II日志文件。

[all servers]# mkdir /var/log/pgpool-II
[all servers]# touch /var/log/pgpool-II/pgpool.log

编辑 syslog /etc/rsyslog.conf的配置文件。

[all servers]# vi /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none;LOCAL1.none    /var/log/messages
LOCAL1.*                                                /var/log/pgpool-II/pgpool.log

设置 logrotate 与/var/log/messages相同。

[all servers]# vi /etc/logrotate.d/syslog
...
/var/log/messages
/var/log/pgpool-II/pgpool.log
/var/log/secure

重新启动 rsyslog 服务。

[all servers]# systemctl restart rsyslog

Pgpool-II 的设置完成。

8.3.6. 启动/停止 Pgpool-II
接下来我们启动Pgpool-II。在启动 Pgpool-II之前,请先启动 PostgreSQL服务器。另外,停止PostgreSQL时,需要先停止 Pgpool-II。

启动Pgpool-II

在开始之前的 部分,我们已经设置了Pgpool-II的自动启动。要启动 Pgpool-II,请重新启动整个系统或执行以下命令。

# systemctl start pgpool.service

停止Pgpool-II

# systemctl stop pgpool.service

8.3.7.1。设置 PostgreSQL 备用服务器
首先,我们应该使用Pgpool-II在线恢复功能 设置PostgreSQL备用服务器。确保pcp_recovery_node命令使用的recovery_1st_stage和pgpool_remote_start 脚本位于PostgreSQL主服务器 ( server1 ) 的数据库集群目录中。

# pcp_recovery_node -h 172.16.1.221 -p 9898 -U pgpool -n 1

密码:
pcp_recovery_node – Command Successful

# pcp_recovery_node -h 172.16.1.221 -p 9898 -U pgpool -n 2

密码:
pcp_recovery_node – Command Successful

数据库数据地址:
/var/lib/pgsql/11/data/
pgpool数据地址:
/etc/pgpool_II

相关命令:

初始化数据库:

/usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data

查看数据库集群状态:

psql -h 172.16.1.252 -p 9999 -U pgpool postgres -c "show pool_nodes"

查看pool集群状态:

pcp_watchdog_info -h 172.16.1.252 -p 9898 -U pgpool

启动数据库服务:

/usr/pgsql-11/bin/pg_ctl start -D /var/lib/pgsql/11/data

启动停止pgpool:

systemctl stop pgpool.service
systemctl start pgpool.service

手动在线恢复恢复数据库:

pcp_recovery_node -h 172.16.1.252 -p 9898 -U pgpool -n 1

查看pgpool日志:

tail -n 500 /var/log/pgpool-II/pgpool.log

查看数据库日志:

tail -n 500 /var/lib/pgsql/11/data/log/postgresql-Mon.log

手动将节点添加到集群:

pcp_attach_node -d -U postgres -h 172.16.1.252 -p 9898 -n 1

快速停掉数据库:

/usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -m immediate stop

pgpool-II + postgressql 集群高可用搭建(保姆级文档)相关推荐

  1. MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】

    视频地址 http://edu.51cto.com/course/course_id-1691.html MariaDB 10培训课程 第一部分 复制 1.基于GTID方式复制配置及注意事项 2.基于 ...

  2. ElasticSearch核心语法及集群高可用搭建

    一.ElasticSearch文档批量操作实现 (这里只是批量操作文档,查询文档的操作在后面会补充) 1.批量获取文档数据 批量获取文档数据是通过_mget的API来实现的 (1)在URL中不指定in ...

  3. 【Hadoop】HA高可用搭建保姆级教程(大二学长的万字笔记)

    知识目录 一.写在前面

  4. Hadoop集群高可用及zookeeper+kafka组件搭建

    目录 一.Hadoop集群高可用 1.Zookeeper概述 1)Zookeeper基本概述 3)Zab协议 3)observer 4)zookeeper集群图例 2.zookeeper集群搭建 3. ...

  5. Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统

    Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...

  6. PostgreSQL HA集群高可用方案介绍 pgpool-II+PostgreSQL HA方案部署

    PostgreSQL HA集群高可用方案介绍 & pgpool-II+PostgreSQL HA方案部署 一.PostgreSQL HA集群高可用方案介绍 二.pgpool-II+Postgr ...

  7. golang检查tcp是否可用_宕机处理:Kubernetes集群高可用实战总结

    导语 | 在企业生产环境,Kubernetes高可用是一个必不可少的特性,其中最通用的场景就是如何在Kubernetes集群宕机一个节点的情况下保障服务依旧可用.本文对在该场景下实现集群和应用高可用过 ...

  8. 宕机处理:Kubernetes集群高可用实战总结

    导语 | 在企业生产环境,Kubernetes高可用是一个必不可少的特性,其中最通用的场景就是如何在Kubernetes集群宕机一个节点的情况下保障服务依旧可用.本文对在该场景下实现集群和应用高可用过 ...

  9. Rabbitmq集群高可用测试

    Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...

最新文章

  1. JS中的作用域(一)-详谈
  2. SGU-176 Flow construction 有上下界的最小流
  3. SpringBoot集成Redis--配置自定义的RedisCacheManager
  4. arm-linux 交叉编译后程序,ARM交叉编译下,应用程序实践
  5. php pdo 执行多条语句,php – 在pdo预处理语句中执行多插入或多个不同插入是更好/更快?...
  6. C++类中成员变量的初始化有两种方式
  7. scala中处理json数据
  8. 【CodeForces - 761D 】Dasha and Very Difficult Problem (构造,思维)
  9. 小程序授权第三方管理开发的流程
  10. Python精通-Python字符串格式化操作
  11. 天池学习赛——街景字符编码识别(得分上0.93)
  12. 几种.NET平台数据持久化框架介绍
  13. 这些超好用的 Mac 系统自带软件,来试试
  14. Cookie与Session的区别-总结很好的文章
  15. Windbg远程调试
  16. spring boot 在fastdfs文件上传大小限制
  17. git仓库创建及上传
  18. 公路路基路面回弹弯沉检测技术(转载)
  19. 7.scala初识 柯里化、隐式参数、隐式转换、视图边界、上界、下界、协变、逆变
  20. 冯诺曼伊体系 计算机五大逻辑,科学网—再谈冯·诺伊曼结构 - 姜咏江的博文

热门文章

  1. 【数据库】7种图数据库简单比较
  2. 对于计算机备份正确的做法是,电脑备份应该怎么做?好习惯,时常兼备
  3. 【Apollo】支持@ConfigurationProperties动态刷新
  4. 解决Surface Pro 系列 TF卡掉卡问题
  5. select() 函数
  6. 【JAVA】快速排序
  7. python网站迁移_在Python中利用Into包整洁地进行数据迁移的教程
  8. C++库std::future
  9. ERP 基础数据包括哪些?
  10. 计算机主机拆卸的步骤,硬件组装教程:拆卸机箱与安装电源步骤图文介绍