nginx負(fù)載均衡案例和高可用keepalived

一、案例1:根據(jù)用戶的客戶端轉(zhuǎn)發(fā)請(qǐng)求

image

1.1 環(huán)境準(zhǔn)備

服務(wù)器名稱 內(nèi)網(wǎng)IP 外網(wǎng)IP
lb01 172.16.1.5 10.0.0.5 負(fù)載均衡
web01 172.16.1.7 10.0.0.7 存放PC端的頁(yè)面
web02 172.16.1.8 10.0.0.8 存放移動(dòng)端的頁(yè)面

1.2 創(chuàng)建環(huán)境

\\web01
echo this is PC website>/app/www/lidao.html

\\web02
echo this is Mobile website>/app/www/lidao.html

1.3 lb01命令行測(cè)試

[root@lb01 ~]# curl 10.0.0.[7-8]/lidao.html

[1/2]: 10.0.0.7/lidao.html --> <stdout>
--_curl_--10.0.0.7/lidao.html
this is PC website

[2/2]: 10.0.0.8/lidao.html --> <stdout>
--_curl_--10.0.0.8/lidao.html
this is Mobile website
[root@lb01 ~]# 

1.4 在lb01判斷客戶端類型,

[root@lb01 /etc/nginx]# cat nginx.conf
……
    upstream default_pools{
        server 10.0.0.7:80 weight=1 max_fails=1 fail_timeout=10s;
    }
    upstream mobile_pools{
        server 10.0.0.8:80 weight=1 max_fails=1 fail_timeout=10s;
    }
    server{ 
        listen 80;
        server_name www.oldboy.com;
        location / {
            if ($http_user_agent ~* "Android|IOS") { 
                proxy_pass http://mobile_pools;
            }
        proxy_pass http://default_pools;
        proxy_set_header Host $host;
        proxy_set_header X_Forwarded-For $remote_addr;
        }
    }
……
[root@lb01 /etc/nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 /etc/nginx]# systemctl reload nginx

1>在命令行進(jìn)行測(cè)試

[root@lb01 /etc/nginx]# curl 10.0.0.5/lidao.html
this is PC website
[root@lb01 /etc/nginx]# curl -A ios 10.0.0.5/lidao.html
this is Mobile website
[root@lb01 /etc/nginx]# 

2>在火狐瀏覽器進(jìn)行
首先,下載安裝firefox钞螟,安裝 user agent switch 插件

image

其次纵寝,打開(kāi)火狐瀏覽器進(jìn)行測(cè)試

image

二、案例2:動(dòng)靜態(tài)分離

根據(jù)用戶的uri進(jìn)行轉(zhuǎn)發(fā)location

image
image

2.1 環(huán)境準(zhǔn)備

服務(wù)器名稱 內(nèi)網(wǎng)IP 外網(wǎng)IP
lb01 172.16.1.5 10.0.0.5 負(fù)載均衡
web01 172.16.1.7 10.0.0.7 模擬存放上傳/upload
web02 172.16.1.8 10.0.0.8 模擬存放靜態(tài)網(wǎng)頁(yè)static
web03 172.16.1.9 10.0.0.9 模擬存放動(dòng)態(tài)網(wǎng)頁(yè)(默認(rèn))

2.2 創(chuàng)建環(huán)境

\\\\web01 
[root@web01 ~]# mkdir -p  /app/www/upload/
[root@web01 ~]# echo  this is upload  >/app/www/upload/guoav.html
[root@web01 ~]# 

\\\\web02  
[root@web02 ~]# mkdir -p  /app/www/static/
[root@web02 ~]# echo  this is static  >/app/www/static/guoav.html 
[root@web02 ~]# 

\\\\web03  
[root@web03 ~]# mkdir -p  /app/www/
[root@web03 ~]# echo  this is default  >/app/www/guoav.html 
[root@web03 ~]#

檢查模擬環(huán)境是否ok

[root@web01 ~]# curl 10.0.0.7/upload/guoav.html
this is upload
[root@web01 ~]# curl 10.0.0.8/static/guoav.html
this is static
[root@web01 ~]# curl 10.0.0.9/guoav.html
this is default
[root@web01 ~]# 

2.3 配置lb01

[root@lb01 /etc/nginx]# cat nginx.conf
…… 
    upstream upload{
        server 10.0.0.7:80 weight=1 max_fails=1 fail_timeout=10s;
    }
    upstream static{
        server 10.0.0.8:80 weight=1 max_fails=1 fail_timeout=10s;
    }
    upstream default{
        server 10.0.0.9:80 weight=1 max_fails=1 fail_timeout=10s;
    }
    server{ 
        listen 80;
        server_name www.oldboy.com;
        location /upload {
            proxy_pass http://upload;
        proxy_set_header Host $host;
        proxy_set_header X_Forwarded-For $remote_addr;
        }
        location /static {
            proxy_pass http://static;
        proxy_set_header Host $host;
        proxy_set_header X_Forwarded-For $remote_addr;
        }
        location / {
            proxy_pass http://default;
        proxy_set_header Host $host;
        proxy_set_header X_Forwarded-For $remote_addr;
        }
    }
……
[root@lb01 /etc/nginx]# 
[root@lb01 /etc/nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 /etc/nginx]# systemctl reload nginx 

2.4 瀏覽器測(cè)試

image

根據(jù)用戶請(qǐng)求文件類型進(jìn)行轉(zhuǎn)發(fā)

三花吟、負(fù)載均衡的排查思路

四、負(fù)載均衡的輪詢算法

默認(rèn)輪詢(rr)
加權(quán)輪詢(wrr):weight
最小連接數(shù)(least conn):根據(jù)后端服務(wù)器連接數(shù)分配任務(wù)
ip_hash:只要客戶端ip地址相同就會(huì)被轉(zhuǎn)發(fā)到同一臺(tái)機(jī)器上※※

image

五厨姚、會(huì)話保持

cookie和session

1>cookie和session共同點(diǎn):

存放用戶修改
key value類型衅澈,變量和變量?jī)?nèi)容

2>cookie和session區(qū)別:

cookie:
存放在瀏覽器里面
存放簡(jiǎn)單的信息或存放鑰匙
開(kāi)發(fā)設(shè)置的
相應(yīng)的時(shí)候服務(wù)器給你設(shè)置

session:
存放在服務(wù)器中--redis中
存放敏感信息
鎖頭

image

六、高可用keepalived

image
image

Keepalived服務(wù)的工作原理※※※

1> Keepalived高可用對(duì)之間是通過(guò)VRRP進(jìn)行通信的谬墙,VRRP是通過(guò)競(jìng)選機(jī)制來(lái)確定主備的今布,主的優(yōu)先高于備,因此拭抬,工作時(shí)主會(huì)優(yōu)先獲得所有的資源部默,備節(jié)點(diǎn)處于等待狀態(tài),當(dāng)主掛了的時(shí)候造虎,備節(jié)點(diǎn)就會(huì)接管主節(jié)點(diǎn)的資源傅蹂,然后頂替主節(jié)點(diǎn)對(duì)外提供服務(wù)。
2> 在Keepalived服務(wù)隊(duì)之間算凿,只有作為主的服務(wù)器會(huì)一直發(fā)送VRRP廣播包份蝴,告訴備他還活著,此時(shí)備不會(huì)搶占主氓轰,當(dāng)主不可用時(shí)婚夫,即備監(jiān)聽(tīng)不到主發(fā)送的廣播包時(shí),就回啟動(dòng)相關(guān)服務(wù)接管資源署鸡,保證業(yè)務(wù)的連續(xù)性请敦。
3> 接管速度最快可以小于1秒。

6.1 環(huán)境準(zhǔn)備

服務(wù)器名稱 內(nèi)網(wǎng)IP 外網(wǎng)IP
lb01 172.16.1.5 10.0.0.5
lb02 172.16.1.6 10.0.0.6
web01 172.16.1.7 10.0.0.7
web02 172.16.1.8 10.0.0.8

1>每臺(tái)機(jī)器安裝好nginx
2>在lb01和lb02安裝keepalived----yum install -y keepalived
3>啟動(dòng)服務(wù)储玫,并設(shè)置開(kāi)機(jī)自啟動(dòng)
??啟動(dòng)服務(wù):systemctl start keepalived
??開(kāi)機(jī)自啟動(dòng):systemctl enable keepalived
4>檢查服務(wù):rpm -qa keepalived

6.2 配置文件

分為三個(gè)部分:
    GLOBAL CONFIGURATION:全局定義部分
    VRRPD CONFIGURATION:vrrp實(shí)例(rsync模塊)
    LVS CONFIGURATION:通過(guò)keepalived配置文件控制lvs

6.3 keepalived配置文件詳解

https://www.processon.com/view/link/5d034b4ee4b08ceab31b8e11

image

6.4 配置keepalived

對(duì)lb01(主)和lb02(備)進(jìn)行以下配置
注:配置時(shí)請(qǐng)注意lbo1主負(fù)載均衡與lb02備負(fù)載均衡有些不同

[root@lb01 /etc/keepalived]# cp keepalived.conf{,.bak}
[root@lb01 /etc/keepalived]# ll
total 8
-rw-r--r-- 1 root root 3598 Jan  6 16:47 keepalived.conf
-rw-r--r-- 1 root root 3598 Jun 14 15:56 keepalived.conf.bak
[root@lb01 /etc/keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
    router_id lb01
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.3/24 dev eth0 label eth0:1  
    }
}
[root@lb01 /etc/keepalived]# systemctl restart keepalived.service

image
image

6.5 命令行測(cè)試

image

6.7 抓包測(cè)試

image
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侍筛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撒穷,更是在濱河造成了極大的恐慌匣椰,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端礼,死亡現(xiàn)場(chǎng)離奇詭異禽笑,居然都是意外死亡入录,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)佳镜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)僚稿,“玉大人,你說(shuō)我怎么就攤上這事蟀伸∈赐” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵啊掏,是天一觀的道長(zhǎng)蠢络。 經(jīng)常有香客問(wèn)我,道長(zhǎng)迟蜜,這世上最難降的妖魔是什么刹孔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮娜睛,結(jié)果婚禮上髓霞,老公的妹妹穿的比我還像新娘。我一直安慰自己畦戒,他們只是感情好方库,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著兢交,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笼痹。 梳的紋絲不亂的頭發(fā)上配喳,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音凳干,去河邊找鬼晴裹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛救赐,可吹牛的內(nèi)容都是我干的涧团。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼经磅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泌绣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起预厌,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阿迈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后轧叽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體苗沧,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刊棕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了待逞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甥角。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖识樱,靈堂內(nèi)的尸體忽然破棺而出嗤无,到底是詐尸還是另有隱情,我是刑警寧澤牺荠,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布翁巍,位于F島的核電站,受9級(jí)特大地震影響休雌,放射性物質(zhì)發(fā)生泄漏灶壶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一杈曲、第九天 我趴在偏房一處隱蔽的房頂上張望驰凛。 院中可真熱鬧,春花似錦担扑、人聲如沸恰响。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胚宦。三九已至,卻和暖如春燕垃,著一層夾襖步出監(jiān)牢的瞬間枢劝,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工卜壕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留您旁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓轴捎,卻偏偏與公主長(zhǎng)得像鹤盒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侦副,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容