使用nginx配置mysql负载均衡

这段时间初步了解了一点nginx,主要时因为在公司上班我老大要我配置使用,果然工作还是非常有助于学习的。

关于nginx的安装我就不多说了,网上一搜一大把

需要注意的是,nginx在1.9版本之前是只能配置http协议的,不接受tcp协议的代理,所以nginx最常见的功能是服务器的负载均衡配置,大致流程如下:

以TONCAT 的web服务器举例:

使用nginx配置mysql负载均衡_第1张图片

Nginx的作用主要就是分发请求,减少单个Tomcat的压力,从而达到提高服务器承载请求的能力(也就是能够处理高并发的情况服务器不会瘫痪)

 

使用Nginx配置mysql负载均衡与上述差不多,只不过TOMCAT将不再连接同一个数据库服务器,而是连接nginx,nginx分发请求给不同的数据库服务器。

需要注意的是,这种情况下,我为了保证TOMCAT拿到的数据是正确的,需要保证不同数据库之间的数据是同步的,我这次应用中使用的是mysql自带的同步功能,设置为主主同步(实际上就是多个主从同步),这里暂时不做过多介绍,我将另起一篇博文介绍mysql的主主同步配置

配置了mysql负载均衡后的拓扑图大致如下:

使用nginx配置mysql负载均衡_第2张图片

mysql负载均衡的配置也是十分简单:

在nginx.conf文本最后一行添加下述代码即可:

stream {
    server {
       listen 3306;
       proxy_pass db;    
    }
    upstream db {
       server 192.168.18.130:3305;
       server 192.168.18.129:3305;
    }

}

需要说明的是,上述配置中监听了3306端口,即3306端口将被nginx占用,而mysql的默认使用端口为3306,这将导致mysql无法启动,所以需要将mysql的端口号改为其他端口(本文中将其设置成3305,这将会在mysq主主同步的博文中说明),proxy_pass即为代理地址,关于nginx的优化还有许多内容,在日后的学习中将会逐步更新

 

代码需要在nginx1.9版本以上才支持,如果时1.9版本以下,加载配置文件时会报错说无法识别stream。

你可能感兴趣的:(使用nginx配置mysql负载均衡)