该方法主要涉及较多其实为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,适合的不是单一服务体,更多的是大群体服务器。
关于作者