Pgpool-II实现高可用+读写分离+负载均衡(六)---- escalation.sh分析

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
网络型负载均衡 NLB,每月750个小时 15LCU
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: Pgpool-II的escalation.sh主要用于切换浮动IP,pgpool_remote_start脚本用于启动standby节点,相对比较简单,放在一起了。

escalation.sh脚本相对简单,Pgpool-II在产生新leader后,需要在新leader上绑定浮动IP,为确保绑定成功,会先调用此脚本遍历所有节点,解绑浮动IP。

#!/bin/bash# 本脚本由wd_escalation_command调用,为在新的leader节点上绑定浮动IP。# 需要先调用些脚本遍历所有Pgpool节点,解绑浮动IP。set-o xtrace
# PostgreSQL启动用户POSTGRESQL_STARTUP_USER=postgres
SSH_KEY_FILE=id_rsa
SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/${SSH_KEY_FILE}"# 节点列表PGPOOLS=(db01 db2 db03)
# 浮动IPVIP=192.168.0.5
# 绑定浮动IP的设备名DEVICE=eth0
for pgpool in"${PGPOOLS[@]}"; do    [ "$HOSTNAME"="$pgpool" ] && continue
ssh-T${SSH_OPTIONS}${POSTGRESQL_STARTUP_USER}@$pgpool"                /usr/bin/sudo /usr/sbin/ip addr del $VIP/32 dev $DEVICE    "doneexit0

pgpool_remote_start脚本用online recovery第一阶段(对应pgpool.conf中的recovery_1st_stage_command)执行完成后启动standby节点(对应pgpool.conf中的recovery_2nd_stage_command),这个脚本非常简单,就不加注释了。

#!/bin/bash# This script is run after recovery_1st_stage to start Standby node.set-o xtrace
DEST_NODE_HOST="$1"DEST_NODE_PGDATA="$2"PGHOME=/usr/local/pgsql14
POSTGRESQL_STARTUP_USER=postgres
SSH_KEY_FILE=id_rsa
SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/${SSH_KEY_FILE}"echo pgpool_remote_start: start: remote start Standby node$DEST_NODE_HOST## Test passwordless SSHssh-T${SSH_OPTIONS}${POSTGRESQL_STARTUP_USER}@${DEST_NODE_HOST}ls /tmp > /dev/null
if [ $?-ne0 ]; thenecho ERROR: pgpool_remote_start: passwordless SSH to ${POSTGRESQL_STARTUP_USER}@${DEST_NODE_HOST} failed. Please setup passwordless SSH.
exit1fi## Start Standby nodessh-T${SSH_OPTIONS}${POSTGRESQL_STARTUP_USER}@${DEST_NODE_HOST}"$PGHOME/bin/pg_ctl -l /dev/null -w -D ${DEST_NODE_PGDATA} status    if [ \$? -eq 0 ]; then        exit 0    fi$PGHOME/bin/pg_ctl -l /dev/null -w -D ${DEST_NODE_PGDATA} start"if [ $?-ne0 ]; thenecho ERROR: pgpool_remote_start: ${DEST_NODE_HOST} PostgreSQL start failed.
exit1fiecho pgpool_remote_start: end: PostgreSQL on ${DEST_NODE_HOST} is started successfully.
exit0
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
9月前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
671 9
|
负载均衡 算法 调度
负载均衡原理分析与源码解读
负载均衡原理分析与源码解读
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
510 2
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
568 1
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
470 0
|
负载均衡 算法 Java
实现高可用和可扩展的负载均衡系统的Java方法
实现高可用和可扩展的负载均衡系统的Java方法
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
负载均衡 关系型数据库 分布式数据库
【PolarDB开源】PolarDB读写分离实践:优化读取性能与负载均衡策略
【5月更文挑战第26天】PolarDB是云原生关系型数据库,通过读写分离优化性能和扩展性。它设置主节点处理写操作,从节点处理读操作,异步复制保证数据一致性。优化读取性能的策略包括增加从节点数量、使用只读实例和智能分配读请求。负载均衡策略涉及基于权重、连接数和地理位置的分配。实践示例中,电商网站通过主从架构、只读实例和负载均衡策略提升商品查询效率。PolarDB的读写分离与负载均衡为企业应对大数据和高并发提供了有效解决方案。
457 0
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
1565 0
|
5月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
156 21

相关实验场景

更多