负载均衡原理及好处
网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一种负载均衡了。
Nginx负载均衡一些基础知识:
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方)
Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。
用的最前端是一台nginx服务器 , 所有静态的内容都由nginx来处理,将所有php的请求都分摊到包括自身和下游的若干台运行php-fpm(fastcgi)守护进程的服务器中进行处理,规划3台web服务器(host1,2,3)均安装包括nginx+php+php-fpm等环境,做负载均衡,而,只有2台服务器其实只用到php-fpm,
—————————————————————————————————————
1、配置代理地址:
运行php fastcgi进程时,需要让php-cgi监听到服务器的局域网地址
前者表示php-fpm 监听的ip 和端口,由于要让host_1的nginx反向代理到,所以应该使用局域网ip,而不是默认的127.0.0.1.
host1,2,3 都有设置user 与group 为www
host2,3的www.conf
listen = 192.xx.xx.x2:9000
listen.allowed_clients = 192.xx.xx.x2
配置好后注意重载配置 service php-fpm reload
2、配置代理机host_1 的nginx 进行负载均衡nginx负载均衡配置,主要是proxy_pass,upstream的使用
upstream php-fpm-backend {
#weight全都相等下的轮叫调度(Round-RobinScheduling)模式
server 127.0.0.1:9000 weight=1;//本机host1
server 192.168.33.11:9000 weight=1;
server 192.168.33.12:9000 weight=1;
}
#test-dev.conf vhost 配置
server_name test.dev;
root /home/vison/www/demaya/webroot;
location ~ \.php$ {
fastcgi_pass php-fpm-backend; //上面的fastcgi均衡器php-fpm-backend
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}