一、检测活性非转发服务器
10.0.0.16:80为web服务器,10.0.0.16:9000为后端php服务器,监测10.0.0.16:9000为存活,才发送到10.0.0.16:80;如果10.0.0.16:9000不可用,则不进行转发。
frontend lck-web-80
bind 10.0.0.11:80
mode tcp
use_backend lck-web1-80-hosts
backend lck-web1-80-hosts
mode tcp
server 10.0.0.16 10.0.0.16:80 check addr 10.0.0.16 port 9000 inter 3000 fall 2 rise 5
二、实现报错服务器
当10.0.0.16和10.0.0.17同时不能用时,则转发到10.0.0.18
frontend lck-web-80
bind 10.0.0.11:80
mode tcp
use_backend lck-web1-80-hosts
backend lck-web1-80-hosts
mode tcp
server 10.0.0.16 10.0.0.16:80 check inter 3000 fall 2 rise 5
server 10.0.0.17 10.0.0.17:80 check inter 3000 fall 2 rise 5
server 10.0.0.18 10.0.0.18:80 check inter 3000 fall 2 rise 5 backup
三、手动下线服务器
在配置文件内直接下线10.0.0.17服务器
frontend lck-web-80
bind 10.0.0.11:80
mode tcp
use_backend lck-web1-80-hosts
backend lck-web1-80-hosts
mode tcp
server 10.0.0.16 10.0.0.16:80 check inter 3000 fall 2 rise 5
server 10.0.0.17 10.0.0.17:80 check inter 3000 fall 2 rise 5 disabled
四、重定向URL
访问10.0.0.11:80转发至http://www.baidu.com,注意:需要mode http,不支持mode tcp。如果是tcp,则会调用server 0.0.0.16
frontend lck-web-80
bind 10.0.0.11:80
mode http
use_backend lck-web1-80-hosts
backend lck-web1-80-hosts
mode http
redirect prefix http://www.baidu.com
server 10.0.0.16 10.0.0.16:80 check inter 3000 fall 2 rise 5
五、使用调度算法
frontend lck-web-80
bind 10.0.0.11:80
mode tcp
use_backend lck-web1-80-hosts
backend lck-web1-80-hosts
mode tcp
balance roundrobin
server 10.0.0.16 10.0.0.16:80 check inter 3000 fall 2 rise 5
server 10.0.0.17 10.0.0.17:80 check inter 3000 fall 2 rise 5
六、总结:mode选用tcp、http的注意事项
mode tcp 性能比 http 好,如果没有redirect需求,就用tcp
client---->haproxy---->nginx
如果是http,需要一直做源目地址转换,如果是tcp不需要
如果是http,需要加option forwardfor,进行源IP透传
七、当mode选用http,使用forwardfor进行src IP透传
frontend+backend
frontend WEB_PORT_80
bind 192.168.7.248:80
mode http
use_backend web_prot_http_nodes
backend web_prot_http_nodes
mode http
option forwardfor
server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5
server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5
listen代替frontend+backend
listen WEB_PORT_80
bind 192.168.7.102:80
mode http
option forwardfor
server web1 192.168.7.101:80 check inter 3000 fall 3 rise 5
server web2 192.168.7.101:80 check inter 3000 fall 3 rise 5