设为首页 收藏本站
查看: 483|回复: 0

[经验分享] nginx 实现mysql的负载均衡【转】

[复制链接]

尚未签到

发表于 2017-12-23 15:50:23 | 显示全部楼层 |阅读模式
  默认Nginx只支持http的反向代理,要想nginx支持tcp的反向代理,还需要在编译时增加tcp代理模块支持,即nginx_tcp_proxy_module
  下面操作步骤只让nginx支持tcp_proxy,没有加入prce、gzip、ssl等功能,如需要,可自行在编译时加上相关参数。
  

wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip  
unzip master
  
tar -zxvf nginx-1.6.3.tar.gz
  
cd nginx-1.6.3
  
patch -p1 < ../nginx_tcp_proxy_module-master/tcp.patch
  
./configure --add-module=../nginx_tcp_proxy_module-master --prefix=/usr/local/nginx-1.6.3 --with-http_stub_status_module --with-http_gzip_static_module
  
make
  
make install
  

  nginx.conf主配置文件中增加如下配置配置:(也可以在主配置文件中配置include,包含tcp转发的配置文件include /usr/local/nginx-1.6.3/conf/tcp_proxy.conf;)
  

user  nobody;  
worker_processes  
1;  

  
#error_log  logs
/error.log;  
#error_log  logs
/error.log  notice;  
error_log  logs
/error.log  info;  

  
#pid        logs
/nginx.pid;  

  

  
events {
  
worker_connections  
1024;  
}
  

  
include
/usr/local/nginx-1.6.3/conf/tcp_proxy.conf;  

  
http {
  
include       mime.types;
  
default_type  application
/octet-stream;  

  
log_format  main  
'$remote_addr - $remote_user [$time_local] "$request" '  
'$status $body_bytes_sent "$http_referer" '
  
'"$http_user_agent" "$http_x_forwarded_for"';
  

  
#access_log  logs/access.log  main;
  

  
sendfile        on;
  
#tcp_nopush     on;
  

  
#keepalive_timeout  0;
  
keepalive_timeout  65;
  

  
#gzip  on;
  

  
server {
  
listen       3306;
  
server_name  localhost;
  

  
#charset koi8-r;
  

  
#access_log  logs/host.access.log  main;
  

  
location / {
  
root   html;
  
index  index.html index.htm;
  
}
  

  
location /nginx_status {
  
stub_status on;
  
access_log  logs/nginx_status.log;
  
allow 10.195.197.124;
  
deny all;
  
}
  

  
#error_page  404              /404.html;
  

  
# redirect server error pages to the static page /50x.html
  
#
  
error_page   500 502 503 504  /50x.html;
  
location = /50x.html {
  
root   html;
  
}
  

  
}
  

  
}
  

  include /usr/local/nginx-1.6.3/conf/tcp_proxy.conf;
  

tcp {  
upstream mysql {
  
server
10.207.238.66:3306;  
server
10.207.238.67:3306;  

  
check interval
=3000 rise=2 fall=5 timeout=1000;  
#check interval
=3000 rise=2 fall=5 timeout=1000  
#check interval
=3000 rise=2 fall=5 timeout=1000  
#check_http_send
"GET /HTTP/1.0\r\n\r\n";  
#check_http_expect_alive http_2xxhttp_3xx;
  
}
  

  
server {
  
listen
3307;  
proxy_pass mysql;
  
}
  
}
  

  说明:
  check interval 健康检查,单位是毫秒
  rise 检查几次正常后,将reslserver加入以负载列表中
  fall 检查几次失败后,摘除realserver
  timeout 检查超时时间,单位许毫秒
  具体可查看nginx_tcp_proxy_module-master/README,很详细。
  转自
  nginx 实现mysql的负载均衡 - ---張榮---的个人空间
  https://my.oschina.net/ambari/blog/615203

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427216-1-1.html 上篇帖子: 配置 Nginx 负载均衡监测节点状态 下篇帖子: ubuntu下python+tornado+supervisor+nginx部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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