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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
云原生数据库 PolarDB MySQL 版,通用型 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
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
负载均衡 算法 调度
负载均衡原理分析与源码解读
负载均衡原理分析与源码解读
|
3月前
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
69 2
|
4月前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
135 1
|
4月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
238 0
|
4月前
|
负载均衡 算法 Java
实现高可用和可扩展的负载均衡系统的Java方法
实现高可用和可扩展的负载均衡系统的Java方法
|
5月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
6月前
|
负载均衡 关系型数据库 分布式数据库
【PolarDB开源】PolarDB读写分离实践:优化读取性能与负载均衡策略
【5月更文挑战第26天】PolarDB是云原生关系型数据库,通过读写分离优化性能和扩展性。它设置主节点处理写操作,从节点处理读操作,异步复制保证数据一致性。优化读取性能的策略包括增加从节点数量、使用只读实例和智能分配读请求。负载均衡策略涉及基于权重、连接数和地理位置的分配。实践示例中,电商网站通过主从架构、只读实例和负载均衡策略提升商品查询效率。PolarDB的读写分离与负载均衡为企业应对大数据和高并发提供了有效解决方案。
236 0
|
6月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
787 0
|
6月前
|
Kubernetes 负载均衡 监控
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
|
5月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
122 2