1、負載均衡集羣(Load Balance Cluster)
負載均衡系統:集羣中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web服務器集羣、數據庫集羣和應用服務器集羣都屬於這種類型。
負載均衡集羣一般用於相應網絡請求的網頁服務器,數據庫服務器。這種集羣可以在接到請求時,檢查接受請求較少,不繁忙的服務器,並把請求轉到這些服務器上。從檢查其他服務器狀態這一點上看,負載均衡和容錯集羣很接近,不同之處是數量上更多。
2、負載均衡系統: 負載均衡又有DNS負載均衡(比較常用)、IP負載均衡、反向代理負載均衡等,也就是在集羣中有服務器A、B、C,它們都是互不影響,互不相干的,任何一臺的機器宕了,都不會影響其他機器的運行,當用戶來一個請求,有負載均衡器的算法決定由哪臺機器來處理,假如你的算法是採用round算法,有用戶a、b、c,那麼分別由服務器A、B、C來處理;
3、分佈式是指將不同的業務分佈在不同的地方。
而集羣指的是將幾臺服務器集中在一起,實現同一業務。
分佈式中的每一個節點,都可以做集羣。
而集羣並不一定就是分佈式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個羣集,前面放一個響應服務器,後面幾臺服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪臺服務器的負載不是很重,就將給哪一臺去完成。
而分佈式,從窄意上理解,也跟集羣差不多, 但是它的組織比較鬆散,不像集羣,有一個組織性,一臺服務器垮了,其它的服務器可以頂上來。
分佈式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。
==========================================================================
以上是對集羣 做一個簡單的介紹、不要單純的爲了集羣而集羣、最起碼要理解其中的意思。
集羣分爲橫向集羣和縱向集羣:
縱向意思就是在一臺服務器上安裝多個web服務(公用內存,CPU), 橫向就是多臺服務,每臺服務器都各自的web服務。大體基本就是這麼個意思。
一、安裝所需軟件
nginx-1.9.4、apache-tomcat-7.0.63、jdk7 (三者的安裝這裏不做介紹、假設都已經安裝好)
二、架構圖
| |----------| |
| | | |
| | | |
| |----------| | |---------------|
| Tomcat集羣1 | | |
|--------------| | 192.168.0.11 | | |
外網訪問 | | | | | |
-------------------------------------->| | | |----------| | |---------------|
| | | | | | 內容服務器
|--------------| | | | | 192.168.0.14
Nginx負載均衡 | |----------| |
192.168.0.10 | Tomcat集羣2 |
| 192.168.0.12 |
| | |---------------|
| |----------| | | |
| | | | | |
| | | | | |
| |----------| | |---------------|
| Tomcat集羣3 | 數據服務器
| 192.168.0.13 | 192.168.0.15
說明:
1、這裏選擇三臺服務器、每臺服務器安裝一個tomcat。
2、所有的代碼都存放在內容服務器上,內容服務器提供文件共享,集羣機通過cifs方式映射爲web目錄,這樣便於統一管理和即時同步。
三、整合Nginx和Tomcat由於本身就是一臺服務器、所以這裏選擇縱向集羣、使用一臺服務器安裝Nginx和2臺Tomcat。
(下面的配置如果沒有安裝過Nginx和Tomcat、請自行補腦)
1、cd /usr/local/nginx/conf 切換到conf目錄下。
2、mkdir balance #新建負載均衡目錄、目的是爲了區分
3、vi upstream.conf 加入一下代碼:
- upstream love {
- server localhost:8082 weight=1 max_fails=2 fail_timeout=30s;
- server localhost:8083 weight=1 max_fails=2 fail_timeout=30s;
- }
- server {
- listen 80;
- server_name love.52itstyle.com;
- charset utf8;
- location / {
- proxy_next_upstream http_502 http_504 error timeout invalid_header;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr; #獲取真實IP
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #獲取代理者的真實ip
- proxy_pass http://love;
- }
- location ~ .*\.(jsp|action|do)?$ {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr; #獲取真實IP
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #獲取代理者的真實ip
- proxy_pass http://love;
- }
- location ~ /purge(/.*) {
- #設置只允許指定的IP或IP段纔可以清除URL緩存。
- #allow 192.168.1.66;
- #deny all;
- proxy_cache_purge cache $host$1$is_args$args;
- error_page 405 =200 /purge$1;
- }
- location ~ .*.(css|png|gif|jpg|js)$
- {
- proxy_pass http://love;
- proxy_cache cache;
- add_header Nginx-Cache $upstream_cache_status;
- proxy_set_header Accept-Encoding 'gzip';
- expires 30d;
- }
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- include proxy.conf; #一定要指向代理文件
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"'
- '"$upstream_cache_status"';
- sendfile on;
- keepalive_timeout 65;
- include balance/upstream.conf;
- include balance/vhost.conf;
- }