应用集群配置_第1页
应用集群配置_第2页
应用集群配置_第3页
应用集群配置_第4页
应用集群配置_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用集群配置一、负载均衡名词解释负载均衡负载均衡(又称为负载分担),英文名称为LoadBalance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务四层和七层负载均衡负载均衡设备也常被称为"四到七层交换机"所谓四层就是基于IP+端口的负载均衡;四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层就是基于URL等应用层信息的负载均衡;七层的负载均衡,就是在四层的基础上,再考虑应用层的特征,比如同一个WEB服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。负载均衡策略负载均衡算法负载均衡策略基于DNS的负载均衡。基于反向代理的负载均衡。基于特定服务器软件的负载均衡。基于NAT的负载均衡。基于CDN的负载均衡。基于DNS的负载均衡实现原理:一个域名绑定多个IP,通过DNS服务中的随机域名解析来实现。基于DNS的负载均衡优点:实现简单、实施容易、成本低、适用于大多数TCP/IP应用。基于DNS的负载均衡问题:一旦某个服务器出现故障,即使修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间保存了故障服务器地址的客户计算机将不能正常访问服务器。缺陷:

DNS负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分配请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服务器上的偶然情况。基于反向代理的负载均衡实现原理:通过正则映射将请求重定向到内容服务器。基于反向代理的负载均衡优点:自带高速缓冲,可减轻内容服务器压力,提速网络访问效率。基于反向代理的负载均衡问题:针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身可能会成为服务的瓶颈。缺陷:反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。基于特定服务器软件的负载均衡实现原理:利用网络协议的重定向功能来实现。基于特定服务器软件的负载均衡优点:服务可定制,可依据底层服务器的性能及实况进行负载调控。基于特定服务器软件的负载均衡问题:需要改动软件,成本较高。基于NAT的负载均衡实现原理:将一个外部IP地址映射为多个内部IP地址。基于NAT的负载均衡优点:比较完善的负载均衡技术,均衡算法也较灵活,如随机选择、最少连接数及响应时间等来分配负载。基于NAT的负载均衡问题:伸缩能力有限,当服务器结点数目过多时,调度器本身有可能成为系统的新瓶颈。基于CDN的负载均衡实现原理:通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容。基于CDN的负载均衡优点:用户访问就近服务器,提高访问速度。负载均衡算法轮询算法。

Hash散列算法。最少链接算法。最快链接算法。加权算法。动态反馈算法。轮询算法实现原理:每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。轮询算法优点:简洁,无状态调度。缺点:轮询调度算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。轮询算法适用:服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。Hash散列算法

MD5。一致性Hash算法。各种经典Hash算法。自定义Hash算法。最少链接算法实现原理:将请求分配至当前链接数最少的服务器。二、web服务器的负载均衡web服务器负载均衡的两个问题会话的同步应用的同步会话的同步会话的同步无需会话的同步的伪集群该种方式下,当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm路由,以后该用户的所有request都会被绑定这个jvm路由,用户只会与该server发生交互,这种策略被称为粘性session(sessionsticky)。该方法的优点是响应速度快,多个节点之间无须通信。缺点也很明显,某个node死掉以后,它负责的所有用户都会丢失session应用同步采用共享文件系统NFS、SSHFSSSHFS安装配置安装:#如果是ubuntuapt-getinstallsshfs#如果是Redhatyuminstallfuse-sshfsSSHFS命令选项SSHFSoptions:-pPORTequivalentto'-oport=PORT'-Cequivalentto'-ocompression=yes'#启用压缩,建议配上-Fssh_configfilespecifiesalternativesshconfigurationfile#使用非默认的ssh配置文件-1equivalentto'-ossh_protocol=1'#不要用啊-oreconnectreconnecttoserver#自动重连-odelay_connectdelayconnectiontoserver-osshfs_syncsynchronouswrites-ono_readaheadsynchronousreads(nospeculativereadahead)#提前预读-osshfs_debugprintsomedebugginginformation-ocache=BOOLenablecaching{yes,no}(default:yes)#能缓存目录结构之类的信息-ocache_timeout=Nsetstimeoutforcachesinseconds(default:20)-ocache_X_timeout=Nsetstimeoutfor{stat,dir,link}cacheSSHFS命令选项-oworkaround=LISTcolonseparatedlistofworkaroundsnonenoworkaroundsenabledallallworkaroundsenabled[no]renamefixrenamingtoexistingfile(default:off)[no]nodelaysrvsetnodelaytcpflaginsshd(default:off)[no]truncatefixtruncateforoldservers(default:off)[no]buflimitfixbufferfillupbuginserver(default:on)-oidmap=TYPEuser/groupIDmapping,possibletypesare:#文件权限uid/gid映射关系nonenotranslationoftheIDspace(default)useronlytranslateUIDofconnectinguserSSHFS命令选项-ossh_command=CMDexecuteCMDinsteadof'ssh'-ossh_protocol=Nsshprotocoltouse(default:2)#肯定要2的-osftp_server=SERVpathtosftpserverorsubsystem(default:sftp)-odirectport=PORTdirectlyconnecttoPORTbypassingssh-otransform_symlinkstransformabsolutesymlinkstorelative-ofollow_symlinksfollowsymlinksontheserver-ono_check_rootdon'tcheckforexistenceof'dir'onserver-opassword_stdinreadpasswordfromstdin(onlyforpam_mount)-oSSHOPT=VALsshoptions(seemanssh_config)编辑SSHFS启动脚本/etc/init.d/sshfs#!/bin/bashcase"$1"instart)echoKWemis2010|sshfs-otransform_symlinks-ofollow_symlinksroot@0:/usr/local/projz_zs/usr/local/project-opassword_stdin-ononempty;;stop)umount/usr/local/project;;restart)$0stop/bin/sleep10$0start;;*)echo"Usage:sshfs{start|stop|restart}"exit1esac三、NGINX配置Nginx的主配置文件Nginx的主配置文件为nginx.conf.此文件在nginx的安装目录下.如果你的nginx的安装目录是/usr/local/nginx,那么nginx.conf就在/usr/local/nginx/下nginx.conf文件结构…………events{………………..}http{…………….server{………………..}……………….}#usernobody;

#指定使用的用户

worker_processes1;

#开启的进程数,一般设置1-5

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#定义错误日志,以及记录的日志等级

#pidlogs/nginx.pid;

#定义pid文件位置Nginx的主配置文件nginx.conf文件结构…………events{………………..}http{…………….server{………………..}……………….}Nginx的主配置文件events{

use;

#Nginx支持如下处理连接的方法(I/O复用方法),这些方法可以通过use指令指定

#use[kqueue|rtsig|epoll|select|poll];

#每个进程最大连接数(最大连接=连接数x进程数)

#worker_connections51200;

}

nginx.conf文件结构…………events{………………..}http{…………….server{………………..}……………….}nginx.conf文件结构…………events{………………..}http{…………….server{………………..}……………….}Nginx压缩输出配置Nginx使用gzip压缩技术,这种技术可以压缩文件至原来的30%甚至更小。IE、FireFox、Opera、Chrome等大多浏览器都支持解析gzip过的页面.Gzip指令用于http{…}之间如下http{…gzipon;gzip_min_length1k;gzip_buffer416k;gzip_http_version1.1;gzip_comp_level2;gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;gzip_varyon;#accpet_encodinggzip…}Nginx的虚拟主机配置虚拟主机把一台运行在因特网上的服务器主机划分成多“虚拟”的主机。每个虚拟主机都具有独立的域名和Internet服务器(WWW,FTP,EMAIL)功能。利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器上、同一组Nginx进程上运行多个网站的功能。每段server{…}就是一个虚拟主机,如果要配置多个虚拟主机,只需配置多个server{…}段即可。http{server{listen80default;server_name_*;access_loglogs/access.logdefault;location/{ indexindex.htmlindex.htm;root/data0/htdocs/htdocs/;}#location}#server}#httpnginx.conf如何配置虚拟主机配置虚拟主机的分类基于配置IP的虚拟主机基于配置域名的虚拟主机http{#第一台虚拟主机server{ #监听的IP和端口listen380; #主机名称server_name3; #访问日志存放路径access_loglogs/access_logcombined;location/{ #默认首页文件indexindex.htmlindex.htm; #html文件存放路径root/data0/htdocs/server1;}}}注:listen可以不写IP只写端口,意思是监听本机的所有80端口基于配置IP的虚拟主机http{#第一台虚拟主机server{ #监听的端口listen80;#主机名server_name; #日志存放路径access_loglogs/sub_mygogo_com.logcombined;location/{ #默认首页文件indexindex.htmlindex.html; #工程存放目录root/data0/htdocs/;}}}基于配置域名的虚拟主机四、NGINX模块解析内核模块配置示例usernobody;worker_processes4;#error_log/opt/nginx_logs/error.log;#error_log/opt/nginx_logs/error.lognotice;#error_log/opt/nginx_logs/error.loginfo;pidlogs/nginx.pid;worker_rlimit_nofile65535;内核模块设置工作的进程数(可设置为可用cpu的数量)。语法: worker_processesnumber默认值: 1上下文: main指定错误日志的文件和错误级别。语法: error_logfile[debug|info|notice|warn|error|crit]默认值: ${prefix}/logs/error.log上下文: http,server,location定义一个worker进程可以同时处理的文件数量。语法: worker_rlimit_nofilelimit默认值: OS默认上下文: main事件模块配置示例。events{useepoll;worker_connections65535;}指定事件响应模式。语法: usetype默认值: 在编译时指定上下文: events设置每个worker进程所能处理的连接数。语法: worker_connectionsnumber默认值: 1024上下文: eventsHTTP内核模块配置范例http{

include

mime.types;

default_type

application/octet-stream;

sendfile

on;

keepalive_timeout

65;

gzip

off;

upstreambackup{

server:8010;

server:8011;

keepalive10;

}HTTP内核模块

server{

listen

:80;

server_;

if($http_user_agent~MSIE){

rewrite^(.*)$/msie/$1break;

}

location/{

[configurationA]

}

HTTP内核模块

location^~/images/{

if($request_method=POST){

proxy_passhttp://backup;

}

[configurationB]

}

location~/purge(/.*){

allow

;

deny

all;

}

}}

HTTP内核模块为HTTP服务器提供配置上下文。语法: http{...}默认值: —上下文: main开始设置虚拟主机。语法: server{...}默认值: —上下文: http为某个请求URI(路径)建立配置。语法: location[=|~|~*|^~]uri{...} location@name{...}默认值: —上下文: server,locationHTTP内核模块计算指定的condition的值。语法: if(condition){...}默认值: —上下文: server,location停止处理当前这一轮的rewrite指令集。语法: break;默认值: —上下文: server,location,if停止处理并返回指定code给客户端。语法: returncode[text];returncodeURL;returnURL;默认值: —上下文: server,location,ifHTTP内核模块匹配条件变量名;如果变量值为空或者是以“0”开始的字符串,则条件为假;使用“=”和“!=”运算符比较变量和字符串;使用“~”(大小写敏感)和“~*”(大小写不敏感)运算符匹配变量和正则表达式。正则表达式可以包含匹配组,匹配结果后续可以使用变量$1..$9引用。如果正则表达式中包含字符“}”或者“;”,整个表达式应该被包含在单引号或双引号的引用中。使用“-f”和“!-f”运算符检查文件是否存在;使用“-d”和“!-d”运算符检查目录是否存在;使用“-e”和“!-e”运算符检查文件、目录或符号链接是否存在;使用“-x”和“!-x”运算符检查可执行文件;正则正则匹配.xlsxHTTP内核模块定义将要被作为默认页的文件。语法: indexfile...;默认值: indexindex.html;上下文: http,server,location为请求设置根目录。语法: rootpath;默认值: roothtml;上下文: http,server,location,ifinlocation

定义指定路径的替换路径。语法: aliaspath;默认值: —上下文: locationHTTP内核模块设置虚拟主机名。语法: server_name

name

...;默认值: server_name"";上下文: server设置客户端的长连接在服务器端保持的最长时间。语法: keepalive_timeout

timeout

[header_timeout];默认值: keepalive_timeout75s;上下文: http,

server,

location

为指令错误定义显示的URI。语法: error_pagecode...[=[response]]uri;默认值: —上下文: http,server,location,ifinlocationHTTP内核模块内嵌变量$arg_name,请求行中的name参数。$args,请求行中参数字符串。$binary_remote_addr,客户端IP地址的二进制形式,长度总是4字节。$body_bytes_sent,nginx返回给客户端的字节数,不含响应头。$bytes_sent,nginx返回给客户端的字节数(1.3.8,1.2.5)。$connection,连接的序列号(1.3.8,1.2.5)。$content_length,“Content-Length”请求头的值。$content_type,“Content-Type”请求头的值。$cookie_name,名为name的cookie。$document_root,当前请求的root指令或alias指令的配置值。$document_uri,与$uri相同。$host,“Host”请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名。HTTP内核模块$hostname,机器名称。$http_name,任意请求头的值;变量名的后半部为转化为小写并且用下划线替代横线后的请求头名称。$https,如果连接是SSL模块,返回“on”,否则返回空字符串。$is_args,如果请求行带有参数,返回“?”,否则返回空字符串。$limit_rate,允许设置此值来限制连接的传输速率。$msec,当前时间,单位是秒,精度是毫秒。(1.3.9,1.2.6)$nginx_version,nginx版本号。$pid,worker进程的PID。$query_string,与$args相同。$realpath_root,按root指令或alias指令算出的当前请求的绝对路径。其中的符号链接都会解析成真是文件路径。$remote_addr,客户端IP地址。$remote_port,客户端端口。$remote_user,为基本用户认证提供的用户名。HTTP内核模块$request,完整的原始请求行。$request_body,请求正文。在由proxy_pass指令和fastcgi_pass指令处理的路径中,这个变量值可用。$request_body_file,请求正文的临时文件名。处理完成时,临时文件将被删除。如果希望总是将请求正文写入文件,需要开启client_body_in_file_only。如果在被代理的请求或FastCGI请求中传递临时文件名,就应该禁止传递请求正文本身。使用proxy_pass_request_bodyoff指令和fastcgi_pass_request_bodyoff指令分别禁止在代理和FastCGI中传递请求正文。$request_completion,请求完成时返回“OK”,否则返回空字符串。$request_filename,基于root指令或alias指令,以及请求URI,得到的当前请求的文件路径。$request_method,HTTP方法,通常为“GET”或者“POST”。$request_time,请求处理的时间,单位为秒,精度是毫秒(1.3.9,1.2.6);请求处理时间从由客户端接收到第一个字节开始计算。$request_uri,完整的原始请求行(带参数)。HTTP内核模块$scheme,请求协议类型,为“http”或“https”。$sent_http_name,任意的响应头字段的值。变量名的后半部为转化为小写并且用下划线替代横线后的响应头名称。$server_addr,接受请求的服务器地址。为计算这个值,通常需要进行一次系统调用。为了避免系统调用,必须指定listen指令的地址,并且使用bind参数。$server_name,接受请求的虚拟主机的首要主机名。$server_port,接受请求的虚拟主机的端口。$server_protocol,请求协议,通常为“HTTP/1.0”或“HTTP/1.1”。$status,响应状态码。$tcpinfo_rtt,$tcpinfo_rttvar,$tcpinfo_snd_cwnd,$tcpinfo_rcv_space,客户端TCP连接的信息,在支持套接字选项TCP_INFO的系统中可用。$uri,当前请求规范化以后的URI。变量$uri的值可能随请求的处理过程而改变。比如,当进行内部跳转时,或者使用默认页文件。Log模块配置实例log_formatmain'$remote_addr-$remote_user[$time_local]''"$request"$status$bytes_sent''"$http_referer""$http_user_agent""$gzip_ratio"';access_log/spool/logs/nginx-access.logmainbuffer=32k;为访问日志设置路径,格式和缓冲区大小。语法: access_logpath[format[buffer=size]];access_logoff;默认值: access_loglogs/access.logcombined;上下文: http,server,location,ifinlocation,limit_except

指定日志的格式。语法: log_formatnamestring...;默认值: log_formatcombined"...";上下文: httpProxy模块配置范例proxy_temp_path

/date/nginx/proxy_temp12;proxy_cache_path/data/nginx/cachelevels=1:2keys_zone=ng_cache:400minactive=1dmax_size=60g;location/{

proxy_set_header Host $host;

proxy_set_header Connection “”;

proxy_http_version 1.1;

proxy_cache_valid 3025m;

proxy_cache_valid 20020d;

proxy_cache_key "$scheme$host$request_uri";

proxy_cache ng_cache;

proxy_pass http://localhost:8000;}重新定义或者添加发往后端服务器的请求头。语法: proxy_set_headerfieldvalue;默认值: proxy_set_headerHost$proxy_host;proxy_set_header Connectionclose;上下文: http,server,location设置代理使用的HTTP协议版本。语法: proxy_http_version1.0|1.1;默认值: proxy_http_version1.0;上下文: http,server,location设置后端服务器的协议和地址。语法: proxy_passURL;默认值: —上下文: location,ifinlocation,limit_exceptProxy模块设置缓存的路径和其他参数。语法: proxy_cache_pathpath[levels=levels]keys_zone=name:size [inactive=time][max_size=size][loader_files=number] [loader_sleep=time][loader_threshold=time];默认值: —上下文: http指定用于页面缓存的共享内存。语法: proxy_cachezone|off;默认值: proxy_cacheoff;上下文: http,server,locationProxy模块为不同的响应状态码设置不同的缓存时间。语法: proxy_cache_valid[code...]time;默认值: —上下文: http,server,location定义如何生成缓存的键。语法: proxy_cache_keystring;默认值: proxy_cache_key$scheme$proxy_host$request_uri;上下文: http,server,location设置响应被缓存的最小请求次数。语法: proxy_cache_min_usesnumber;默认值: proxy_cache_min_uses1;上下文: http,server,locationProxy模块Rewrite模块配置范例//多目录转成参数if($host~*(.*)/.domain/.com){ set$sub_name$1; rewrite^/sort//(/d+)//?$/index.php?act=sort&cid=$sub_name&id=$1last;}//目录对换rewrite^/(/d+)/(.+)//$2?id=$1last;//在用户使用ie的使用重定向到/nginx-ie目录下。if($http_user_agent~MSIE){ rewrite^(.*)$/nginx-ie/$1break;}Rewrite模块如果指定的正则表达式能匹配URI,此URI将被replacement参数定义的字符串改写。rewrite指令按其在配置文件中出现的顺序执行。语法: rewriteregexreplacement[flag];默认值: —上下文: server,location,if可选的flag参数可以是其中之一:last:停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;break:停止执行当前这一轮的ngx_http_rewrite_module指令集;redirect:在replacement字符串未以“http://”或“https://”开头时,使用返回状态码为302的临时重定向;permanent:返回状态码为301的永久重定向。Map模块配置范例map$uri$new{ default /home/; /aa /; /bb /; ^/cc/(?P<suffix>.*)$ /$suffix; /john /users/john/;}map$uri$myvalue{ /aa /mapped_aa; ~^/aa/(?<suffix>.*)$ /mapped_bb/$suffix;}Map模块变量设置的映射表。映射表由两列组成,匹配模式和对应的值。语法: mapstring$variable{...}默认值: —上下文: http这个指令也支持三个特殊参数。defaultvalue:如果源变量值没有匹配到任何变量,则设置一个默认值作为结果。当没有设置default,将会用一个空的字符串作为默认的结果。hostnames:允许用前缀或者后缀掩码指定域名作为源变量值。includefile:包含一个或者多个存有映射值的文件。Upstream模块配置范例upstreambackend{serverweight=5;server:8080max_fails=3fail_timeout=30s;serverunix:/tmp/backend3;server:8080backup;keepalive16;}定义一组服务器语法: upstreamname{...}默认值: —上下文: httpUpstream模块定义服务器的地址address和其他参数parameters。语法: serveraddress[parameters];默认值: —上下文: upstream可定义参数:weight=number。设定服务器的权重,默认是1。max_fails=number。设定Nginx与服务器通信的尝试失败的次数。fail_timeout=time。设定统计失败尝试次数的时间段,默认是10秒。backup。标记为备用服务器。down。标记服务器永久不可用,可以跟ip_hash指令一起使用。激活对上游服务器的连接进行缓存。语法: keepaliveconnections;默认值: —上下文: upstreamAccess模块配置范例location/{ deny; allow/24; allow/16; allow2001:0db8::/32; denyall;}Access模块允许指定的网络地址访问语法: allowaddress|CIDR|all;默认值: —上下文: http,server,location,limit_except拒绝指定的网络地址访问语法: denyaddress|CIDR|all;默认值: —上下文: http,server,location,limit_exceptFastCGI模块配置范例upstream_fcgi{

server

:9000weight=8;

server

:9001weight=8;}location~.*.php?${

#fastcgi_passunix:/dev/shm/fcgi.sock;

#fastcgi_pass:9000;

fastcgi_pass_fcgi;

includefastcgi.conf;

fastcgi_buffer_size128k;

fastcgi_buffers4128k;

fastcgi_connect_timeout1800;}FastCGI模块指定FastCGI服务器监听端口与地址。语法: fastcgi_passfastcgi-server默认值: none上下文: http,server,location指定一些传递到FastCGI服务器的参数。语法: fastcgi_paramparametervalue默认值: —上下文: http,server,locationfastcgi.conf指定同FastCGI服务器的连接超时时间,这个值不能超过75秒。语法: fastcgi_connect_timeouttime默认值: fastcgi_connect_timeout60上下文: http,server,location五、NGINX负载均衡NGINX负载均衡Nginx的负载均衡是一个基于内容和应用的七层交换负载均衡的实现优点:1、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。2、内存消耗少:在3万并发连接下,开启的10个Nginx进程才消耗150M内存(15M*10=150M)。3、配置文件非常简单:风格跟程序一样通俗易懂。4、成本低廉:Nginx为开源软件,可以免费使用。而购买F5BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。5、支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。6、内置的健康检查功能:如果NginxProxy后端的某台Web服务器宕机了,不会影响前端访问。7、节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。8、稳定性高:用于反向代理,宕机的概率微乎其微。9、支持热部署:不间断服务进行更新。Nginx负载均衡

Nginx负载均衡基础知识

nginx的upstream目前支持4种方式的分配

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2)、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。3)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx负载均衡示例upstreambackend{#定义负载均衡设备的Ip及设备状态

server:9090down;

server2:8080weight=2;server3:6060max_fails=3fail_timeout=30s;

server14:7070backup;

}server{ …………location/{proxy_passhttp://backend;}}Upstream可对后端服务器进行健康检查。a)

down表示当前的server暂时不参与负载b)

weight默认为1.weight越大,负载的权重就越大。c)

max_fails:在fail_timeout时间内对后台服务器请求失败的次数

d)

fail_timeout:max_fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论