国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

keepalived高可用學(xué)習(xí) keepalived+nginx高可用負(fù)載均衡配置

這篇具有很好參考價(jià)值的文章主要介紹了keepalived高可用學(xué)習(xí) keepalived+nginx高可用負(fù)載均衡配置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Keepalived

1、概述

keepalived是為lvs設(shè)計(jì)的,用于管理和監(jiān)控lvs集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后面又加入了VRRP虛擬路由冗余協(xié)議,可以實(shí)現(xiàn)路由器高可用,原理是多臺(tái)提供路由功能的服務(wù)器組成一個(gè)路由組,一個(gè)master和多個(gè)backup,master有vip,可以發(fā)組播,當(dāng)backup收不到就認(rèn)為master掛了,這時(shí)候需要優(yōu)先級(jí)確認(rèn)下一位master這樣就可以保證路由的高可用(lvs是通過(guò)ip公網(wǎng)訪問(wèn),lvs調(diào)度私網(wǎng)web服務(wù)器。DR模式有vip,web壞掉一臺(tái),另一臺(tái)還是可以訪問(wèn)的,lvs調(diào)度服務(wù)器掛了就不行了,lvs加上keepalived的話,keepalived就相當(dāng)于配置了lvs的多個(gè)備份,壞掉一臺(tái),另一臺(tái)頂上去)。

Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(wù)(例如:Nginx、Haproxy、MySQL、vsnfsd等)的高可用解決方案軟件文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-733560.html

2、配置文件說(shuō)明
! Configuration File for keepalived
#發(fā)送郵件的配置
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
#vrrp協(xié)議的配置
vrrp_instance VI_1 {
    #工作模式
    state MASTER
    #監(jiān)聽的網(wǎng)卡
    interface ens33
    #虛擬路由id 需要和備服務(wù)器一致
    virtual_router_id 51
    #權(quán)重 優(yōu)先級(jí)
    priority 100
    #vrrp包的發(fā)送周期  1s
    advert_int 1
    #權(quán)限驗(yàn)證
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #需要綁定切換的VIP
    virtual_ipaddress {
        192.168.1.200
    }
}
3、簡(jiǎn)潔版配置過(guò)程
keepalived 用于管理和監(jiān)控lvs集群,并具有vrrp虛擬路由冗余協(xié)議,可以實(shí)現(xiàn)路由器的高可用
主配置文件 /etc/keepalived/keepalived.conf
VRRP出現(xiàn)的目的就是為了解決靜態(tài)路由單點(diǎn)故障問(wèn)題的,它能夠保證當(dāng)個(gè)別節(jié)點(diǎn)宕機(jī)時(shí),整個(gè)網(wǎng)絡(luò)可以不間斷地運(yùn)行。

keepalived+lvs(DR模式)配置過(guò)程 
1.lvs服務(wù)器配置
安裝ipvsadm,開啟ip_vs模塊
配置vip(虛擬ip)地址
配置bl命令,完成lvs的調(diào)度功能
關(guān)閉重定向
安裝keepalived,配置/etc/keepalived/keepalived.conf文件
2.lvs備份服務(wù)器配置
安裝ipvsadm,開啟ip_vs模塊
配置vip(虛擬ip)地址
配置bl命令,完成lvs的調(diào)度功能
關(guān)閉重定向
安裝keepalived,配置/etc/keepalived/keepalived.conf文件
3.多臺(tái)web服務(wù)器配置
安裝httpd服務(wù),并配置網(wǎng)頁(yè)
關(guān)閉重定向
配置vip(虛擬ip)地址
4. 啟動(dòng)兩臺(tái)lvs服務(wù)器 (主lvs先啟動(dòng))
5.測(cè)試
[root@hd1 ~]# ip addr|grep 1.113
inet 192.168.1.113/32 scope global ens33
[root@hd8 ~]# curl 192.168.1.113
this is 192.168.1.13
6.驗(yàn)證keepalived的高可用性 
停掉192.168.1.11的keepalived的服務(wù)
[root@hd1 ~]# systemctl stop keepalived(keepalived.server)
查看vip地址現(xiàn)在在哪里?(應(yīng)該在192.168.1.12上)
[root@hd2 ~]# ip addr |grep 1.113
    inet 192.168.1.113/32 scope global ens33
通過(guò)客戶端繼續(xù)訪問(wèn)192.168.1.113   還是可以正常訪問(wèn) 后臺(tái)的1.13和1.14的


高可用配置

4、keepalived+lvs配置
Keepalived軟件起初是專為L(zhǎng)VS負(fù)載均衡軟件設(shè)計(jì)的,用來(lái)管理并監(jiān)控LVS集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后來(lái)又加入了可以實(shí)現(xiàn)高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(wù)(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件

keepalived是以VRRP協(xié)議為基礎(chǔ)實(shí)現(xiàn)的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議  (冗余:多個(gè))
虛擬路由冗余協(xié)議,
可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup,master上面有一個(gè)對(duì)外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip),master會(huì)發(fā)組播,當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來(lái)選舉一個(gè)backup當(dāng)master。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個(gè)模塊,分別是core、check和vrrp。
core模塊為keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)、維護(hù)以及全局配置文件的加載和解析。
check負(fù)責(zé)健康檢查,包括常見的各種檢查方式。
vrrp模塊是來(lái)實(shí)現(xiàn)VRRP協(xié)議的。

3、keepalived組成和原理
Keepalived軟件主要是通過(guò)VRRP協(xié)議實(shí)現(xiàn)高可用功能的。
作用:VRRP的目的是為了解決靜態(tài)路由單點(diǎn)故障問(wèn)題,它能夠保證當(dāng)個(gè)別節(jié)點(diǎn)宕機(jī)時(shí),整個(gè)網(wǎng)絡(luò)可以不間斷地運(yùn)行。
Keepalived的功能體系結(jié)構(gòu),大致分兩層:用戶空間(user space)和內(nèi)核空間(kernel space)。

keepalived的配置文件
keepalived只有一個(gè)配置文件
/etc/keepalived/keepalived.conf
里面主要包括以下幾個(gè)配置區(qū)域,分別是
global_defs、
static_ipaddress、
static_routes、
vrrp_script、
vrrp_instance和virtual_server。


環(huán)境準(zhǔn)備
四臺(tái)服務(wù)器
主lvs 192.168.8.11 vip 192.168.8.111
備lvs 192.168.8.12 vip 192.168.8.111
web1  192.168.8.138 vip 192.168.8.111
web2  192.168.8.139 vip 192.168.8.111

主lvs
root@hd1 ~]#yum -y install ipvsadm
root@hd1 ~]#modprobe ip_vs
root@hd1 ~]#cat /proc/net/ip_vs
配置關(guān)閉icmp重定向
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects 
cat /proc/sys/net/ipv4/conf/all/send_redirects 
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects 
echo "1" >/proc/sys/net/ipv4/conf/ens33/send_redirects 
安裝keepalived
[root@hd1 ~]# yum -y install keepalived
配置keepalived的主配置文件
清空配置文件的內(nèi)容
[root@hd1 ~]# > /etc/keepalived/keepalived.conf
[root@hd1 ~]# cat  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.111
    }
}

virtual_server 192.168.8.111 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    net_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.8.138 80 {
        weight 1
        TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                 delay_before_retry 4

    }
    }
    real_server 192.168.8.139 80 {
        weight 1
        TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                 delay_before_retry 4

    }
    }
}

第二臺(tái)lvs192.168.1.12的配置

安裝工具包
[root@hd2 ~]# yum -y install ipvsadm
[root@hd2 ~]# modprobe ip_vs
[root@hd2 ~]# cat /proc/net/ip_vs


配置關(guān)閉icmp重定向
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects 
cat /proc/sys/net/ipv4/conf/all/send_redirects 
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects 
echo "1" >/proc/sys/net/ipv4/conf/ens33/send_redirects 



安裝keepalived
[root@hd2 ~]# yum -y install keepalived

配置keepalived的配置文件
[root@hd2 ~]# > /etc/keepalived/keepalived.conf
[root@hd2 ~]# cat  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90   #優(yōu)先級(jí)要變低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.111
    }
}

virtual_server 192.168.8.111 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    net_mask 255.255.255.0
    persistence_timeout 50  #持續(xù)的超時(shí)時(shí)間50s
    protocol TCP

    real_server 192.168.8.138 80 {
        weight 1
        TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                 delay_before_retry 4

    }
    }
    real_server 192.168.8.139 80 {
        weight 1
        TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                 delay_before_retry 4

    }
    }
}
配置192.168.1.13為web1服務(wù)器 

[root@hd3 ~]# yum -y install httpd
[root@hd3 ~]# echo "this is the web1 " >/var/www/html/index.html
[root@hd3 ~]# systemctl start httpd
[root@hd3 ~]# yum -y install net-tools
[root@hd3 ~]#ifconfig lo:0 192.168.8.111 broadcast 192.168.8.111 netmask 255.255.255.255 up
[root@hd3 ~]#route add -host 192.168.8.111 dev lo:0 

vi /etc/sysctl.conf
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
7>重啟
sysctl -p
2. 配置192.168.1.14為web2服務(wù)器

[root@hd4 ~]# yum -y install httpd
[root@hd4 ~]# echo "this is the web2 " >/var/www/html/index.html
[root@hd4 ~]# systemctl start httpd
[root@hd4 ~]# yum -y install net-tools
[root@hd4 ~]#ifconfig lo:0 192.168.8.111 broadcast 192.168.8.111 netmask 255.255.255.255 up
[root@hd4 ~]#route add -host 192.168.8.111 dev lo:0 
[root@hd4 ~]#vi  /etc/sysctl.conf
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
重啟
[root@hd4 ~]#sysctl -p
5. 啟動(dòng)兩臺(tái)lvs服務(wù)器 (主lvs先啟動(dòng))
在主lvs192.168.1.11上
[root@hd1 ~]# systemctl start keepalived
在備lvs192.168.1.12上
[root@hd2 ~]# systemctl start keepalived
6.測(cè)試
查看vip地址是否落到了192.168.1.11上
[root@hd1 ~]# ip addr|grep 1.113
inet 192.168.1.113/32 scope global ens33
[root@hd8 ~]# curl 192.168.1.113
this is 192.168.1.13
7.驗(yàn)證keepalived的高可用性 
停掉192.168.1.11的keepalived的服務(wù)
[root@hd1 ~]# systemctl stop keepalived(keepalived.server)
查看vip地址現(xiàn)在在哪里?(應(yīng)該在192.168.1.12上)
[root@hd2 ~]# ip addr |grep 1.113
    inet 192.168.1.113/32 scope global ens33
通過(guò)客戶端繼續(xù)訪問(wèn)192.168.1.113   還是可以正常訪問(wèn) 后臺(tái)的1.13和1.14的
5、主lvs不可用 可能性
服務(wù)器整機(jī)不可用,常見于服務(wù)器斷網(wǎng),或者斷電關(guān)機(jī)等。

方法一:模擬主服務(wù)器斷電關(guān)閉

    #關(guān)閉主服務(wù)器  VIP所在服務(wù)器
    shell > poweroff

方法二:模擬主服務(wù)器斷網(wǎng)

    #關(guān)閉VIP所在服務(wù)器的網(wǎng)卡  使其不能夠聯(lián)網(wǎng)
    shell > service network stop

方法三:停掉主服上keepalived服務(wù)

    shell > systemctl  stop keepalived

通過(guò)以上實(shí)驗(yàn)檢測(cè),發(fā)現(xiàn)當(dāng)主服務(wù)器整機(jī)不可用時(shí),VIP會(huì)切換到備用服務(wù)器

6、防止腦裂,解決方式
四、實(shí)現(xiàn)服務(wù)HA

默認(rèn)keepalived實(shí)現(xiàn)的是服務(wù)器的高可用,并沒(méi)有實(shí)現(xiàn)基于某個(gè)程序的高可用(nginx、lvs) 
但是實(shí)際情況下,往往并不是服務(wù)器整機(jī)不可用,只是對(duì)應(yīng)的服務(wù)或者軟件不可用。
比如說(shuō):lvs提供負(fù)載均衡,lvs down掉了,但是主服務(wù)器依然可用,vip地址還在本地

實(shí)現(xiàn)過(guò)程分析:
VIP實(shí)際是由keepalived進(jìn)行綁定的,所以當(dāng)nginx服務(wù)不可用時(shí),就關(guān)閉當(dāng)前機(jī)器的keepalived即可,釋放VIP。進(jìn)而綁定到其他備用服務(wù)器。
①編寫服務(wù)檢測(cè)腳本,實(shí)現(xiàn)檢測(cè)nginx是否可用,不可用則關(guān)閉當(dāng)前所在主機(jī)的keepalived
②在keepalived配置中調(diào)用檢測(cè)服務(wù)腳本

1、Nginx服務(wù)可用檢測(cè)腳本
主備服務(wù)器都要實(shí)現(xiàn)此腳本
①編寫測(cè)試腳本  賦予執(zhí)行權(quán)限
    shell > cd /etc/keepalived
    shell > vim check_nginx.sh
腳本內(nèi)容:
    #!/bin/bash
    nginx_status=`ps -C nginx --no-header | wc -l`
    if [ $nginx_status -eq 0 ];then
       systemctl stop keepalived 
    fi
賦予腳本執(zhí)行權(quán)限    方便之后其他軟件調(diào)用執(zhí)行
    shell > chmod +x check_nginx.sh
②測(cè)試腳本可用性
啟動(dòng)nginx和keepalived  
關(guān)閉nginx   執(zhí)行腳本  查看keepalived是否也關(guān)閉
2、模擬宕機(jī)實(shí)現(xiàn)服務(wù)切換
在多臺(tái)服務(wù)器中配置keepalived定時(shí)觸發(fā)檢測(cè)nginx的腳本模塊
    #在vrrp_instance外上面定義
    vrrp_script check_nginx {
       #調(diào)用腳本地址
       script  /etc/keepalived/check_nginx.sh
       #檢測(cè)間隔時(shí)間
       interval 3
    }
    #在vrrp_instance里調(diào)用
    track_script {
        #上線定義的名稱
        check_nginx
    }
3、實(shí)現(xiàn)web服務(wù)器高可用
以上案例已經(jīng)實(shí)現(xiàn)了,服務(wù)不可用VIP切換到可用服務(wù)器。
現(xiàn)在需求用戶的服務(wù)是連續(xù)不間斷的,故用戶需要通過(guò)VIP進(jìn)行訪問(wèn)
①解析域名到VIP
②模擬用戶訪問(wèn)

7、keepalived的配置補(bǔ)充
五、keepalived的配置補(bǔ)充

腦裂(裂腦):vip出現(xiàn)在了多臺(tái)機(jī)器上。網(wǎng)絡(luò)不通暢,禁用了數(shù)據(jù)包,主備服務(wù)器沒(méi)法通訊,造成備服務(wù)器認(rèn)為主服務(wù)器不可用,綁定VIP,主服務(wù)器VIP不會(huì)釋放。

解決方案:
①雙備或者多備模式  BACKUP  通過(guò)priority權(quán)重來(lái)區(qū)分誰(shuí)的優(yōu)先級(jí)更高
②單播(定向廣播)的方式 (一些特定環(huán)境禁用了組播方式)
③時(shí)間不同步  服務(wù)器時(shí)間校時(shí)

1、非搶占模式

①nopreempt
在主備服務(wù)器的配置文件,vrrp_instance段中
②設(shè)置state工作模式為BACKUP
兩個(gè)keepalived節(jié)點(diǎn)都啟動(dòng)后,默認(rèn)都是BACKUP狀態(tài),雙方在發(fā)送組播信息后,會(huì)根據(jù)優(yōu)先級(jí)來(lái)選舉一個(gè)MASTER出來(lái)。由于兩者都配置了nopreempt,所以MASTER從故障中恢復(fù)后,不會(huì)搶占vip。這樣會(huì)避免VIP切換可能造成的服務(wù)延遲。

2、單播模式

一些特定環(huán)境下不允許發(fā)送組播,造成備服務(wù)器無(wú)法收到vrrp包,可能會(huì)造成腦裂現(xiàn)象??梢酝ㄟ^(guò)單播的方式解決。
單播示例配置:注意此語(yǔ)法在keepalived1.2.11版本以上支持
unicast_src_ip 192.168.1.10##(本地IP地址)
unicast_peer {
		192.168.1.11##(對(duì)端IP地址)此地址一定不能忘記
}

主服務(wù)器server01配置
    #在vrrp_instace段中加入
    #本地IP
    unicast_src_ip 192.168.1.11
    unicast_peer {
        #對(duì)象IP  發(fā)送vrrp包給備服務(wù)器
        192.168.1.10
    }
備服務(wù)器server03配置

    #在vrrp_instace段中加入
    #本地IP
    unicast_src_ip 192.168.1.10
    unicast_peer {
        #對(duì)象IP  發(fā)送vrrp包給備服務(wù)器
        192.168.1.11
    }
tcpdump抓vrrp包的方式:
shell > tcpdump vrrp -n -i ens33

keepalived+nginx 高可用配置

所有的請(qǐng)求流量,都要經(jīng)過(guò)負(fù)載均衡服務(wù)器,負(fù)載均衡服務(wù)器壓力很大,防止它宕機(jī),導(dǎo)致后端服務(wù)所有都不可用,需要對(duì)負(fù)載均衡服務(wù)器,做高可用
給負(fù)載均衡服務(wù)器做一臺(tái)備用服務(wù)器,通過(guò)keepalived實(shí)現(xiàn)高可用。

通過(guò)keepalived實(shí)現(xiàn)VIP在負(fù)載均衡服務(wù)器組的切換。
server03   master LB   192.168.1.11
server04   backup LB   192.168.1.14
主負(fù)載均衡的keepalived配置

    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        #虛擬路由ID 新ID 不要之前的沖突
        virtual_router_id 52
        priority 100
        nopreempt
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            #添加新VIP
            192.168.1.100
        }
        track_script {
            check_nginx
        }
    }

備負(fù)載均衡的keepalived配置
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    #修改route_id
    virtual_router_id 52
    priority 99
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #unicast_src_ip 192.168.1.12
    #unicast_peer {
    #    192.168.1.11
    #}
    virtual_ipaddress {
        #新VIP
        192.168.1.100
    }
    track_script {
        check_nginx
    }
}

nginx的負(fù)載均衡

負(fù)載均衡
負(fù)載均衡:分發(fā)流量、請(qǐng)求到不同的服務(wù)器。使流量平均分配(理想的狀態(tài)的)
作用:服務(wù)器容災(zāi)   流量分發(fā)
主要作用:
①流量分發(fā)  請(qǐng)求平均  降低單例壓力
其他作用:
②安全  隱藏后端真實(shí)服務(wù)
③屏蔽非法請(qǐng)求(七層負(fù)載均衡)
實(shí)現(xiàn)方式分類:
①軟件級(jí)別  性價(jià)比高  可控性強(qiáng)
②硬件級(jí)別   性能好  價(jià)格高  幾萬(wàn)到幾十萬(wàn)不等
硬件是實(shí)現(xiàn)方式:
F5 BIG-IP   四層和七層
七層   Nginx、HAProxy
四層   LVS、HAProxy、Nginx(1.9版本后)

1)二層負(fù)載均衡(mac)
根據(jù)OSI模型分的二層進(jìn)行負(fù)載,一般是用虛擬mac地址方式,外部對(duì)虛擬MAC地址請(qǐng)求,負(fù)載均衡接收后,再分配后端實(shí)際的MAC地址響應(yīng) 
2)三層負(fù)載均衡(ip) 
一般采用虛擬IP地址方式,外部對(duì)虛擬的ip地址請(qǐng)求,負(fù)載均衡接收后,再分配后端實(shí)際的IP地址響應(yīng)
3)四層負(fù)載均衡(tcp)  網(wǎng)絡(luò)運(yùn)輸層面的負(fù)載均衡
在三層負(fù)載均衡的基礎(chǔ)上,用ip+port接收請(qǐng)求,再轉(zhuǎn)發(fā)到對(duì)應(yīng)的機(jī)器
4)七層負(fù)載均衡(http)  智能型負(fù)載均衡
根據(jù)虛擬的url或IP,主機(jī)接收請(qǐng)求,再轉(zhuǎn)向(反向代理)相應(yīng)的處理服務(wù)器

架構(gòu)分析:

①用戶訪問(wèn)請(qǐng)求Nginx負(fù)載均衡服務(wù)器 
②Nginx負(fù)載均衡服務(wù)器再分發(fā)請(qǐng)求到web服務(wù)器
實(shí)際配置負(fù)載均衡,只需修改作為負(fù)載均衡服務(wù)器的Nginx即可。

①在客戶端解析域名到負(fù)載均衡服務(wù)器
②在192.168.1.11上安裝nginx做負(fù)載均衡
[root@localhost ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
[root@localhost ~]#yum -y install epel-release 
[root@localhost ~]#yum -y install nginx
shell > cat /etc/nginx/nginx.conf
配置文件示例:
worker_processes  1;
events {
    worker_connections  1024;
}
http {

#在http段進(jìn)行配置
#分發(fā)請(qǐng)求到后端服務(wù)器
upstream shop {
    #web1 server01
    server 192.168.1.12;
    #web2 server02
    server 192.168.1.13;
}
#修改之前的shop的server段配置
server {
    listen 80;
    server_name www.a.com;
    location / {
        #匹配到上面的upstream
        proxy_pass http://shop;
        #以下兩條配置,實(shí)質(zhì)是設(shè)置了傳輸?shù)膆eader頭信息  
        #傳輸域名給后端服務(wù)器  進(jìn)行識(shí)別  方便匹配對(duì)應(yīng)server虛擬主機(jī)
        proxy_set_header Host $host;
        #發(fā)送客戶端IP  給后端服務(wù)器  用來(lái)方便后端服務(wù)器識(shí)別用戶真實(shí)IP
        proxy_set_header X-Real-IP $remote_addr;
    }
}
#重啟nginx服務(wù)
[root@localhost nginx]# systemctl restart nginx 


==方法一:在不同服務(wù)器寫入不同信息==
①分別修改web服務(wù)器的信息

    shell11 > echo wo shi 192.168.1.12 >>/usr/share/nginx/html/index.html
    shell12 > echo wo shi 192.168.1.13 >>/usr/share/nginx/html/index.html
測(cè)試:
    [root@localhost ~]# curl 192.168.1.11
    wo shi 1.13
    [root@localhost ~]# curl 192.168.1.11
    wo shi 1.12
可以停掉其中一臺(tái)web服務(wù)器進(jìn)行測(cè)試
    #停掉192.168.1.13
    省略15個(gè)字...... 
    #再次訪問(wèn)nginx負(fù)載均衡發(fā)現(xiàn) 1.13故障機(jī)器自動(dòng)被踢出,說(shuō)明nginx負(fù)載均衡默認(rèn)就具備健康檢查功能
    [root@localhost ~]# curl 192.168.1.11
    wo shi 1.12
    [root@localhost ~]# curl 192.168.1.11
    wo shi 1.12
    
方法二:查看后端web服務(wù)器的訪問(wèn)日志,有沒(méi)有記錄真正客戶端的ip地址
    shell > cat /var/log/nginx/access.log



nginx遇到的問(wèn)題之負(fù)載均衡后獲取客戶端IP

負(fù)載均衡之后,在后端的web服務(wù)器獲取到的是負(fù)載均衡服務(wù)器的IP,而不能夠獲取到客戶端的真實(shí)IP。

需要進(jìn)行以下特殊配置:
①首先在負(fù)載均衡服務(wù)器中配置,轉(zhuǎn)發(fā)客戶端IP給后端web服務(wù)器
location{
    ..........
      #發(fā)送客戶端IP  給后端服務(wù)器  用來(lái)方便后端服務(wù)器識(shí)別用戶真實(shí)IP
        proxy_set_header X-Real-IP $remote_addr;
}
②后端web服務(wù)器需要配置,識(shí)別從負(fù)載均衡服務(wù)器傳輸過(guò)來(lái)的客戶端真實(shí)IP
    set_real_ip_from  192.168.1.11;(負(fù)載均衡的ip)
官方網(wǎng)址:http://nginx.org/en/docs/http/ngx_http_realip_module.html
使用ngx_http_realip_module模塊提供的set_real_ip_from語(yǔ)法,默認(rèn)此模塊沒(méi)有安裝,需要編譯時(shí)添加編譯參數(shù)
web服務(wù)器上配置set_real_ip_from  代表從哪兒來(lái)源的IP,需要識(shí)別真實(shí)客戶端IP
示例配置:
    #此配置在web服務(wù)器上的nginx
    #可配置到http、server、location中,推薦配置到server中
    #配置需要識(shí)別的IP來(lái)源   負(fù)載均衡的IP
    set_real_ip_from  192.168.1.11;

nginx配置中upstream的server關(guān)鍵字

upstream中的分發(fā)之后的幾個(gè)關(guān)鍵字:
backup  備  其他的沒(méi)有backup標(biāo)識(shí)的都無(wú)響應(yīng),才分發(fā)到backup
down   此條配置,不會(huì)被分發(fā)到
upstream shop {
    server 192.168.1.12 ;
    server 192.168.1.13 backup;
}

nginx遇到的問(wèn)題之 session一致性問(wèn)題

訪問(wèn)管理后端頁(yè)面,登錄發(fā)現(xiàn)驗(yàn)證碼不通過(guò)
分析原因:
①比如分發(fā)到web1服務(wù)器,生成驗(yàn)證碼,存儲(chǔ)到session中,默認(rèn)在服務(wù)器本地
②再次校驗(yàn)的時(shí)候,請(qǐng)求分發(fā)到web2服務(wù)器了,所有驗(yàn)證碼一直校驗(yàn)不通過(guò)

解決方案思路:
①生成和驗(yàn)證session都請(qǐng)求同一臺(tái)服務(wù)器
②共享session  nfs  mysql ==內(nèi)存緩存軟件(memcached、redis)==

Nginx的常見負(fù)載均衡算法實(shí)戰(zhàn)

Nginx 官方默認(rèn)3種負(fù)載均衡的算法
①==Round-Robin  RR輪詢(默認(rèn))==  一次一個(gè)的來(lái)(理論上的,實(shí)際實(shí)驗(yàn)可能會(huì)有間隔)
②==weight 權(quán)重==  權(quán)重高多分發(fā)一些  服務(wù)器硬件更好的設(shè)置權(quán)重更高一些
③==ip_hash==  同一個(gè)IP,所有的訪問(wèn)都分發(fā)到同一個(gè)web服務(wù)器
Tip:
第三方模塊實(shí)現(xiàn)的調(diào)度算法  需要編譯安裝第三方模塊
④fair  根據(jù)后端服務(wù)器的繁忙程度  將請(qǐng)求發(fā)到非繁忙的后端服務(wù)器
⑤url_hash  如果客戶端訪問(wèn)的url是同一個(gè),將轉(zhuǎn)發(fā)到同一臺(tái)后端服務(wù)器
驗(yàn)證一:驗(yàn)證加權(quán)輪詢算法
示例配置:
    upstream shop {
        #web1 server01
        server 192.168.1.12 weight=5;
        #web2 server02
        server 192.168.1.13 weight=3;
    }

server01   web 1      1    1   1   1   1
server03   web 2      1    1   1
8次中,server01分發(fā)5次,server03分發(fā)3次
驗(yàn)證二:ip一致性算法
示例配置:
    upstream shop {
        #ip hash 一致性算法配置  設(shè)置此項(xiàng)  weight就失效了
        ip_hash;
        #web1 server01
        server 192.168.1.12 weight=5;
        #web2 server02
        server 192.168.1.13 weight=3;
    }



nginx 四層代理,七層代理

nginx兩種反向代理區(qū)別
7層反向代理和4層反向代理

在nginx中,upstream和stream都是指向不同類型的模塊。

upstream模塊用于HTTP協(xié)議的負(fù)載均衡,主要用于將客戶端請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,從而提高系統(tǒng)的穩(wěn)定性和執(zhí)行效率。

stream模塊用于TCP/UDP協(xié)議的負(fù)載均衡,主要用于將客戶端請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,從而提高系統(tǒng)的穩(wěn)定性和執(zhí)行效率,也可以用于TCP代理和UDP代理。

因此,upstream和stream的區(qū)別在于它們適用的協(xié)議不同。
upstream適用于HTTP協(xié)議的負(fù)載均衡,stream適用于TCP/UDP協(xié)議的負(fù)載均衡和代理。



nginx做七層反向代理

以下是使用nginx做七層反向代理的步驟:
1. 安裝nginx:在Linux系統(tǒng)中使用包管理器安裝nginx,或者從官網(wǎng)下載源碼后編譯安裝。
2. 配置nginx:修改nginx配置文件,一般在/etc/nginx/nginx.conf(/usr/local/nginx/nginx.conf),增加以下內(nèi)容:
    http {
        upstream backend {
            server backend1.example.com:8080;
            server backend2.example.com:8080;
        }
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                proxy_pass http://backend;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
            }
        }
    }

其中,
upstream定義了后端服務(wù)器集群,
server定義了監(jiān)聽的端口和域名,
location定義了訪問(wèn)路徑。
3. 重啟nginx:執(zhí)行以下命令重啟nginx服務(wù),使新的配置生效。
    # 查看nginx進(jìn)程
    ps -ef | grep nginx
    # 重啟nginx
    /usr/local/nginx/sbin/nginx -s reload
    /etc/nginx/sbin/nginx -s reload
    
    

 測(cè)試反向代理:
訪問(wèn)配置的域名,可以看到nginx反向代理到后端服務(wù)器集群,將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器(負(fù)載均衡)處理,并返回響應(yīng)。



nginx做四層反向代理
以下是使用nginx做四層反向代理的步驟:
1. 安裝nginx:在Linux系統(tǒng)中使用包管理器安裝nginx,或者從官網(wǎng)下載源碼后編譯安裝。
2. 配置nginx:修改nginx配置文件,一般在/etc/nginx/nginx.conf,增加以下內(nèi)容:
    stream {
        upstream backend {
            server backend1.example.com:8080;
            server backend2.example.com:8080;
        }
    
        server {
            listen 80;
            proxy_pass backend;
        }
    }

其中,
stream定義了四層代理,
upstream定義了后端服務(wù)器集群,
server定義了監(jiān)聽的端口和代理地址。

1. 重啟nginx:執(zhí)行以下命令重啟nginx服務(wù),使新的配置生效。
    # 查看nginx進(jìn)程
    ps -ef | grep nginx
    # 重啟nginx
    /usr/local/nginx/sbin/nginx -s reload
    /etc/nginx/sbin/nginx -s reload
測(cè)試反向代理:
使用TCP客戶端工具(如telnet、netcat、nc等)連接nginx代理地址,
可以看到nginx反向代理到后端服務(wù)器集群,將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器處理,并返回響應(yīng)。

到了這里,關(guān)于keepalived高可用學(xué)習(xí) keepalived+nginx高可用負(fù)載均衡配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • nginx+keepalived實(shí)現(xiàn)負(fù)載均衡和高可用

    環(huán)境準(zhǔn)備 IP VIP 環(huán)境 客戶端 192.168.134.174 Master 192.168.134.170 192.168.134.100 需要配置nginx負(fù)載均衡 Backup 192.168.134.172 192.168.134.100 需要配置nginx負(fù)載均衡 web1服務(wù)器 192.168.134.171 web2服務(wù)器 192.168.134.173 1、首先安裝nginx服務(wù)器(此處采用yum安裝) 2、修改nginx的配置文件(配置負(fù)載均衡)

    2024年02月13日
    瀏覽(22)
  • 基于nginx+keepalived的負(fù)載均衡、高可用web集群

    基于nginx+keepalived的負(fù)載均衡、高可用web集群

    項(xiàng)目描述: 本項(xiàng)目旨在構(gòu)建一個(gè)高性能、高可用的web集群,使用ansible批量部署項(xiàng)目環(huán)境,nginx實(shí)現(xiàn)七層負(fù)載均衡,NFS實(shí)現(xiàn)web服務(wù)器機(jī)器的數(shù)據(jù)同源,keepalived搭建雙VIP實(shí)現(xiàn)高可用,Prometheus+grafana實(shí)現(xiàn)對(duì)LB負(fù)載均衡服務(wù)器以及NFS服務(wù)器的監(jiān)控。 項(xiàng)目環(huán)境: CentOS 7.9、Nginx 1.25.2、

    2024年02月09日
    瀏覽(21)
  • Docker搭建Nginx+keepalived高可用負(fù)載均衡服務(wù)器

    一、背景 1.nginx高可用 在生產(chǎn)環(huán)境下,Nginx作為流量的入口,如果Nginx不能正常工作或服務(wù)器宕機(jī),將導(dǎo)致整個(gè)微服務(wù)架構(gòu)的不可用。所以負(fù)責(zé)負(fù)載均衡、反向代理的服務(wù)(Nginx)為了提高處理性能,高可用,也需要集群部署。本期咋們采用 keepalived 和 Nginx實(shí)現(xiàn)高可用。 2.Kee

    2024年04月22日
    瀏覽(26)
  • nginx兩臺(tái)負(fù)載均衡服務(wù)器之間使用keepalived實(shí)現(xiàn)高可用

    單點(diǎn)故障:某個(gè)重要的功能只有一份,如果他出現(xiàn)問(wèn)題,會(huì)導(dǎo)致全局不能使用 “高可用性”(High Availability,縮寫為HA)用于描述系統(tǒng)或服務(wù)在面臨故障、硬件或軟件問(wèn)題時(shí)能夠繼續(xù)正常運(yùn)行的能力。高可用性的目標(biāo)是最大程度地減少系統(tǒng)中斷或停機(jī)時(shí)間,確保用戶可以隨時(shí)

    2024年02月09日
    瀏覽(20)
  • 虛擬機(jī)中使用Nginx + Keepalived 實(shí)現(xiàn)高可用 Web 負(fù)載均衡筆記

    虛擬機(jī)中使用Nginx + Keepalived 實(shí)現(xiàn)高可用 Web 負(fù)載均衡筆記

    物理操作系統(tǒng):Windows10 虛擬機(jī)軟件:VMWare Workstation 16 Pro 虛擬操作系統(tǒng)統(tǒng):CentOS7 Nginx:1.24.0 Keepalived:2.2.8 在VMWare Worksattion中安裝了2臺(tái)CentOS7的虛擬機(jī),橋接方式下IP地址分別為:192.168.0.35、192.168.0.36 VIP IP 主機(jī)名 Nginx端口 默認(rèn)主從 192.168.0.100 192.168.0.35 wongoing01 88 MASTER 192.168

    2024年02月11日
    瀏覽(25)
  • LVS-DR模式+keepalived+nginx+tomcat實(shí)現(xiàn)動(dòng)靜分離、負(fù)載均衡、高可用實(shí)驗(yàn)

    LVS-DR模式+keepalived+nginx+tomcat實(shí)現(xiàn)動(dòng)靜分離、負(fù)載均衡、高可用實(shí)驗(yàn)

    實(shí)驗(yàn)條件: test2——20.0.0.20——主服務(wù)器——ipvsadm、keepalived服務(wù) test3——20.0.0.30——備服務(wù)器——ipvsadm、keepalived服務(wù) nginx5——20.0.0.51——后端真實(shí)服務(wù)器1(tomcat的代理服務(wù)器)——nginx服務(wù) nginx6——20.0.0.61——后端真實(shí)服務(wù)器2(tomcat的代理服務(wù)器)——nginx服務(wù) tomcat——

    2024年02月08日
    瀏覽(46)
  • 【微服務(wù)部署】八、HAProxy+Keepalived高可用負(fù)載均衡集群配置

    ??HAProxy是一種免費(fèi)、快速、可靠的反向代理,為基于TCP和HTTP的應(yīng)用程序提供高可用性、負(fù)載平衡和代理,它非常適合應(yīng)用在高并發(fā)大流量的網(wǎng)站上。這些年來(lái),HAProxy已成為事實(shí)上的標(biāo)準(zhǔn)開源負(fù)載均衡,目前HAProxy已與大多數(shù)主流Linux發(fā)行版一起提供,很多云平臺(tái)也默認(rèn)集成

    2024年02月07日
    瀏覽(30)
  • LVS+KeepAlived高可用負(fù)載均衡集群

    LVS+KeepAlived高可用負(fù)載均衡集群

    高可用集群只需要在調(diào)度器上多進(jìn)行一臺(tái)或兩臺(tái)(服務(wù)器本身的價(jià)格比較昂貴,一般備用的服務(wù)器的數(shù)量會(huì)和當(dāng)前業(yè)務(wù)創(chuàng)造的價(jià)值對(duì)等)的設(shè)置,就可避免因調(diào)度器癱瘓業(yè)務(wù)中斷的風(fēng)險(xiǎn),所以實(shí)現(xiàn)了真正的高可用的效果。 1.普通群集 普通的群集的部署是通過(guò)一臺(tái)度器控制調(diào)配

    2024年02月09日
    瀏覽(22)
  • LVS+Keepalived架構(gòu)(負(fù)載均衡高可用集群)

    LVS+Keepalived架構(gòu)(負(fù)載均衡高可用集群)

    普通的群集的部署是通過(guò) 一臺(tái)調(diào)度器控制調(diào)配多臺(tái)節(jié)點(diǎn)服務(wù)器 進(jìn)行業(yè)務(wù)請(qǐng)求的處理,但是僅僅是一臺(tái)調(diào)度器,就會(huì)存在極大的單點(diǎn)故障風(fēng)險(xiǎn),當(dāng)該調(diào)度器的鏈路或則調(diào)度器本身出現(xiàn)故障時(shí),就會(huì)導(dǎo)致整個(gè)業(yè)務(wù)的無(wú)法正常進(jìn)行 ?而高可用集群是由 一臺(tái)主調(diào)度器和一臺(tái)或多臺(tái)備

    2024年02月12日
    瀏覽(25)
  • Lvs+KeepAlived高可用高性能負(fù)載均衡

    Lvs+KeepAlived高可用高性能負(fù)載均衡

    目錄 1.環(huán)境介紹 2.配置keepalived ?3.測(cè)試 1.測(cè)試負(fù)載均衡 2.測(cè)試RS高可用 3.測(cè)試LVS高可用 3.1測(cè)試lvs主服務(wù)宕機(jī) 3.2.測(cè)試lvs主服務(wù)器恢復(fù) 4.我在實(shí)驗(yàn)中遇到的錯(cuò)誤 環(huán)境:centos7 RS1---RIP1:192.168.163.145 ? ? ? ? ? ?VIP 192.168.163.200 RS2---RIP2:192.168.163.146 ? ? ? ? ? ?VIP 192.168.163.200 LVS_MAST

    2024年02月10日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包