1. 利用示例ReadNUID和HelloWorld,在讀卡基礎上,編程實現刷卡後將卡號信息顯示
摘要 linux可載入內核模塊是 Linux 內核的最重要創新之一。它們提供了可伸縮的、動態的內核。其它開發者可以不用重新編譯整個內核便可以開發內核層的程序,極大方便了驅動程序等的開發速度。
2. 網站使用VPS 實現負載均衡
sersync,你研究下吧
或者現在有人喜歡用nginx反向代理、dns輪析
再或者就用cdn嘛
3. 求基於ICE中間件實現負載均衡的C/S程序代碼!
4. 集群和負載均衡的區別 nginx
Nginx是一個免費的,開源的,高性能的伺服器和反向代理伺服器軟體,同時它也可以為IMAP和POP3伺服器代理,以其高性能,穩定性,豐富的功能,結構簡單,低資源消耗的特性換來廣大運維者所喜愛。
Nginx與傳統的伺服器不同,不依賴線程來處理請求。相反,它使用一個更可擴展事件驅動架構(非同步)。這種結構資源消耗較小,但更重要的是,可以承受較大的請求負荷。即使你不希望處理成千上萬的請求,你仍然可以受益於Nginx的高性能和小的內存佔用,以及其豐富的功能。
Nginx的反向代理:
反向代理指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給Internet上請求連接到客戶端,此時代理伺服器對外就表現為一個伺服器,而此種工作模式類似於LVS-NET模型。
反向代理也可以理解為web伺服器加速,它是一種通過在繁忙的web伺服器和外部網路之間增加的 一個高速web緩沖伺服器,用來降低實際的web伺服器的負載的一種技術。反向代理是針對web伺服器提高加速功能,所有外部網路要訪問伺服器時的所有請求都要通過它,這樣反向代理伺服器負責接收客戶端的請求,然後到源伺服器上獲取內容,把內容返回給用戶,並把內容保存在本地,以便日後再收到同樣的信息請求時,它會將本地緩存里的內容直接發給用戶,已減少後端web伺服器的壓力,提高響應速度。因此Nginx還具有緩存功能。
反向代理的工作流程:
1)用戶通過域名發出訪問請求,該域名被解析為反向代理伺服器的IP地址;
2)反向代理伺服器接收用戶的請求;
3)反向代理伺服器在本地緩存查找是否存在當前用戶所請求的內容,找到則直接把內容返回給用戶;
4)如果本地沒有用戶請求的內容,反向代理伺服器會以自己的身份去後端伺服器請求同樣的信息內容,並把信息內容發給用戶,如果信息內容是可以被緩存的,則會將該內容緩存在代理伺服器的本地緩存中。
反向代理的好處:
1)解決了網站伺服器對外可見的問題,提高了網站伺服器的安全性;
2)節約了有限的IP地址資源,後端伺服器均可使用私有IP地址與代理伺服器進行通信;
3)加速了網站的訪問速度,減輕了真是web伺服器的負荷。
(一)、調度演算法
Nginx的upstream指令用於指定proxy_pass和fastcgi_pass所使用的後端伺服器,即nginx的反向代理功能,因此可以將兩者結合起來使用以達到負載均衡的目的,而Nginx也支持多種調度演算法:
1、輪詢(默認)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,則會跳過該伺服器分配至下一個監控的伺服器。並且它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。
2、weight
指定在輪詢的基礎上加上權重,weight和訪問比率成正比,即用於表明後端伺服器的性能好壞,若後端伺服器性能較好則可將大部分請求分配給它,已實現其力所能及。
例如:
我後端伺服器172.23.136.148配置:E5520*2 CPU,8G內存
後端伺服器172.23.136.148配置:Xeon(TM)2.80GHz * 2,4G內存
我希望在有30個請求到達前端時,其中20個請求交給172.23.136.148處理,剩餘10個請求交給172.23.136.149處理,就可做如下配置
upstream web_poll {
server 172.23.136.148 weight=10;
server 172.23.136.149 weight=5;
}
3、ip_hash
每個請求按訪問ip的hash結果分配,當新的請求到達時,先將其客戶端IP通過哈希演算法進行哈希出一個值,在隨後的請求客戶端IP的哈希值只要相同,就會被分配至同一個後端伺服器,該調度演算法可以解決session的問題,但有時會導致分配不均即無法保證負載均衡。
例如:
upstream web_pool {
ip_hash;
server 172.23.136.148:80;
server 172.23.136.149:80;
}
4、fair(第三方)
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream web_pool {
server 172.23.136.148;
server 172.23.136.149;
fair;
}
5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為緩存時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash演算法
upstream web_pool {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
每個設備的狀態設置為:
1.down 表示當前的server不參與負載,用於ip_hash中
2.weight 默認為1.weight越大,負載的權重就越大。
3.max_fails 允許請求失敗的次數默認為1.設為0則表示關閉該項功能,當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout 在max_fails定義的失敗次數後,暫停的時間。
5.backup 可以將其理解為備機,其它所有的非backup機器down或者忙的時候,才會將請求分配給backup機器。所以這台機器壓力會最輕。
nginx支持同時設置多組的負載均衡,用來給不用的server來使用。
(二)、指令的使用
1、upstream
聲明一組可以被proxy_pass和fastcgi_pass引用的伺服器;這些伺服器可以使用不同的埠,並且也可以使用Unix Socket;也可以為伺服器指定不同的權重。如:
upstream web_pool {
server coolinuz.9966.org weight=5;
server 172.23.136.148:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
2、server
語法:server name [parameters]
其中的name可以是FQDN,主機地址,埠或unix套接字;如果FQDN解析的結果為多個地址,則每個地址都會被用到。
3、proxy_pass
語法:proxy_pass URL;
該指令用於指定代理伺服器的地址和URL將被映射為的URL或地址和埠。即用來指定後端伺服器的地址或URL[埠]。
4、proxy_set_header
語法:proxy_set_header header value;
該指令允許重新定義和添加一些將被轉移到被代理伺服器的請求頭部信息。
例如:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
注意:$proxy_add_x_forwarded_for包含客戶端請求頭中的"X-Forwarded-For",與$remote_addr用逗號分開,如果沒有"X-Forwarded-For" 請求頭,則$proxy_add_x_forwarded_for等於$remote_addr
順便補上Nginx的內置變數:
$args, 請求中的參數;
$is_args, 如果已經設置$args,則該變數的值為「?」,否則為「」。
$content_length, HTTP請求信息頭里的"Content-Length";
$content_type, 請求信息頭里的"Content-Type";
$document_root, 針對當前請求所屬的root指令設置的根目錄路徑;
$document_uri, 與$uri相同;
$host, 請求信息中的"Host",如果請求中沒有Host行,則等於設置的伺服器名;
$limit_rate, 對連接速率的限制;
$request_method, 請求的方法,比如"GET"、"POST"等;
$remote_addr, 客戶端地址;
$remote_port, 客戶端埠號;
$remote_user, 客戶端用戶名,認證用;
$request_filename, 當前請求的文件路徑名
$request_body_file, 客戶端請求主體的臨時文件名。
$request_uri, 請求的URI,帶參數;
$query_string, 與$args相同;
$scheme, 所用的協議,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_protocol, 請求的協議版本,"HTTP/1.0"或"HTTP/1.1";
$server_addr, 伺服器地址,如果沒有用listen指明伺服器地址,使用這個變數將發起一次系統調用以取得地址(造成資源浪費);
$server_name, 請求到達的伺服器名;
$server_port, 請求到達的伺服器埠號;
$uri, 請求的URI,可能和最初的值有不同,比如經過重定向之類的。
5、proxy_read_timeout
語法:proxy_read_timeout time;
這個指令設置Nginx與後端伺服器建立連接後。等待後端伺服器的響應時間
6、proxy_send_timeout
語法:roxy_send_timeout time;
該指令指定請求轉移到後端伺服器的超時時間。整個傳輸的要求時間不超過超時時間,但只有兩次寫操作之間。如果在此時間之後的後端伺服器將不採取新的數據,然後nginx將關閉連接。
7、proxy_connect_timeout
語法:proxy_connect_timeout time;
該指令用來設置分配到後端伺服器的連接超時時間。
8、proxy_buffers
語法: proxy_buffers the_number is_size;
該指令設置緩沖區的數目和大小,預設情況下,一個緩沖區的大小和頁面大小相同。
9、proxy_buffer_size
語法:proxy_buffer_size buffer_size;
代理緩沖區,該指令用於保存用用戶的頭部信息。
10、proxy_busy_buffers_size
語法:proxy_busy_buffers_size size;
用於當系統負載較大,緩沖區不夠用時,可以申請更大的proxy_buffers
11、proxy_temp_file_write_size
語法:proxy_temp_file_write_size size;
用於指定緩存臨時文件的大小
(三)、功能完善
安裝配置第三方模塊,實現upstream中對後端web server的健康狀態檢測:
模塊下載地址:https://github.com/cep21/healthcheck_nginx_upstreams;模塊名稱:ngx_http_healthcheck_mole
安裝配置方法:
1、首先解壓healcheck模塊到某路徑下,這里假設為/tmp/healthcheck_nginx_upstreams
#tar -xvf cep21-healthcheck_nginx_upstreams-16d6ae7.tar.gz -C /tmp/healthcheck_nginx_upstreams
2、對nginx打補丁
首先解壓nginx,並進入nginx源碼目錄:
# tar xf nginx-1.3.4.tar.gz
# cd nginx-1.0.11
# patch -p1 < /tmp/healthcheck_nginx_upstreams/nginx.patch
而後編譯nginx,在執行configure時添加類似下面的選項:
--add-mole=/tmp/healthcheck_nginx_upstreams
所以,這里就使用如下命令:
# ./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_mole \
--with-http_flv_mole \
--with-http_stub_status_mole \
--with-http_gzip_static_mole \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--with-pcre \
--add-mole=/tmp/healthcheck_nginx_upstreams
# make && make install
ngx_http_healthcheck_mole模塊的使用方法:
1、此模塊支持的指令有:
healthcheck_enabled
##啟用此模塊
healthcheck_delay
##對同一台後端伺服器兩次檢測之間的時間間隔,單位毫秒,默認為1000;
healthcheck_timeout
##進行一次健康檢測的超時時間,單位為毫秒,默認值2000;
healthcheck_failcount
##對一台後端伺服器檢測成功或失敗多少次之後方才確定其為成功或失敗,並實現啟用或禁用此伺服器;
healthcheck_send
##為了檢測後端伺服器的健康狀態所發送的檢測請求;如:healthcheck_send "GET /health HTTP/1.0" 'Host: coolinuz.9966.org';
healthcheck_expected
##期望從後端伺服器收到的響應內容;如果未設置,則表示從後端伺服器收到200狀態碼即為正確;
healthcheck_buffer
##健康狀態檢查所使用的buffer空間大小;
healthcheck_status
通過類似stub_status的方式輸出檢測信息,使用方法如下:
location /stat {
healthcheck_status;
}
(四)、配置與實現
配置代碼如下:
http {
upstream web_pool {
server 172.23.136.148:80 weight=10;
server 172.23.136.149:80 weight=5;
healthcheck_enabled;
healthcheck_delay 1000;
healthcheck_timeout 1000;
healthcheck_failcount 2;
healthcheck_send "GET /.health HTTP/1.0";
}
server {
listen 80;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web_pool;
proxy_connect_timeout 3;
}
location /stat {
healthcheck_status;
}
}
}
在這里設置「proxy_set_header」參數,是因為Nginx在做反向代理的時候,要代替客戶端去訪問伺服器,所以,當請求包經過反向代理後,在代理伺服器這里這個IP數據包的IP包頭做了修改,最終後端web伺服器得到的數據包的頭部的源IP地址是代理伺服器的IP地址,這樣一來,後端伺服器的程序給予IP的統計功能就沒有任何意義,或者後端web伺服器上有多個基於域名的虛擬主機時,就要通過添加Header頭信息Host,用於指定請求的域名,這樣後端web伺服器才能識別該反向代理訪問請求由哪個虛擬主機來處理。
(五)、小結
通過以上我們可以看出Nginx的配置其實是比較其他的web伺服器軟體是比較簡單的,但是其實現的功能確實相當強大豐富的。通過Nginx的反向代理已經支持靈活的正則表達式匹配,可以實現網站的動、靜分離,讓動態的php等程序網頁去訪問php web伺服器,讓緩存頁、圖片、javascript、css、flash去訪問Squid等緩存伺服器或文件伺服器。加之Nginx對靜態內容的高性能,高並發量,Nginx作為前端代理負載均衡成為越來越多架構師的首先方案。
5. slb負載均衡 是 nginx 嗎
不是。
SLB,伺服器負載均衡(Server Load Balancing),可以看作HSRP(熱備份路由器協議)的擴展,實現多個伺服器之間的負載均衡。
Nginx(engine x) 為一個高性能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布於2004年10月4日。
(5)負載均衡源碼是什麼擴展閱讀
負載均衡演算法有兩種:
Weighted round robin(WRR)和Weighted least connections(WLC),WRR使用加權輪詢演算法分配連接,WLC通過一定的權值,將下一個連接分配給活動連接數少的伺服器。
配置分為兩部分,第一部分使用slb serverfarm serverfarm_name命令定義SLB選項,包括指定真實伺服器地址;第二部分使用ip slb vserver virtual_server-name來指定虛擬伺服器地址。
Nginx可以在大多數UnixLinux OS上編譯運行,並有Windows移植版。Nginx的1.4.0穩定版於2013年4月24日發布,一般情況下,對於新建站點,使用最新穩定版作為生產版本,已有站點的升級急迫性不高。
Nginx的源代碼使用 2-clause BSD-like license。Nginx為一個很強大的高性能Web和反向代理服務,它具有很多非常優越的特性:
在連接高並發的情況下,Nginx為Apache的替代品:Nginx在美國為做虛擬主機生意的老闆們經常選擇的軟體平台之一。能夠支持高達50000個並發連接數的響應。
6. nginx配置負載均衡,訪問頁面不載入JS、CSS等靜態文件,F12查看源代碼發現,jsp獲取basePath錯誤
在NGINX.CONF文件中配置地址和IP:
proxy_set_header Host $host; #從header頭中獲取的主機名
proxy_set_header X-Real-IP $remote_addr;
#獲取header頭中獲取的主機的真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#獲取header頭中獲取代理者的真實ip
7. AODV協議能量的源碼在哪兒正在做節點的能量剩餘和負載均衡!
負載平衡也稱負載共享,是指對系統中的負載情況進行動態調整,以盡量消除或減少系統中各節點負載不均衡的現象。具體實現方法是將過載節點上的任務轉移到其他輕載節點上,盡可能實現系統各節點的負載平衡,從而提高系統的吞吐量。負載共享有利於統籌管理分布式系統中的各種資源,便於利用共享信息及其服務機制擴大系統的處理能力。
8. linux雙網卡綁定負載均衡不起作用怎麼辦
搜:linux鏈路聚合,或者看內核源碼中bonding模塊,裡面有個bonding.txt,詳細描述了各種聚合模式,你要的負載均衡冗餘,可以在裡面找到部署信息,還得看你物理環境的拓撲圖需要怎麼設置,可以單交換機,多交換機的。
9. 個人網站怎麼應對大流量怎麼做負載均衡
早在國外,WordPress和Magento,分別對應頂級的門戶和電商軟體品牌。使用WordPress可以搭建信息發布平台,或應用於個性化博客;Magento是專業開源的電子商務系統。 在國內的一些類似軟體,無論從審美上(前端頁面設計)和技術上,都比這兩款要差很多,唯一可與之媲美的,只有友好速搭。 同為建站軟體,友好速搭和WordPress和Magento相似而不相同,是國內第一款自主研發的 SaaS 建站軟體。 以下是友好速搭和WordPress、Magento的一些參數對比。 對比項目 友好速搭 WordPress Magento 誕生年份 2014 2005 2008 開發語言 Ruby PHP PHP 核心資料庫 PostgreSQL MySQL MySQL 使用方式 SaaS自動部署 手動部署 手動部署 業務定製 對接API 改源碼 改源碼 文章管理 支持 支持 - 商品管理 支持 - 支持 支付網關 12種 - 2種 SEO靈活度 極高 高 一般 熱數據緩存 支持 - - 全文檢索 支持 - - 靜態資源CDN 支持 - - 在線源碼編輯 支持 - - HTTPS配置 自動配置 手動 手動 公開漏洞 0個 296個 8個 從以上參數可了解到,相比 WordPress和Magento,友好速搭在軟體層面並不示弱,在同等硬體環境下,並發性能也更優秀(響應越高越好)。