Nginx反向代理与负载均衡、以及整合 Memcached

文章目录

  • 一、反向代理与负载均衡是什么?
    • 1.正向代理
    • 2.反向代理
    • 3.当 解析出结果,比如浏览器连接60.217时,
  • 二、Nginx反向代理设置
    • 1.引入库
  • 三、Nginx 第三方模块的安装
    • 1、安装ngx_http_php_memcache_standard_balancer-maste
    • 2、Nginx配置memcache集群

一、反向代理与负载均衡是什么?

1.正向代理

Nginx反向代理与负载均衡、以及整合 Memcached_第1张图片

2.反向代理

Nginx反向代理与负载均衡、以及整合 Memcached_第2张图片
具体的负载均衡的方式:

注意:负载均衡是一种方案,实现办法有DNS轮询,
如下图,DNS服务器允许一个域名有多个A记录,
那么在用户访问时,一般按地域返回一个较近的解析记录.
这样,全国不同的地区的用户,看到的163的主页,来自不同的服务器.

Nginx反向代理与负载均衡、以及整合 Memcached_第3张图片

3.当 解析出结果,比如浏览器连接60.217时,

这台主机后面还有N台,也要做负载均衡.
1: 硬件上做负载均衡, F5 BIG-IP ,硬件负载均衡(很贵).
直接从TCP/IP的底层协议上,直接做数据包的中转.
2: 软件负载均衡, LVS
3: 反向代理+负载均衡

Nginx反向代理与负载均衡、以及整合 Memcached_第4张图片

二、Nginx反向代理设置

1.引入库

: 把图片重写到 8080端口(既然能写到8080端口,就意味着可以写到其他独立服务器上)
        location ~ \.(jpg|jpeg|png|gif)$ {
                proxy_pass http://192.168.1.204:8080;
                expires 1d;
        }

集群与均衡-----如果后端的服务器非常多,该如何写? 又如何均匀的分发任务?

nginx 与memcached的组合

用法: nginx响应请求时,直接请求memcached,
如果没有相应的内容,再回调PHP页面,去查询database,并写入memcached.

分析: memcached是k/v存储, key-->value,
nginx请求memecached时,用什么做key?
一般用 uri arg 做key,/abc.php?id=3

三、Nginx 第三方模块的安装

1、安装ngx_http_php_memcache_standard_balancer-maste

以ngx_http_php_memcache_standard_balancer-master为例
1:解压 到 path/ngx_module

配置:
./configure --prefix=/xxx/xxx --add_module=/path/ngx_module
编译 安装
Make && make instal

2、Nginx配置memcache集群

 upstream memserver {  把用到的memcached节点,声明在一个组里
        hash_key $request_uri;  // hash计算时的依据,以uri做依据来hash
        server localhost:11211;
        server localhost:11212;
    }
Location里

        location / {
           # root   html;
           set $memcached_key $uri;
           memcached_pass memserver;  // memserver为上面的memcache节点的名称
           error_page 404 /writemem.php;
           index  index.php index.html index.htm;
        }
        
在nginx中做集群与负载均衡,步骤都是一样的
Upstream {}模块 把多台服务器加入到一个组
然后 memcached_pass, fastcgi_pass, proxy_pass ==> upstream组

在nginx中做集群与负载均衡,步骤都是一样的
Upstream {}模块 把多台服务器加入到一个组
然后 memcached_pass, fastcgi_pass, proxy_pass ==> upstream组

默认的负载均衡的算法:
是设置计数器,轮流请求N台服务器.
可以安装第3方模式,来利用uri做hash等等.

如http://wiki.nginx.org/NginxHttpUpstreamConsistentHash
这个模块就是用一致性hash来请求后端结节,并且其算法,
与PHP中的memcache模块的一致性hash算法,兼容.

安装该模块后:
Nginx.conf中

upstream memserver {
    consistent_hash $request_uri;
    server localhost:11211;
    server localhost:11212;
}

在PHP.ini中,如下配置

memcache.hash_strategy = consistent

这样: nginx与PHP即可完成对memcached的集群与负载均衡算法.

你可能感兴趣的:(后端,#,PHP,memcached,nginx,负载均衡)