nginx upstream 一致性雜湊模組

2021-08-21 12:37:14 字數 2853 閱讀 6094

ngx_http_upstream_consistent_hash 模組是乙個負載均衡器,使用乙個內部一致性hash演算法來選擇合適的後端節點。與php的memcache模組memcache.hash_strategy相容,這意味著可以使用php-memcache模組將內容儲存到memcached集群中,而後通過nginx在集群中找到值。

該模組通過使用客戶端資訊(如:$ip, $uri, $args等變數)作為引數,使用一致性hash演算法將客戶端對映到後端節點。

該模組可以根據配置引數採取不同的方式將請求均勻對映到後端機器,比如:

語法:consistent_hash    variable_name

預設值:none

上下文:upstream

配置upstream採用一致性hash作為負載均衡演算法,並使用配置的變數名作為hash輸入。

# cd /tmp

# wget

# unzip master.zip

##下面的步驟實在編譯nginx的時候寫的

nginx第三方模組安裝方法:

./configure --prefix=

cd /tmp/nginx-1.14.0

./configure --prefix=/你的安裝目錄  --add-module=/第三方模組目錄

在未安裝nginx的情況下安裝nginx第三方模組

--add-module=../ngx_pagespeed-master --add-module=/第三方模組目錄

# make

# make install

# /usr/local/nginx-1.4.1/sbin/nginx

在已安裝nginx情況下安裝nginx模組

相比之下僅僅多了一步覆蓋nginx檔案.

總結,安裝nginx安裝第三方模組實際上是使用--add-module重新安裝一次nginx,不要make install而是直接把編譯目錄下objs/nginx檔案直接覆蓋老的nginx檔案.如果你需要安裝多個nginx第三方模組,你只需要多指定幾個相應的--add-module即可.

[warning]備註:重新編譯的時候,記得一定要把以前編譯過的模組一同加到configure引數裡面.[/warning]

upstream somestream {

consistent_hash $request_uri;

server 10.50.1.3:11211;

server 10.50.1.4:11211;

server 10.50.1.5:11211;

server {

listen       80;

server_name  localhost;

location / {

default_type text/html;

set $memcached_key $request_uri;

memcached_pass somestream;

error_page      500 404 405 = @fallback;

location @fallback {

root /srv/www/whatever;

fastcgi_intercept_errors on;

error_page 404 = @404;

set $script $uri;

set $path_info "";

include /usr/local/nginx/conf/fastcgi_params;

fastcgi_param script_filename /srv/www/whatever/test.php;

fastcgi_param script_name $script;

fastcgi_param request_uri $uri;

fastcgi_pass   127.0.0.1:9000;

強一致性 弱一致性 最終一致性

這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...

編碼原則 一致的思維(深度的一致)

結構 1 2 返回預設的表單 items 3 4 return 5 6 getdefaultformitems function property.editorconfig editorconfig 1617 if property.editorconfigfns 21 2223 return ed...

mysql 強一致性 Mysql高一致高可用方案

一句話總結 使用官方mysql innodb cluster集群方案實現mysql冗餘備份,無單點故障的高可用性。專案背景 1 對資料可用性要求高,要求多節點冗餘備份,mysql單點故障後可以切換到其他節點 2 對資料準確性要求高,對mysql寫資料時,需要強一致性備份,不能是非同步的備份 3 併發...