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

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

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

一、雙機主備模式

1、準備

主機

IP

作用

主機1

10.100.1.10

Nginx1

主機2

10.100.1.11

Nginx2

10.100.1.5

VIP

 

2、主備模式架構

 

Nginx主備以及高可用架構

 

3、keepalived

3.1、keppalived安裝

[root@nginx1 ~]# yum install -y keepalived

[root@nginx2 ~]# yum install -y keepalived

3.2、修改keepalived配置

配置文件路徑:
/etc/keepalived/keepalived.conf

nginx1配置(主節點)

global_defs { #全局配置

router_id lb01 #標識身份->名稱

}

 

vrrp_instance VI_1 {

state MASTER #標識角色狀態(主節點)

interface ens33 #網卡綁定接口

virtual_router_id 50 #虛擬路由id

priority 150 #優先級

advert_int 1 #監測間隔時間

authentication { #認證

auth_type PASS #認證方式

auth_pass 1111 #認證密碼

}

virtual_ipaddress {

10.100.1.5 #虛擬的VIP地址

}

}

 

nginx2配置(備節點)

 

global_defs { #全局配置

router_id lb02 #標識身份->名稱

}

 

vrrp_instance VI_1 {

state BACKUP #標識角色狀態(備節點)

interface ens33 #網卡綁定接口

virtual_router_id 50 #虛擬路由id

priority 100 #優先級

advert_int 1 #監測間隔時間

authentication { #認證

auth_type PASS #認證方式

auth_pass 1111 #認證密碼

}

virtual_ipaddress {

10.100.1.5 #虛擬的VIP地址

}

}

3.3、啟動keepalived服務

[root@nginx1 ~]# systemctl start keepalived

[root@nginx1 ~]# systemctl enable keepalived

 

[root@nginx2 ~]# systemctl start keepalived

[root@nginx2 ~]# systemctl enable keepalived

3.4、測試

在nginx1上查看是否有VIP

[root@nginx1 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.10/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

 

關閉nginx1的keeplived,查看VIP是否會主動飄到nginx2

[root@nginx1 ~]# systemctl stop keepalived

[root@nginx2 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.11/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

 

啟動nginx1的keepalived,查看nginx1是否會搶占VIP

[root@nginx1 ~]# systemctl start keepalived

[root@nginx1 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.10/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

3.5、配置nginx檢測腳本

配置完keepalived之后,存在一個問題,就是如果掛的不是keepalived而是這臺電腦上的Nginx的話,keepalived的轉發就不會生效,因為它無法識別Nginx服務是否正常

 

解決方法:在keepalived.conf文件中配置對Nginx的定時檢查,如果發現Nginx掛了,調用腳本重啟Nginx

3.5.1、編輯腳本

vim /etc/keepalived/check_nginx.sh

#!/bin/bash

A=`ps -C nginx --no-header | wc -l`#判斷nginx是否為啟動,否,則啟動nginx

if [ $A -eq 0 ];then


/usr/local/nginx/sbin/nginx #啟動nginx

sleep 3 #等待3秒

if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then #啟動失敗的話,則停止keepalived服務

systemctl stop keepalived

fi

fi

3.5.2、增加運行權限

[root@nginx1 ~]# chmod a+x /etc/keepalived/check_nginx.sh

3.5.3、在keepalived配置文件中寫入監聽nginx腳本

vrrp_script check_nginx {

script "
/etc/keepalived/check_nginx.sh" #腳本

interval 2 #每隔兩秒運行上一行的腳本

weight 10 #如果腳本運行失敗,則升級權重+10

}

 

Nginx主備以及高可用架構

 

 

 

在vrrp_instance中新增監控的腳本

track_script {

check_nginx #追蹤nginx腳本

}

 

Nginx主備以及高可用架構

 

 

4、nginx

4.1、nginx安裝

安裝依賴包

[root@nginx1 ~]# yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

上傳源碼包到tmp目錄

 

Nginx主備以及高可用架構

 

 

解壓該源碼文件

[root@nginx1 tmp]# tar -zxvf nginx-1.20.0.tar.gz

 

Nginx主備以及高可用架構

 

 

進入到nginx-1.12.0目錄,指定安裝目錄/usr/local/nginx

[root@nginx1 nginx-1.20.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 

編譯安裝

[root@nginx1 nginx-1.20.0]# make && make install

進入到/usr/local/nginx/sbin,執行./nginx啟動nginx服務

[root@nginx1 sbin]# /usr/local/nginx/sbin/nginx

查看nginx是否啟動成功

[root@nginx1 sbin]# ps -ef | grep nginx

 

Nginx主備以及高可用架構

 

 

4.2、測試

4.2.1、關閉nginx服務

關閉nginx服務,查看keepalived是否會將nginx啟動

1)、執行命令/usr/local/nginx/sbin -s stop停止nginx服務

[root@nginx1 keepalived]# /usr/local/nginx/sbin/nginx -s stop

 

Nginx主備以及高可用架構

 

 

2)、執行命令ps -ef | grep nginx查看nginx服務是否啟動

[root@nginx1 keepalived]# ps -ef | grep nginx

 

Nginx主備以及高可用架構

 

 

4.2.2、修改nginx配置

修改nginx配置,讓nginx服務啟動失敗,查看keepalived是否會切換到備節點

1)、修改nginx配置

 

Nginx主備以及高可用架構

 

 

2)、執行命令停止nginx服務

[root@nginx1 keepalived]# ps -ef | grep nginx | grep -v nginx | awk '{print "kill -9",$2}' | sh

3)、執行命令ps -ef | grep nginx查看nginx服務是否啟動,否,查看keepalived的狀態

 

Nginx主備以及高可用架構

 

 

4)、查看keepalived的服務狀態

[root@nginx1 keepalived]# systemctl status keepalived

 

Nginx主備以及高可用架構

 

 

5)、登錄nginx2查看VIP是否飄到該服務器

[root@nginx2 ~]# ip addr | grep ens33

 

Nginx主備以及高可用架構

 

 

4.2.3、重新啟動nginx服務

修改為正確的nginx配置,重新啟動nginx服務,啟動keepalived服務,查看VIP是否會重新飄到nginx1上面

1)、修改為正確的nginx配置后,啟動nginx服務

[root@nginx1 keepalived]# /usr/local/nginx/sbin/nginx

2)、啟動keepalived服務

[root@nginx1 keepalived]# systemctl start keepalived

3)、查看VIP是否重新飄到原先的服務器

[root@nginx1 keepalived]# ip addr | grep ens33

 

Nginx主備以及高可用架構

 

 

二、LVS+Keepalived+Nginx高可用

1、準備

主機

IP

作用

主機1

10.100.1.10

Keepalived Master

主機2

10.100.1.11

Keepalived Backup

主機3

10.100.1.12

Nginx1

主機4

10.100.1.13

Nginx2

10.100.1.5

VIP

 

2、高可用架構

 

Nginx主備以及高可用架構

 

3、keepalived

3.1、keppalived安裝

[root@nginx1 ~]# yum install -y keepalived

[root@nginx2 ~]# yum install -y keepalived

3.2、修改keepalived配置

配置文件路徑:
/etc/keepalived/keepalived.conf

lvs1配置(主節點)

global_defs { #全局配置

router_id lb01 #標識身份->名稱

}

 

vrrp_instance VI_1 {

state MASTER #標識角色狀態(主節點)

interface ens33 #網卡綁定接口

virtual_router_id 50 #虛擬路由id

priority 150 #優先級

advert_int 1 #監測間隔時間

authentication { #認證

auth_type PASS #認證方式

auth_pass 1111 #認證密碼

}

virtual_ipaddress {

10.100.1.5 #虛擬的VIP地址

}

}

# 定義對外提供服務的LVS的VIP以及port

virtual_server 10.100.1.5 80 {

delay_loop 6 # 設置健康檢查時間,單位是秒

lb_algo rr # 設置負載調度的算法為wlc

lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 10.100.1.12 80 { # 指定real server1的IP地址

weight 3 # 配置節點權值,數字越大權重越高

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.100.1.13 80 { # 指定real server2的IP地址

weight 3 # 配置節點權值,數字越大權重越高

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 

lvs2配置(備節點)

global_defs { #全局配置

router_id lb02 #標識身份->名稱

}

 

vrrp_instance VI_1 {

state BACKUP #標識角色狀態(備節點)

interface ens33 #網卡綁定接口

virtual_router_id 50 #虛擬路由id

priority 100 #優先級

advert_int 1 #監測間隔時間

authentication { #認證

auth_type PASS #認證方式

auth_pass 1111 #認證密碼

}

virtual_ipaddress {

10.100.1.5 #虛擬的VIP地址

}

}

# 定義對外提供服務的LVS的VIP以及port

virtual_server 10.100.1.5 80 {

delay_loop 6 # 設置健康檢查時間,單位是秒

lb_algo rr # 設置負載調度的算法為wlc

lb_kind DR # 設置LVS實現負載的機制,有NAT、TUN、DR三個模式

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 10.100.1.12 80 { # 指定real server1的IP地址

weight 3 # 配置節點權值,數字越大權重越高

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.100.1.13 80 { # 指定real server2的IP地址

weight 3 # 配置節點權值,數字越大權重越高

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

3.3、啟動keepalived服務

[root@nginx1 ~]# systemctl start keepalived

[root@nginx1 ~]# systemctl enable keepalived

 

[root@nginx2 ~]# systemctl start keepalived

[root@nginx2 ~]# systemctl enable keepalived

4、LVS

4.1、ipvsadm安裝

[root@lvs1 ~]# yum install -y ipvsadm

[root@lvs2 ~]# yum install -y ipvsadm

5、nginx

5.1、nginx安裝

安裝依賴包

[root@nginx1 ~]# yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

上傳源碼包到tmp目錄

 

Nginx主備以及高可用架構

 

 

解壓該源碼文件

[root@nginx1 tmp]# tar -zxvf nginx-1.20.0.tar.gz

 

Nginx主備以及高可用架構

 

 

進入到nginx-1.12.0目錄,指定安裝目錄/usr/local/nginx

[root@nginx1 nginx-1.20.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 

編譯安裝

[root@nginx1 nginx-1.20.0]# make && make install

 

進入到/usr/local/nginx/sbin,執行./nginx啟動nginx服務

[root@nginx1 sbin]# /usr/local/nginx/sbin/nginx

 

查看nginx是否啟動成功

[root@nginx1 sbin]# ps -ef | grep nginx

 

Nginx主備以及高可用架構

 

 

5.2、編寫LVS的realserver的健康狀態檢測腳本

Nginx的兩臺機器都需要配置

1)、進入到init文件夾

[root@nginx1 ~]# cd /etc/init.d/

2)、編輯腳本realserver.sh

[root@nginx1 init.d]# vim realserver.sh

#虛擬的vip 根據自己的實際情況定義

SNS_VIP=10.100.1.5

/etc/rc.d/init.d/functions

case "$1" in

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_VIP dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

3)、設置腳本權限

[root@nginx1 init.d]# chmod +x realserver.sh

[root@nginx1 init.d]# chmod +x /etc/rc.d/init.d/functions

4)、執行腳本

[root@nginx1 init.d]# service realserver.sh start

5)、查看執行結果

[root@nginx1 init.d]# ip a

如果有顯示VIP,則說明成功

 

Nginx主備以及高可用架構

 

 

6、測試

6.1、nginx測試

1)、測試VIP

ping 10.100.1.5

 

Nginx主備以及高可用架構

 

 

2)、網頁測試VIP

 

Nginx主備以及高可用架構

 

 

6.2、keepalived高可用測試

在lvs1上查看是否有VIP

[root@lvs1 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.10/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

 

關閉lvs1的keeplived,查看VIP是否會主動飄到nginx2

[root@lvs1 ~]# systemctl stop keepalived

[root@lvs2 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.11/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

 

啟動lvs1的keepalived,查看nginx1是否會搶占VIP

[root@lvs1 ~]# systemctl start keepalived

[root@lvs1 ~]# ip addr | grep ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

inet 10.100.1.10/8 brd 10.255.255.255 scope global ens33

inet 10.100.1.5/32 scope global ens33

6.3、LVS監控測試

1)、查看最新的VIP對應的realserver的情況

[root@lvs1 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP lvs1:http rr

-> 10.100.1.12:http Route 3 0 0

-> 10.100.1.13:http Route 3 0 0

 

Nginx主備以及高可用架構

 

 

查看到10.100.1.112和10.100.1.113兩臺服務器都在

2)、測試停掉10.100.1.112

[root@nginx1 ~]# /usr/local/nginx/sbin/nginx -s stop

3)、查看最新的VIP對應的realserver的情況

[root@lvs1 keepalived]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP lvs1:http rr

-> 10.100.1.13:http Route 3 0 0

 

Nginx主備以及高可用架構

 

 

可以查看到10.100.1.12這臺服務器已經被移除了

4)、恢復10.100.1.12

lvs又會自動監控并加入10.100.1.12

[root@nginx1 ~]# /usr/local/nginx/sbin/nginx

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP lvs1:http rr

-> 10.100.1.12:http Route 3 0 0

-> 10.100.1.13:http Route 3 0 0

分享到:
標簽:架構
用戶無頭像

網友整理

注冊時間:

網站: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

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