日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

虛擬主機

如果不用Nginx,僅僅只是Tomcat,要想在同一個80端口下去開多個http服務是不行的,只能開一個,但是使用nginx后,可以開多個,并且可以針對不同的域名去進行訪問和配置,這就是虛擬主機的功能。而配置中的server就是一個虛擬主機。

基于云落地SLB+Tengine實現高可用集群負載均衡 - 中

 

如上圖,用戶如果需要配置3個域名的網站,那么就得購買3臺服務器。而如果使用了nginx的虛擬主機功能,那么就只需要購買一臺服務器,隨后通過nginx的虛擬主機功能開啟3個server即可,這么一來可以節約成本,不會造成資源浪費,可以參考下圖。

基于云落地SLB+Tengine實現高可用集群負載均衡 - 中

 

以下是虛擬主機的配置,包含了反向代理:

  • 修改幾個html,如下: /usr/local/tengine/html中的index.html復制多份進行修改,用以區別各個頁面
  • 云服務器預先配置好二級域名,如下:
  • 配置虛擬主機server server { listen 80;
    server_name imooc.imoocdsp.com;
    location / {
    root html;
    index imooc.html;
    }
    }
    server {
    listen 80;
    server_name course.imoocdsp.com;
    location / {
    root html;
    index course.html;
    }
    }
    server {
    listen 80;
    server_name teacher.imoocdsp.com;
    location / {
    root html;
    index teacher.html;
    }
    }
  • 瀏覽器訪問如下三個域名得到的結果不同: http://imooc.imoocdsp.com/ http://course.imoocdsp.com/ http://teacher.imoocdsp.com/

反向代理

虛擬主機、集群負載均衡基于反向代理,所以得理解反向代理。反向代理就是用戶的請求會被代理服務器(nginx/tengine)進行轉發,由代理服務器來決定用戶的請求訪問會到達哪個內網計算機節點,那么這種代理稱之為反向代理。

基于云落地SLB+Tengine實現高可用集群負載均衡 - 中

 

如上圖,用戶請求會先到達nginx,然后再由nginx決定這個請求最終轉發到某些內網的計算機節點,轉發過程透明,用戶不知道,并且內網的節點是無法直接被外部訪問的,必須經過nginx。我們可以舉一個生活中的例子,比如開學去學校報到,學生分班不是由自己決定的,會由教務處來決定該學生去哪個班級報到,如下圖,學生就是用戶,報到上學這個過程就是發起的請求,反向代理服務器就是教務處,具體的某個班級就是內網計算機節點,教務處怎么分班的這個過程學生不知道,是透明的,學生分班必須經過教務處,無法直接去上課:

基于云落地SLB+Tengine實現高可用集群負載均衡 - 中

 

常見的反向代理場景:負載均衡,虛擬主機等

題外話,什么是正向代理,用戶請求經過公網到達目標服務器的過程,會經過正向代理,在家里我們用路由器,路由器之上就是寬帶運營商,他們都給你做了一層限制,比如限制網速,限制端口等,他們的作用就是正向代理。可以參考如下圖:

基于云落地SLB+Tengine實現高可用集群負載均衡 - 中

 

圖中左側,我通過路由器為自己和媳婦分別設置了上網速度,因為媳婦經常購物,給他做一些限制,這就是正向代理的基本作用了,我們請求經過自己路由器到達公網再到達右側的目標服務器,這里的目標服務器就是反向代理服務器了。舉個生活中的例子,中考高考的時候我們填志愿,學生就是上網用戶,填志愿最終經過教務處,教務處會給我們一定的參考意見,隨后志愿分發到全國。道理是一樣的。再舉一個例子,比如有些公司,會禁止對外網的訪問,如果你要訪問外網,那么必須啟動vpn或者代理服務器,你的所有請求會經過這個代理,你發了什么數據他也知道,可能會限制你訪問網盤這類網站,這個就是正向代理。

配置集群(用阿里云1個nginx+2個tomcat)

下面的都用到了線上的阿里云,已經購買5臺。其中3臺搭建了tomcat,另外2臺搭建tengine。我們使用其中一臺作為演示負載均衡的效果,最終結合阿里云的SLB負載均衡器來演示高可用。

集群就是人多力量大,目的可以分擔流量壓力,提升整體系統的并發能力。一人搬磚總沒有多個人幫你一起搬磚來的舒服嘛。

集群需要配置上游模塊upstream,www.abc.com為上游模塊的名稱。

阿里云的tengine-master配置:
upstream www.abc.com {
        server 172.19.36.76:8099 weight=1;
        server 172.19.36.77:8099 weight=1;
        keepalive 32;
    }

    server {
        listen       80;
        server_name  101.133.214.131;

        location / {
            proxy_pass  http://www.abc.com;
#            root   html;
#            index  index.html index.htm;
        }

    }

server可以配置1個或者多個,代表用戶請求進來被反向代理到這個某個tomcat節點,

upstream www.abc.com {
    server 192.168.1.171:8080;
    server 192.168.1.172:8080;
    server 192.168.1.173:8080;
}

用戶請求通過訪問www.123.com,反向代理到upstream所對應的3個tomcat節點,這個就是3臺tomcat組成的集群,如果說1個tomcat能夠支持的并發為150,那么3臺就差不多是450上下。

server {
    listen       80;
    server_name  www.123.com;

    location / {
        # 把請求代理到upstream對應的tomcat集群中
        proxy_pass  http://www.abc.com;
    }
}

負載均衡 - 輪詢

配置集群的時候其實默認就有負載均衡,默認的是輪詢。負載均衡算法有如下幾種:

  • 輪訓,如下所示,這是默認的三節點集群使用了默認的輪詢負載均衡算法。輪詢就是用戶請求進來會一個一個的分別分配到這三個節點去處理。

舉兩個例子:

  1. 就好比胖頭陀和瘦頭陀去食堂打飯,有30個饅頭,不論你胖瘦高矮,食堂阿姨一人分15個饅頭。
  2. 再舉個栗子,就好比皇宮佳麗三千,你應該要干嘛?雨露均沾吧,7個不同的妃子,每天一個輪訓著平均分配資源,對吧。
upstream www.abc.com {
    server 192.168.1.171:8080;
    server 192.168.1.172:8080;
    server 192.168.1.173:8080;
}

負載均衡 - 權重weight

按照一定的比率去分配流量的訪問,權重越大,被訪問到的幾率也就越大。一般來說服務器的硬件配置整體性能層次不齊,有的好有的不好,所以,相對來說性能不好的權重分配少一些,性能好的服務器權重分配高一些,這樣不同節點承載的壓力也就不同了。

舉兩個例子:

  1. 就好比胖頭陀和瘦頭陀去食堂打飯,有30個饅頭,阿姨看胖頭陀很胖,分配20個饅頭,瘦頭陀很瘦,吃的少,分配10個饅頭。
  2. 再舉個栗子,就好比皇宮佳麗三千,你應該要干嘛?每個人有不同的喜好,甄嬛長得漂亮一些,自然權重也會高一些,咖妃長得太黑了,自然權重少一些。

具體配置如下:

upstream www.abc.com {
    server 192.168.1.171:8080 weight=1;
    server 192.168.1.172:8080 weight=3;
    server 192.168.1.173:8080 weight=2;
}

負載均衡 - ip_hash(不演示了)

根據用戶請求過來的ip做哈希,ip一定是固定的,所以哈希的值也是固定的,這樣用戶請求到的tomcat節點也是固定的,這種方式可以保證用戶會話不會丟失,永遠存在,但是如果用戶切換網絡,比如從wifi到4g,則會導致會話丟失。

舉個例子,我人在上海,撥打110,由于我所在的地域是上海,那么對方接通的肯定是上海公安局,如果我現在去了南京,這個時候撥打110,那么運營商根據我所在地分配的接聽電話就是江蘇公安局了。對吧,這是一個道理,就是根據你的地址來源進行服務節點的分配處理。

配置代碼示例:

upstream www.abc.com {
    ip_hash;
    server 192.168.1.171:8080 weight=1 max_conns=180;
    server 192.168.1.172:8080 weight=3;
    server 192.168.1.173:8080 weight=2;
}

負載均衡 - url_hash(不演示了)

和iphash同理,用戶請求,在瀏覽器中訪問的url,根據這個做hash,分配到不同的節點。

小節

常用的負載均衡算法為 加權輪詢,iphash是用的最少甚至不用,因為會造成請求并發量傾斜,容易導致固定的某個節點宕機。

提一下動靜分離,架構師課程中,把靜態代碼發布到nginx,實現動靜分離。當然也可以靜態代碼(JS/css/HTML)放到CDN會更好。

加餐:什么是動靜分離

提到動靜分離就會想到前后端分離,各種分,分分合合的。

  • 前后端分離就是前后端開發人員所做的本質工作拆開,以前寫jsp的時候,前端后端都是由同一個程序員去做的,隨著互聯網的發展,工作職能開始拆分,那么前端工作量比如js/css/html這些都會由前端去做,稱之為frontEnd,后端人員負責JAVA代碼開發,接口提供,稱之為backEnd。這就是前后端分離。
  • 既然前后端分離了,那么代碼肯定是解耦的,是兩塊不一樣的代碼,前端歸前端,后端歸后端。那么這個時候我們就可以借助nginx去實現動靜分離部署,其實也就是前端通過nginx靜態資源映射,后端通過nginx實現tomcat集群部署,如此一來,用戶請求進來到達nginx,那么前端請求訪問靜態頁面,后端接口調用會通過nginx來代理到各自的tomcat節點。那么在架構師體系功課程中,我們就是采用的前后端分離開發外加動靜分離進行部署的。具體的結構圖如下: 附:如果nginx有2臺,那么一臺負責虛擬靜態資源,另外一臺負責反向代理也可以。本質上就是使用了2個location來做了2個虛擬主機,一個做靜態資源,一個做tomcat反向代理,動靜分離可以把動靜請求分離,減少tomcat請求壓力。ok吧。

分享到:
標簽:落地 SLB Tengine
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定