nginx,php-fpm,phpfastcgi,upstream实现负载均衡

负载均衡原理及好处

网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自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;
    }

你可能感兴趣的:(nginx,php-fpm,phpfastcgi,upstream实现负载均衡)