一、簡述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.www58058.com/100368