找回密码
 立即加入
搜索
查看: 15244|回复: 5

利用haproxy做ss多线路的负载均衡

[复制链接]

43

主题

47

回帖

847

积分

管理员

积分
847
发表于 2016-6-9 20:09 | 显示全部楼层 |阅读模式 |回复 |
如果你手上有多个ss,某条线路有故障了,就得重新切换,很是麻烦,可以利用haproxy来做ss多线路的负载均衡。

有个前提,每个ss的服务器端口和密码必须一样。也就是说,如果你有A,B,C,D四个ss,这四个的端口号和密码必须一致,才可以用haproxy。

方法如下

1,安装haproxy
  1. sudo apt-get install -y haproxy
复制代码
2,在haproxy里配置多线路ss,老规矩,备份一下原始的配置文件,不要了删了事
  1. sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
复制代码
我们重新编辑这个文件
  1. sudo rm -rf /etc/haproxy/haproxy.cfg
  2. sudo nano /etc/haproxy/haproxy.cfg
复制代码

按下面的格式,改好后贴进去
  1. global
  2.     ulimit-n 51200
  3.     log /dev/log local0
  4.     log /dev/log local1 notice
  5.     chroot /var/lib/haproxy
  6.     pidfile /var/run/haproxy.pid
  7.     user haproxy
  8.     group haproxy
  9.     daemon
  10. defaults
  11.     log global
  12.     mode tcp
  13.     option dontlognull
  14.     timeout connect 5000
  15.     timeout client 50000
  16.     timeout server 50000
  17. frontend ss-in
  18.     mode tcp
  19.     bind 0.0.0.0:8001
  20.     default_backend shadowsocks
  21. backend shadowsocks
  22.     mode tcp
  23.     balance roundrobin
  24.         server ss1 8.8.8.8:8000 maxconn 20480
  25.         server ss2 8.8.8.4:8000 maxconn 20480
  26.         server bwg 8.8.8.5:8000 maxconn 20480
  27.         server bwg1 8.8.8.6:8000 maxconn 20480
复制代码
最后四行就是四个线路的ss,端口号一样。请注意,bind 0.0.0.0:8001,这里的8001,是本地服务器的端口,相当于haproxy是一个服务端。

3,启动haproxy
  1. sudo service haproxy start  //启动
复制代码
4,我们这里要改一下ss的config.json的配置
  1. sudo nano /etc/shadowsokcs/config.json
复制代码
新的配置如下
  1. {
  2.     "server":"192.168.0.2",
  3.     "server_port":8001,
  4.     "local_address":"192.168.0.2",
  5.     "local_port":2000,
  6.     "password":"你密码",
  7.     "timeout":600,
  8.     "method":"aes-256-cfb"
  9. }
复制代码
server这里写你的树莓的ip,server_port这里写hapxory里面的端口号,别的不用动
重启ss使之生效
  1. sudo supervisorctl reload
复制代码
在chrome试试你的ss是不是ok了?


回复

使用道具 举报

43

主题

47

回帖

847

积分

管理员

积分
847
 楼主| 发表于 2016-6-9 20:20 | 显示全部楼层 |回复 | 支持 反对
实测,我登录ss1的服务器,停掉ss的服务,然后测试,显示ip为ss2的,也就是说,当第一条线路挂了以后,haproxy会马上切换到第二条线路。

看到资料说haproxy会多个ss加速,如果会抓包的同学测试一下看看,我觉得应该不行。
回复 支持 反对

使用道具 举报

0

主题

4

回帖

54

积分

注册会员

积分
54
发表于 2016-6-13 01:27 来自手机 | 显示全部楼层 |回复 | 支持 反对
如果可以多路聚合的话,用在openwrt路由器上最合适了
回复 支持 反对

使用道具 举报

0

主题

4

回帖

54

积分

注册会员

积分
54
发表于 2016-6-13 01:28 来自手机 | 显示全部楼层 |回复 | 支持 反对
话说我的几个ss倒是都是一样方便记忆
回复 支持 反对

使用道具 举报

43

主题

47

回帖

847

积分

管理员

积分
847
 楼主| 发表于 2016-6-13 09:08 | 显示全部楼层 |回复 | 支持 反对
boss 发表于 2016-6-13 01:28
话说我的几个ss倒是都是一样方便记忆

这个不是方便记忆的问题,是你正在使用的断了,你得登录或者客户端重新设置,用haproxy就不用折腾,如果你有四条线路,就算三条断了,也没事,haproxy会自动找一第能用的,就是在四条线路之间任意切换。
回复 支持 反对

使用道具 举报

43

主题

47

回帖

847

积分

管理员

积分
847
 楼主| 发表于 2016-6-13 09:10 | 显示全部楼层 |回复 | 支持 反对
boss 发表于 2016-6-13 01:27
如果可以多路聚合的话,用在openwrt路由器上最合适了

理论上openwrt也适用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

Archiver|手机版|小黑屋|玉玲珑

GMT+8, 2024-4-20 12:18 , Processed in 0.036275 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表