服务商会有好几条线路提供,有时候某条线路会不稳定,需要手动切换线路。利用 HAProxy 可实现主备线路切换,并且可设置均衡负载让速度爆炸(需要服务商支持同时登陆)

准备工作

  1. 树莓派或香橙派类开发板
  2. 服务商线路若干条
  3. 需要一定的linux基础

安装 HAProxy

1
2
sudo sudo apt-get update
sudo apt-get install -y haproxy

配置 HAProxy

详细配置说明可参考网络文章
HAProxy 用法详解 http://www.ttlsa.com/linux/haproxy-study-tutorial/
HAProxy 配置示例 http://xstarcd.github.io/wiki/sysadmin/haproxy_confs.html
这里贴出我的配置文件,自行修改后写入 haproxy.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
## 程序参数
global
pidfile /var/run/haproxy.pid #PID文件,做进程守护使用
user root #运行程序的用户
group root #运行程序的用户组
daemon #后台运行

## 服务器默认参数
defaults
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层
balance roundrobin #服务器均衡模式
retries 2 #两次连接失败就认为是服务器不可用
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
#option dontlognull #不记录健康检查日志信息
maxconn 3200 #最大连接数
timeout connect 500ms #连接超时
timeout client 3000ms #客户端超时
timeout server 3000ms #服务器超时

## FREE_日本服务器_三线不计量均衡线路双线计量备用线路
# inter 1000 = 隔1000毫秒检测一次服务器是否正常
listen FREE_SS_Japan
bind 0.0.0.0:8001 # 服务端口
server fss-jp1 hscbook.com:18750 check inter 1000 rise 2 fall 3 #服务器地址与端口
server fss-jp2 hscbook.com:18750 check inter 1000 rise 2 fall 3 #服务器地址与端口
server fss-jp3 hscbook.com:18750 check inter 1000 rise 2 fall 3 #服务器地址与端口
server fjp-bck hscbook.com:18750 check backup inter 5000 rise 2 fall 3 #备用线路
server fjp-bck hscbook.com:18750 check backup inter 5000 rise 2 fall 3 #备用线路

## FREE_美国服务器_四线不计量均衡线路双线计量备用线路
listen FREE_SS_U.S.A
bind 0.0.0.0:8002
server fss-usa hscbook.com:18750 check inter 1000 rise 2 fall 3
server fss-us-dls hscbook.com.shidd.net:18750 check inter 1000 rise 2 fall 3
server fss-us-atl hscbook.com.shidd.net:18750 check inter 1000 rise 2 fall 3
server fss-us-nwk hscbook.com:18750 check inter 1000 rise 2 fall 3
server fus-bck hscbook.com:18750 check backup inter 5000 rise 2 fall 3 #备用线路
server fus-bck hscbook.com:18750 check backup inter 5000 rise 2 fall 3 #备用线路

## Metering_视频服务器_单线线不计量线路单线计量备用线路
listen Metering_SS_Video
bind 0.0.0.0:8003
server mss-video hscbook.com:18750 check inter 1000 rise 2 fall 3
server mmv-bck hscbook.com:18750 check backup inter 5000 rise 2 fall 3 #备用线路

## Latency_低延迟服务器_单线线不计量线路双线不计量备用线路
listen Low_latency
bind 0.0.0.0:8004
server hk-http hscbook.com:25479 check inter 1000 rise 2 fall 3
server jp-bck hscbook.com:25479 check backup inter 5000 rise 2 fall 3 #备用线路
server jp-bck hscbook.com:25479 check backup inter 5000 rise 2 fall 3 #备用线路

## 网页服务端
listen Web_Service
bind 0.0.0.0:82 #网页服务端口
mode http #接口协议
stats refresh 5s #自动刷新时间
stats uri / #管理地址
stats auth hscbook:hscpro #账号密码
stats hide-version #隐藏版本
stats admin if TRUE #验证通过则赋予管理权

先备份配置并写入

1
2
sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
sudo nano /etc/haproxy/haproxy.cfg

重启 HAProxy

1
2
sudo service haproxy stop
sudo service haproxy start

使用问题与技巧

  1. 账号密码和加密方式?
    在客户端处填就可以了,就是把原来的地址和端口换成 bind 处的地址端口。
  2. 启动 HAPproxy 报错?
    多启动几次试试看,不行就请检查配置文件
文章协议: Attribution-NonCommercial-NoDerivatives
文章地址: https://www.hscbook.com/article/raspberrypi-haproxy/
除非注明,本博文章均为原创,转载请以链接形式标明本文地址