高可用散记

高可用目的:减少系统不能提供服务的时间。实现的理论:集群化,冗余,故障自动转移,当一台主机挂了,有backup(备份机器)顶上,实现高可用。

实现高可用方式
1
2
- keepAlive + vip (虚拟IP)
#keepAlive 支持虚拟ip方式实现高可用,高可用还可以通过集群来实现,使用VIP的好处是用户访问的IP一直是一样的,无感知变化。
负载均衡实现方式

程序访问系统组件需要实现负载均衡支持更多请求和并发,如:访问 kubernetes apiserver,mysql , redis,mq 等等。

1
2
- nginx 
- haproxy
组件负载 e.g mysql

e.g haproxy -mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

frontend mysql
bind *:3308
mode tcp
#timeout client 1h
log global
option tcplog
default_backend mysql
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws

backend mysql
mode tcp
#timeout queue 1h
#timeout server 1h
#timeout connect 1h
log global
option tcplog
balance roundrobin
server mysql1 192.168.1.11:3307 check
server mysql2 192.168.1.12:3307 check
server mysql3 192.168.1.13:3307 check
服务之前调用负载 - 基于健康服务IP s
1
2
3
- 轮训
- 随机
springCloud robin组建实现负载