环境: 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负载均衡的更多相关文章

  1. postgres高可用学习篇二:通过pgbouncer连接池工具来管理postgres连接

    安装pgbouncer yum install libevent -y yum install libevent-devel -y wget http://www.pgbouncer.org/down ...

  2. 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 ...

  3. Linux服务之nginx服务篇三(反向代理、负载均衡)

    一.Nginx实现反向代理 概念 反向代理:在收到客户端请求之后,会修目标IP地址和端口 正向代理:在收到客户端请求之后,会修源IP地址和端口 上游服务器:代理服务器后端的哪些真正给客户端提供服务的节 ...

  4. 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡

    目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) 2 ...

  5. DR模式下的高可用的LVS(LVS+keepalived)

    一.keepalived 在DR模式下,使用Keepalived实现LVS的高可用.Keepalived的作用是检测服务器的状态,如果有一台web服务器 宕机,或工作出现故障,Keepalived将检 ...

  6. 企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇

    1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...

  7. Keepalived+LVS+Nginx负载均衡之高可用

    Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...

  8. 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

    实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...

  9. lvs+keepalived+bind实现负载均衡高可用智能dns【转】

    转:https://www.cnblogs.com/mikeluwen/p/7068356.html 整体架构: 1.IP地址规划: Dns1:172.28.0.54 Dns2:172.28.0.55 ...

随机推荐

  1. 数论 - 同余 + BFS (Find The Multiple)

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16995   Accepted: 692 ...

  2. Vue的router-link标签

    在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...

  3. 【题解】Luogu P5337 [TJOI2019]甲苯先生的字符串

    原题传送门 我们设计一个\(26*26\)的矩阵\(A\)表示\(a~z\)和\(a~z\)是否能够相邻,这个矩阵珂以由\(s1\)得出.答案显然是矩阵\(A^{len_{s2}-1}\)的所有元素之 ...

  4. C#类型成员:方法

    一.方法 方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成. void Method1() { } ...

  5. 4.matplotlib绘制直方图

      # coding=utf-8 from matplotlib import pyplot as plt from matplotlib import font_manager a=[131, ...

  6. ES5和ES6的继承

    ES5继承 构造函数.原型和实例的关系:每一个构造函数都有一个原型对象,每一个原型对象都有一个指向构造函数的指针,而每一个实例都包含一个指向原型对象的内部指针, 原型链实现继承 基本思想:利用原型让一 ...

  7. 手写MQ框架(二)-服务端实现

    一.起航 书接上文->手写MQ框架(一)-准备启程 本着从无到有,从有到优的原则,所以计划先通过web实现功能,然后再优化改写为socket的形式. 1.关于技术选型 web框架使用了之前写的g ...

  8. js数组【续】(相关方法)

    一.数组的栈,队列方法[调用这些方法原数组会发生改变]var arr = [2,3,4,5,6];1.栈 LIFO (Last-In-First-Out)a.push() 可接受任意类型的参数,将它们 ...

  9. 升级tinyhttpd-0.1.0,让其支持网页显示图像

    tinyhttpd是学习http协议非常好的工具,但是由于其过于简单,不支持在网页上显示图片,所以我改了一些代码,让tinyhttpd可以现实图像,供新手一起学习和熟悉http协议,ubuntu14. ...

  10. nginx服务器除了更目录可以访问,其他都出现404

    配置如下: listen 80; server_name www.hongtaofei.com; location / { root /home/www/shop/public; index inde ...