|
本帖最后由 bigandy 于 2016-5-15 16:51 编辑
城会玩系列:多线路 SS 负载均衡以及全自动高可用矩阵
玩了这么就SS, 我们手里或多或少也有好几台SS可用, 要么是自己架的, 要么是服务商每次会提供一堆线路让你选择. 有的时候, 并不是每台服务器状态都十分稳定, 如果出现某台有问题了, 我们还要手动去切换, 并且,那么多线路,不用白不用啊, 我们甚至还可以用其中一台线路看视频,一条线路刷fb, 一条线路刷1024(你懂的), 今天我们就请出很多互联网大公司都在用的负载均衡以及高可用系统装进我们的路由里面架构一个高可用的ss利器, 这个主角就是 haproxy.
首先你要会用opkg, 如果不会初始化opkg 环境, 那么sorry, 这个教程不是基础教程, 是"城会玩" 系列, 所以教程操作基本上点到即止, 如果连opkg是什么都不懂, 看到这里就可以忽略以下内容了.
opkg install haproxy
vi /opt/etc/haproxy.cfg
以下是配置文件范例, 这个范例里面所有服务器的用户名密码加密模式都一样的时候采用:
global
maxconn 4096
uid nobody
gid nobody
daemon
defaults
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层
retries 2 #两次连接失败就认为是服务器不可用
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 3200 #最大连接数
timeout connect 500ms #连接超时
timeout client 3000ms #客户端超时
timeout server 3000ms #服务器超时
listen ssraid
bind 0.0.0.0:9999 #这里要一个让ss-redir 连接的端口
mode tcp
balance roundrobin #负载均衡方式
server ss-hk1 222.222.222.222:1234 weight 100 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重, 地址支持域名.
server ss-hk2 222.222.222.222:1234 weight 80 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-hk3 222.222.222.222:1234 weight 80 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-hk4 222.222.222.222:1234 weight 70 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-jp1 222.222.222.222:1234 weight 60 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-jp2 222.222.222.222:1234 weight 60 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-us1 222.222.222.222:1234 weight 10 rise 2 fall 3#填写对应的ss服务器地址和端口,还有权重
server ss-us2 222.222.222.222:1234 weight 10 rise 2 fall 3 #填写对应的ss服务器地址和端口,还有权重
#配置监控控制台
listen admin_status
bind 0.0.0.0:81
mode http
stats refresh 30s #设置页面刷新时间
stats uri / # 设置页面的url
stats auth admin:admin #设置页面的用户和密码:admin,可以设置多个用户名
stats hide-version #隐藏统计页面的HAproxy版本信息
stats admin if TRUE #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本)
编辑完成,保存.
然后我们要干掉现在的ss-redir 和ss 监控程序.
killall sh_ssmon.sh
kilall ss-redir
然后启动ss-redir
ss-redir -s 127.0.0.1 -p 9999 -l 1090 -b 0.0.0.0 -k 密码 -m 加密模式
然后我们进路由的81端口看看结果
是不是感觉好专业的控制台?每条线路的带宽使用情况,什么总流量, 上下行比例, 连接状况全有显示.
haproxy 只能控制TCP, 那UDP怎么处理? 另外建立一个ss端口来处理udp就是了.
如果不是所有服务器都同样的用户名密码, 又该怎么处理?
大概讲下思路,不做实例教程了, 做法就是在路由上拉起所有的 ss-redir 每个本地服务端口都不同, 然后然后在 haproxy config 里面设定server 为本地的这些端口, haproxy 强占 ss-redir 的1090 服务端口解决.
再次声明,这不是基础性质新手教程, 如果你不懂配置 haproxy ,或者搞不清 iptables 操作, 又或者对命令行和vi 等工具不熟悉, 请勿尝试, 所有基础知识询问自行 google. 更多的haproxy深度用法, 也请自行google.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|