一、简述LVS的调度方案
一、LVS的调度方案
LVS根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法。
1.静态方法:仅根据算法本省进行调度
RR:roundrobin,轮询算法
WRR:Weighted roundrobin,加权轮询算法
SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一个挑中的RS,从而实现会话绑定;
DH:Destination Hashing,目标地址哈希,将发往同一个目标地址的请求始终转发至第一个挑中的RS.
2.动态算法:主要根据每RS当前的负载状态及调度算法进行调度;根据Overhead的值来动态调度
LC:最少连接数,Overhead=activeconns*256+inactiveconns
WLC:Weighted LC,Overhead=(activeconns*256+inactiveconns)/weight
SED:Shortest Expection Delay,Overhead=(activeconns+1)*256/weight
NQ:Never Queue
LBLC:Locality-Based LC,动态的DH算法;
LBLCR:LBLC with Replication,带复制功能的LBLC;
二、详细描述nginx模块并举例说明
1.nginx基本模块功能:
1.user user [group]; #设定nginx运行的用户
2.pid /PATH/TO/PID_FILE; #指定存储nginx主进程进程号码的文件路径;
3.include file | mask; #指明包含进来的其他配置文件片段;
4.load_module file; #指明要加载的动态模块
2.与性能优化相关的模块功能:
1.worker_processes number | auto; #worker进程的数量;
2.worker_cpu_affinity cpumask ......; 是否线程绑定CPU;
3.worker_priority number; #指定worker进程的nice值,设定worker进程优先级
4.worker_rlimit_nofile number; #worker进程所能够打开的文件数量上限;
3.套接字相关的配置:
1.server {......}; #配置一个虚拟主机
2.listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE; #设定监听的端口
3.server_name name ......; #指明虚拟主机的主机名称;后可跟多个由空白字符分隔的字符串;
4.tcp_nodelay on|off; #在keepalived模式下的连接是否启用TCP_NODELAY选项
5.sendfile on | off; #是否启用sendfile功能;
6.root path; #设置web资源路径映射,用于指明用户请求的url所对应的bending文件系统上的文档所在目录路径,
7.location [ =|~|~*|^~] uri { ... } #设定URI
8.alias path #定义路径别名,文档映射的另一种机制,仅能用于location上下文;
9.index file ...; #默认资源
10.error_page code ... [=[response]] uri; #定义错误跳转页;
11.keepalive_timeout timeout [header_timeout]; #设定保持连接的超时时长
12.keepalive——requests number; #在一次长连接上所允许请求的资源的最大数量
13.keepalive_disable none | browser ......; #对哪种浏览器禁用长连接
14.send_timeout time; #向客户端发送响应报文的超时时长
15.client_body_buffer_size size; #用于接收客户端请求报文的body部分的缓冲区大小
16.client_body_temp_path path [level1 [level2 [level3]]]; #设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;
17.limit_rate rate; #限制响应给客户端的传输速率
18.limit_except method ... { ... }; #限制对指定的请求方法之外的其他方法使用客户端
4.ngxhttpaccess_module模块:实现基于IP的访问控制功能
1.allow address | CIDR |unix: |all;
2.deny address |CIDR | unix: | all;
5.ngxhttpauthbasicmodule模块:
1.auth_basic string | of;
2.auth_basic_user_file file;
6.ngxhttpstubstatusmodule模块:用于输出nginx的基本状态信息
Active connections: 活动状态的连接数;
accepts:已经接受的客户端请求的总数;
handled:已经处理完成的客户端请求的总数;
requests:客户端发来的总的请求数;
Reading:处于读取客户端请求报文首部的连接的连接数;
Writing:处于向客户端发送响应报文过程中的连接数;
Waiting:处于等待客户端发出请求的空闲连接数;
7.ngxhttplog_module模块:
1.log_format name string ...; #string可以使用nginx核心模块及其他模块内嵌的变量;
2.access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
3.open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
8.ngxhttpgzip_module模块:与压缩相关的模块配置
1.gzip on | of; #是否允许使用压缩功能
2.gzip_comp_level level; #设定压缩的等级比,可接受范围为1到9;
3.gzip_disable regex ...;
4.gzip_min length length; #启用压缩功能的响应报文大小阀值;
5.gzip_buffers number size; #支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;
6.gzip_proxied off | expired | no-cache | no-store | private | on_last_modified | no etag | auth | any ......; #nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的
7.gzip types mine-type ...; #压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
9.ngxhttpssl_module模块
1.ssl on | off; #是否允许https协议
2.ssl_certificate file; #当前虚拟主机上与其证书匹配的证书文件
3.ssl_certificate_key_file; #当前虚拟主机上与其证书匹配的私钥文件
4.ssl_protocals [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]; #支持ssl协议版本,默认为后三个;
5.ssl_session_cache off |none | [builtin[:size]] [shared:name:size]; #使用Openssl内建的缓存,此缓存为每worker进程私有;
6.ssl_session_timeout time; #客户端一侧的连接可以服用ssl session cache中缓存的ssl的参数的有效时长;
10.ngxhttprewrite_module模块:将用户请求的URI基于regex所描述的模式进行检查,而后完成替换
1.rewrite regex replacement [flag]; #将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI
2.return
3.rewrite_log on | off;是否开启重写日志;
4.if (condition) {...}; #引入一个新的配置上下文,条件满足时,执行配置块中的配置指令;
5.set $variable value; 用户自定义变量;
11.ngxhttpreferer_module模块:
1.valid_referers none | blocked | server_names |string ...; #定义referer首部的合法可用值;
12.ngxhttpproxymodule模块:The ngxhttpproxymodule module allows passing requests to another server
1.proxy_pass URL; #proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机
2.proxy_set_header field value; #设定发往后端主机的请求报文的请求首部的值
3.proxy_cache_path #定义可用于proxy功能的缓存
4.proxy_cache zone | off #指明要调用的缓存,或关闭缓存机制
5.proxy_cache_key string #缓存中用于“键”的内容
6.proxy_cache_valid [code ...] time; #定义对特定响应码的响应内容的缓存时长
13.ngxhttpheaders_module模块:向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;
1.add_header name value [always] #添加自定义首部
2.expires [modified] time; #用于定义Expire或cache-control首部的值;
14.ngxhttpfastcgi_module模块
1.fastcgi_pass address; #address为fastcgi server的地址;
2.fastcgi_index name; #fastcgi默认的主页资源
3.fastcgi_param parameter value [if_not_empty];
4.fastcgi_cache zone | off; #调用指定的缓存空间来缓存数据
5.fastcgi_cache_key string; #定义用作缓存项的key的字符串;
6.fastcgi_cache_methods GET | HEAD | POST ...; #为那些请求方法是用缓存
7.fastcgi_cache_min_users number; #缓存空间中的缓存项在inactive定义的非活动时间至少要被访问到此处指定的次数方可被认作活动项
15.ngxhttpupstreammodule模块:The ngxhttpupstreammodule module is used to define groups of servers that can be referenced by the proxypass, fastcgipass, uwsgi_pass, scgipass, and memcachedpass directives
1.upstream name { ... }; #定义后端服务器足,会引入一个新的上下文;context:http
2.server address [parameters]; #在upstream上下文中server成员,以及相关的参数
3.least_conn; #最少连接调度算法,当server拥有不同的权重时其为wlc;
4.ip_hash; #源地址hash调度方法;
5.hash key [consistent];基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本,变量或二者的组合;
6.keepalive connections; #为每个worker进程保留的空间的长连接数量;
16.ngxstreamcore_module模块:模拟反代基于tcp/udp的服务连接,即工作于传输层的反代或调度器
1.stream {...}; #定义stream相关的服务;context:main
2.listen; #监听的端口
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100368