作者个人研发在高并发场景下提供了一个简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。开源半年多以来,已成功为十几家中小企业提供精准定时调度解决方案,经受住了生产环境的考验。为了造福更多的童鞋,这里给出开源框架地址:https://github.com/sunshinelyz/mykit-delay写在前面的Nginx可以实现HTTP和HTTPS协议的负载均衡,也可以实现TCP协议的负载均衡。那么,问题来了,是否可以通过Nginx来实现MySQL数据库的负载均衡呢?答案是:是的。下面我们就来讨论一下如何使用Nginx来实现MySQL的负载均衡。前提条件说明:使用Nginx实现MySQL数据库的负载均衡,前提是要搭建MySQL的主从复制环境。关于MySQL主主复制环境的搭建,我会在后面的MySQL专题中详细讲解。这里,我们假设已经搭建好MySQL的主从复制环境,MySQL服务器的IP和端口如下。192.168.1.1013306192.168.1.1023306通过Nginx访问MySQL的IP和端口如下。192.168.1.1003306Nginx实现MySQL负载均衡。nginx从1.9.0版本开始支持tcp负载均衡。具体可以参考官网模块ngx_stream_core_module的说明。链接地址为:http://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay。Nginx从1.9.0开始引入了模块ngx_stream_core_module。该模块未编译,需要编译。编译时需要加上--with-stream配置参数。流式负载均衡官方配置示例如下。worker_processesauto;error_log/var/log/nginx/error.loginfo;events{worker_connections1024;}stream{upstreambackend{hash$remote_addrconsistent;serverbackend1.example.com:12345weight=5;server127.0.0.1:12345max_fails=30fails_timeout=3:/tmp/backend3;}upstreamdns{server192.168.0.1:53535;serverdns.example.com:53;}server{listen12345;proxy_connect_timeout1s;proxy_timeout3s;proxy_passbackend;}server{listen127.0.0.1:53udp;proxy_responses1;proxy_timeout20passdn;proxy;}server{listen[::1]:12345;proxy_passunix:/tmp/stream.socket;}}说起来,使用Nginx实现MySQL负载均衡还是比较简单的。我们可以参考上面官方的配置示例来配置MySQL的负载均衡。在这里,我们可以对Nginx进行如下配置。usernginx;#userroot;worker_processes1;error_log/var/log/nginx/error.logwarn;pid/var/run/nginx.pid;events{worker_connections1024;}http{include/etc/nginx/mime.types;default_typeapplication/octet-stream;log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_log/var/log/nginx/access.logmain;sendfileon;#tcp_nopushon;keepalive_timeout65;#gzipon;include/etc/nginx/conf.d/*.conf;}stream{upstreammysql{server192.168.1.101:3306weight=1;server192.168.1.102:3306weight=1;}server{listen3306;server_name192.168.1.100;proxy_passmysql;}}配置完成后,我们就可以通过以下方式访问MySQL数据库了。jdbc:mysql://192.168.1.100:3306/数据库名此时,Nginx会将访问MySQL的请求路由到IP地址为192.168.1.101和192.168.1.102的MySQL。本文转载自微信公众号“冰河科技”,可通过以下二维码关注。转载本文请联系冰川科技公众号。
