postgres高可用学习篇三:haproxy+keepalived实现postgres负载均衡
环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64
node1:192.168.216.130
node2:192.168.216.132
node3:192.168.216.134
VIP:192.168.216.138
基础环境准备
优化内核参数cat /etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_be_liberal=1
vm.swappiness=1
vm.min_free_kbytes=102400
vm.dirty_expire_centisecs=1000
vm.dirty_background_bytes=67108864
vm.dirty_bytes=536870912
vm.zone_reclaim_mode=0
kernel.numa_balancing=0
kernel.sched_migration_cost_ns=5000000
kernel.sched_autogroup_enabled=0
net.ipv4.ip_nonlocal_bind=1
net.ipv4.ip_forward=1
net.ipv4.ip_local_port_range=1024 65535
net.netfilter.nf_conntrack_max=1048576
一、安装haproxy
yum install centos-release-scl -y
yum install rh-haproxy18-haproxy rh-haproxy18-haproxy-syspaths -y
开机启动:
systemctl enable rhhaproxy18-haproxy
启动:
systemctl start rh-haproxy18-haproxy
在node1、node2、node3分别修改配置文件haproxy.cfg,并启动haproxy服务
5000读写/5001只读、5002同步模式/5003异步模式(默认异步模式)
cat /etc/haproxy/haproxy.cfg
global
maxconn 100000
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon defaults
mode tcp
log global
retries 2
timeout queue 5s
timeout connect 5s
timeout client 60m
timeout server 60m
timeout check 15s listen stats
mode http
bind 192.168.216.130:7000
stats enable
stats uri / listen master
bind 192.168.216.138:5000
maxconn 10000
option tcplog
option httpchk OPTIONS /master
http-check expect status 200
default-server inter 3s fastinter 1s fall 3 rise 4 on-marked-down shutdown-sessions
server pgnode01 192.168.216.130:6432 check port 8008
server pgnode02 192.168.216.132:6432 check port 8008
server pgnode03 192.168.216.134:6432 check port 8008 listen replicas
bind 192.168.216.138:5001
maxconn 10000
option tcplog
option httpchk OPTIONS /replica
balance roundrobin
http-check expect status 200
default-server inter 3s fastinter 1s fall 3 rise 2 on-marked-down shutdown-sessions
server pgnode01 192.168.216.130:6432 check port 8008
server pgnode02 192.168.216.132:6432 check port 8008
server pgnode03 192.168.216.134:6432 check port 8008 listen replicas_sync
bind 192.168.216.138:5002
maxconn 10000
option tcplog
option httpchk OPTIONS /sync
balance roundrobin
http-check expect status 200
default-server inter 3s fastinter 1s fall 3 rise 2 on-marked-down shutdown-sessions
server pgnode01 192.168.216.130:6432 check port 8008
server pgnode02 192.168.216.132:6432 check port 8008
server pgnode03 192.168.216.134:6432 check port 8008 listen replicas_async
bind 192.168.216.138:5003
maxconn 10000
option tcplog
option httpchk OPTIONS /async
balance roundrobin
http-check expect status 200
default-server inter 3s fastinter 1s fall 3 rise 2 on-marked-down shutdown-sessions
server pgnode01 192.168.216.130:6432 check port 8008
server pgnode02 192.168.216.132:6432 check port 8008
server pgnode03 192.168.216.134:6432 check port 8008
haproxy默认不开启日志记录,haproxy启用日志记录方法
参考:https://blog.csdn.net/eddie_cm/article/details/79794432
二、1、分别在node1、node2、node3节点安装keepalived
yum install -y epel-release
yum install -y keepalived
2、更改node1节点上的keepalived.conf
配置文件
cat /etc/keepalived/keepalived.conf
global_defs {
router_id ocp_vrrp
} vrrp_script haproxy_check {
script "/bin/kill -0 `cat /var/run/haproxy/haproxy.pid`"
interval 2
weight 2
} vrrp_instance VI_1 {
interface ens32
virtual_router_id 133
priority 100
advert_int 2
state BACKUP
virtual_ipaddress {
192.168.216.138
}
track_script {
haproxy_check
}
authentication {
auth_type PASS
auth_pass 1ce24b6e
}
}
这里需要注意的是:"virtual_ipaddress"也就是所谓的vip我们设置为192.168.216.138
3、更改node2节点上的keepalived.conf
配置文件
[root@pgnode02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id ocp_vrrp
} vrrp_script haproxy_check {
script "/bin/kill -0 `cat /var/run/haproxy/haproxy.pid`"
interval 2
weight 2
} vrrp_instance VI_1 {
interface ens32
virtual_router_id 133
priority 100
advert_int 2
state BACKUP
virtual_ipaddress {
192.168.216.138
}
track_script {
haproxy_check
}
authentication {
auth_type PASS
auth_pass 1ce24b6e
}
}
这里需要注意的是:"virtual_ipaddress"也就是所谓的vip我们设置为192.168.216.138
4、更改node3节点上的keepalived.conf
配置文件
[root@localhost keepalived]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id ocp_vrrp
} vrrp_script haproxy_check {
script "/bin/kill -0 `cat /var/run/haproxy/haproxy.pid`"
interval 2
weight 2
} vrrp_instance VI_1 {
interface ens32
virtual_router_id 133
priority 100
advert_int 2
state BACKUP
virtual_ipaddress {
192.168.216.138
}
track_script {
haproxy_check
}
authentication {
auth_type PASS
auth_pass 1ce24b6e
}
}
这里需要注意的是:"virtual_ipaddress"也就是所谓的vip我们设置为192.168.216.138
5、依次在node1、node2、node3上启动keepalived
systemctl start keepalived
验证node1、node2、node3上keepalived启动状态,VIP跟随master进行漂移
node2 :
node3:
postgres高可用学习篇三:haproxy+keepalived实现postgres负载均衡的更多相关文章
- postgres高可用学习篇二:通过pgbouncer连接池工具来管理postgres连接
安装pgbouncer yum install libevent -y yum install libevent-devel -y wget http://www.pgbouncer.org/down ...
- postgres高可用学习篇一:如何通过patroni如何管理3个postgres节点
环境: CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.10.1.el7.x86_64 node1:192.168.216.130 node2 ...
- Linux服务之nginx服务篇三(反向代理、负载均衡)
一.Nginx实现反向代理 概念 反向代理:在收到客户端请求之后,会修目标IP地址和端口 正向代理:在收到客户端请求之后,会修源IP地址和端口 上游服务器:代理服务器后端的哪些真正给客户端提供服务的节 ...
- 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) 2 ...
- DR模式下的高可用的LVS(LVS+keepalived)
一.keepalived 在DR模式下,使用Keepalived实现LVS的高可用.Keepalived的作用是检测服务器的状态,如果有一台web服务器 宕机,或工作出现故障,Keepalived将检 ...
- 企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇
1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离
实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...
- lvs+keepalived+bind实现负载均衡高可用智能dns【转】
转:https://www.cnblogs.com/mikeluwen/p/7068356.html 整体架构: 1.IP地址规划: Dns1:172.28.0.54 Dns2:172.28.0.55 ...
随机推荐
- 【sqlserver】【mysql】用NavicatPremium12把sqlserver的数据迁移到mysql上
1.在NavicatPremium的mysql,选择到迁移到的表,然后右键[导入向导]
- ReetrantLock架构源码 --- One
以下是绅士通过processon画的一个比较简单的架构,模板模式理清楚确实需要一点点时间 Doug Lea牛ban- .- 最近在复习整理知识点,这上面的一些关键方法addWaiter();acqui ...
- PHP设计模式 - 访问者模式
访问者模式是一种行为型模式,访问者表示一个作用于某对象结构中各元素的操作.它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色. 访问者模式利用了双重分派.先将访问者传 ...
- AVR单片机教程——数码管
先解答之前一个思考题:如果不把引脚配置为输出而写高电平,连接LED会怎样? 实验结果是,LED会亮,但相比于输出高电平的情况,亮度很低.这是为什么呢? 通过上一篇教程我们知道,引脚输入输出模式是由寄存 ...
- 深度学习-Wasserstein GAN论文理解笔记
GAN存在问题 训练困难,G和D多次尝试没有稳定性,Loss无法知道能否优化,生成样本单一,改进方案靠暴力尝试 WGAN GAN的Loss函数选择不合适,使模型容易面临梯度消失,梯度不稳定,优化目标不 ...
- JVM 参数调优配置
在 tomcat 配置文件 tomcat/bin/catalina.sh 中 配置 JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss1024K -XX ...
- 关于Html中的title属性内容换行,以及Bootstrap的tooltip的使用
1.HTML中的title属性的内容换行: 鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的.如何换行呢? ...
- MVC的Views中使用递归生成Html【转】
在开发过程中往往会有一个需求,就是将一个树状的数据结构在视图中表示出来.例如最传统的多级分类,系统中有一系列根分类,每个分类中又带有一些子分类,而我们的目标便是在页面上生成一个由ul和li嵌套组成的H ...
- python class 中__next__用法
class A(): def __init__(self,b): self.b=b # def __iter__(self): # 这个函数可以用,表示迭代标志,但也可以省略 # return sel ...
- linux上安装redis-单机版
1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一 ...