实战B2B模式使用Nginx+Apache站群

通过清心醉

实战B2B模式使用Nginx+Apache站群

该方法主要涉及较多其实为NGINX的反向代理+负载均衡再加上APACHE的后端数据处理。

以下只为思路,更多细节的问题未能写出,作者以VM虚拟机进行多站点测试进行大数据网站服务器站群编写。

这作者假设我有4台服务器

服务器1:NGINX,作为反向代理+负载均衡+静态文件(比如IMG/JS/CSS等); IP:192.168.1.200

服务器2:MYSQL数据集群;IP:192.168.1.220

服务器3:APACHE+PHP核心代码程序运行库 IP:192.168.1.231

服务器4:APACHE+PHP核心代码程序运行库 IP:192.168.1.232

首先,WEB的程序技术你得过关,能完整的划分开动、静态的文件

先来说说思路:

NGINX做为网站的主引导入口,用户访问的时候,NGINX反向代理请求给服务器3、4;

服务器响应过后,把数据返回给NGINX。

#注:在这里可以设置服务器3、4只允许服务器1的IP进行内网访问,服务器2因为是数据库服务器,所以只允许服务器3、4进行访问。而对外访问接口只提供NGINX一个对外接口。

居然NGINX请求给了3、4的APACHE+PHP服务器,那么服务器3、4就必须连接MYSQL。(在这一点上如果你不知道PHP如何连接其他主机的MYSQL,那么我可以知道你没有程序的读写能力,劝你好好去学习学习吧)。

好了,服务器3、4请求服务器2的MYSQL毫无压力,服务器2的配置可以用最高配,因为数据库瓶颈一直也是个问题(当然也可以使用更多的服务器做MYSQL,进行MYSQL数据库的同步工作,瓶颈基本就可以得到很好的解决,因为作者没去了解过MYSQL数据同步,所以暂时以一台服务器做讲解)。

好吧,作者说说最大的问题点吧。

1:NGINX的负载均衡,把访问的请求均衡转发给服务器3、4;

方法1:循环反向代理模式

nginx.conf的http节点内添加:

upstream ipanying{
      server 192.168.1.231:88;
      server 192.168.1.232:88;
}

然后在server节点内

直接使用:

proxy_pass http://ipanying;

反向代理给IP=192.168.1.231和192.168.1.232的服务器

以上upstream使用的是循环制,即第一次访问的是231的IP,第二次访问的是232的IP,然后又回到231,以此类推。

 

方法2:根据访问IP的方式(推荐)

继续修改upstream模式:

upstream ipanying{
ip_hash;
server 192.168.1.231:88;
server 192.168.1.232:88;
}

作者为什么会推荐该模式,因为用户访问,可能会根据IP、COOKIE等做信息处理。

还有最主要的是如果有涉及登录模式的话,用户登录的SESSION所在的服务器集不一,这样一来的话,下次分发到另外的服务器的时候,可能会导致IP统计不准确或者SESSION丢失等问题。

更多的方法可以GOOGLE “upstream ”;

 

方法3:权重反向代理模式

修改上文中的:

upstream ipanying{
      server 192.168.1.231:88 weight=2;
      server 192.168.1.232:88 weight=10;   
}

权重反向有什么好处呢?

比如231的IP的服务器只有4G内存,CPU只有2核,就不能进行太多的请求,如果使用循环制,怕跑太辛苦,

可是第二台权重=10又是什么意思

因为我第二台服务器有64G内存,24核CPU,我想更多的用户都主要以该服务器为主,偶尔转发几个给IP231的服务器,权重反向模式绝对是最佳模式;当然该方法仅适于展示的网站,不存在SESSION等信息的时候。

 

2:NGIXN的静态文件及服务器3、4动态文件的处理;

在这特别说下,服务器3、4只存在PHP和视图文件。不参与一切img\js\css等静态文件的存放,这些文件只能放在NGINX下

NGINX在进行均衡反向的时候,自身同时也把静态文件发送给用户。

比如登录PHP网站后台,生成的图片,上传的媒体文件等,通过方法放在NGINX的ROOT指定目录,这点就PHP的技术上来说,实现不难。

顺便贴下作者B2B的服务器群组部署:

/admin 管理员后台

/data 网站前台

/shangjia 商家后台

以上3目录只包含PHP和tpl和phtml文件,因为文件相同,分别部署服务器3、4

然后是NGINX

/img

/cssjs

实现的方法就是商家上传的图片,放在NGINX服务器的img内,这样就可以进行数据相应了。

作者上文写了Linux+Apache+Nginx+Mysql+Php真的适合所有的单一服务器网站吗?

利用NGINX的反向优势来进行评测,现在这篇文章是让更多的人知道,LANMP,适合的不是单一服务体,更多的是大群体服务器。

 

 

关于作者

清心醉 administrator

发表评论

如果喜欢作者的文章,您可以打赏给作者:

TRC20(虚拟货币):


ERC20(虚拟货币):


Bitcoin(BTC):