从Nginx1.9开始,官方提供了一个ngx_stream_core_module模块,该模块支持了TCP代理以及负载均衡功能。
要想启用该模块,在nginx编译时,指定编译参数 --with-stream。
那如何实现MySQL的负载均衡呢?看下面的配置文件:
stream {
upstream mysql {
hash $remote_addr consistent;
server 192.168.110.11:3306 weight=50 max_fails=1 fail_timeout=10s;
server 192.168.110.13:3308 weight=100 max_fails=1 fail_timeout=10s;
}
server {
listen 3306;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass mysql;
}
}
需要注意,stream { } 是和 http{ }并列关系,不能把stream{ }放到http { } 里面。
其他配置,大家可以参考官方文档 http://nginx.org/en/docs/stream/ngx_stream_core_module.html