dfdh 发表于 2013-9-17 09:19:52

Nginx+lamp+nginx+xcache+memcached

实验图:负载均衡负载均衡(又称为负载分担),英文名称为LoadBalance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务Nginx的upstream目前支持4种方式的分配1)、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2)、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。3)、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。4)、fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。5)、url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效负载均衡的server中参数:每个设备的状态设置为:1.down表示单前的server暂时不参与负载2.weight默认为1.weight越大,负载的权重就越大。3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误4.fail_timeout:max_fails次失败后,暂停的时间。5.backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。Nginx支持同时设置多组的负载均衡,用来给不用的server来使用。client_body_in_file_only设置为On可以讲clientpost过来的数据记录到文件中用来做debugclient_body_temp_path设置记录文件的目录可以设置最多3层目录location对URL进行匹配.可以进行重定向或者进行新的代理负载均衡实验:负载均衡:图3原理:当用户来访问nginx(负载均衡,反向代理,状态监控)会查看自己的服务器缓存里面是否存在用户所需要的数据,有则给用户,无则向apache用户发出请求文件,然后再通过nginx传递给用户,假如访问的数量多的时候,可以通过负载均衡来分别向两个服务器来进行请求.假如说某个服务器坏掉,我们也可以通过查看状态来实现,从而大大提高我们的工作效率.实现状态监控则需要在nginx上重新打补丁,然后重新对nginx进行源码安装步骤:首先打补丁补丁打在nginx的源码上重新对nginx进行重新源码安装1.patch-p1<../healthchec对eginx进行打补丁2../configure重新对nginx进行配置--conf-path=/etc/nginx/nginx.conf--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx/nginx.pid--lock-path=/var/lock/nginx.lock--user=nginx--group=nginx--with-http_ssl_module--with-http_flv_module--with-http_stub_status_module--with-http_gzip_static_module--http-client-body-temp-path=/var/tmp/nginx/client/--http-proxy-temp-path=/var/tmp/nginx/proxy/--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/--with-pcre--add-module=/usr/local/src/healthcheck_nginx_upstreams-master3.make&&makeinstall4../nginx启动nginx文件(参考上一节控制脚本)servicenginxstart5.cd/usr/local/src/healthcheck_nginx_upstreams-master/切换到补丁的界面6.图17.对nginx的配置,参考我的上一节博客.8.upstreambackend{9.server192.168.3.2weight=1;负载两台主机10.server192.168.3.3weight=2;11.healthcheck_enabled;打开监听状态12.healthcheck_delay1000;下一个服务器检测时间是1000MS13.healthcheck_timeout1000;1000MS检测没有通过14.healthcheck_failcount1;有一次失效及认为失败15.16.#healthcheck_expected'I_AM_ALIVE';17.18.healthcheck_send"GET/.healthHTTP/1.0";19.}Proxy_passhttp://backend;对缓存进行引用图24.查看状态存放在server下面location/stats{healthcheck_status;}Serverphp-fpmstart
Nginx反向代理缓存反向代理:可以结合缓存来进行使用,当用户向nginx服务器来发出请求的时候,如果缓存里面有client所需要的信息,则转给用户,如果没有则向apache来进行请求,然后再把所得到的信息转交给client(相当于中介)在于apache传递的过程中,会以nginx内的私有ip地址向apache进行通信,而apache得到地址是nginx私有的地址,而不是client的地址.语法:proxy_passURL默认值:locationifinlocationlimit_except例如:server{listen80;server_namewww.abc.com;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{roothtml;indexindex.phpindex.htmlindex.htm;proxy_passhttp://192.168.2.101;(反向代理,client发过来请求向转到这台服务器上面)}
反向代理增加缓语法:proxy_cache_pathpathkeys_zone=name:size[[max_size=size];如果需要将文件缓存到本地,则需要增加如下几个子参数:proxy_storeon;proxy_store_accessuser:rwgroup:rwall:rw;proxy_temp_path缓存目录;其中,proxy_storeon用来启用缓存到本地的功能,proxy_temp_path用来指定缓存在哪个目录下,如:proxy_temp_pathhtml;
在经过上一步配置之后,虽然文件被缓存到了本地磁盘上,但每次请求仍会向远端拉取文件,为了避免去远端拉取文件,必须修改proxy_pass:代码:if(!-e$request_filename){proxy_passhttp://freeke;}
memcachedMemcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(LeastRecentlyUsed)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
Memcached监听端口:11211基本命令:-p监听的端口-l连接的ip地址,默认是本机-dstart启动memcached服务-drestart重启memcached服务-dstopshutdown关闭正在运行的memcached服务-dinstall安装memcached服务-duninstall卸载memcached服务-u以的身份运行-m最大的内存使用-M内存耗尽时返回错误,而不是删除项-c最大同时连接数,默认是1024-f块大小增长因子,默认是1.25-n最小分配空间,key+value+flags默认是48安装:memcached服务器环境:memcached-1.4.13.tar.gzlamp1.tar-zxvfmemcached-1.4.13.tar.gz-C/usr/local/src2.cd/usr/local/src/memcached3../configure--with-libevent=/usr/local/libevent/4.cd/usr/local/bin存放的位置5.memcached-unobody-dstart启动memcached以nobody用户启动6.图47.编辑控制memcached控制脚本8.图59.chkconfig–addmemcached用chkconfig来对memcached进行管理
为PHP安装memcached客户端环境:memcache-2.2.5.tgz1.tar-zxvfmemcache-2.2.5.tgz-C/usr/local/src2.cd/usr/local/src3.图64./usr/local/php/phpize5.图76../configure–enable-memcache–with-php-config=/usr/local/php/bin/php-config7.make&&makeinstall8.图89.vim/etc/php/php.ini存放php扩展文件的一个文件10.用extension来指明扩展memcache的扩展文件存放的位置11.图912.servicephp-fpmrestart13.图10

youngfan007 发表于 2013-11-28 06:14:46

奈何桥下旳莲花-,见证了誰与誰旳.兩代繁華。

dinggela 发表于 2013-11-28 22:25:30

你敢不敢大声对我说:这世界上除了你, 谁都没资格陪在我身边。

浪人 发表于 2013-11-30 12:25:35

你说过我们是彼此的句点,一起走到最后的人。

wangluo010 发表于 2013-12-1 10:35:51

如果男人的好是要你委屈自己处处讨好,才能塑造,才能得到,你又何可自寻苦恼.

jdxyzlh 发表于 2013-12-2 04:20:44

稚嫩的小草要寻找旁边的大树做陪伴,才不会感到寂寞,孤独.

艾辉 发表于 2013-12-3 01:07:34

也许在8岁那年/我就该死去/活下来的十几年/就是在延续疼痛了/
页: [1]
查看完整版本: Nginx+lamp+nginx+xcache+memcached