1. 程式人生 > 其它 >nginx高可用

nginx高可用

NGINX高可用

任務1 NGINX高可用

1. 準備工作

1)需要準備兩臺伺服器192.168.174.129(主) 192.168.174.139(備)

2)兩臺伺服器都安裝nginx

3)兩臺伺服器安裝keepalived

2. 安裝Nginx

1)使⽤用Nginx官⽅方提供的rpm包。

[root@nginx1 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2)執行yum

安裝

[root@nginx1 ~]# yum install -y nginx
[root@nginx1 ~]# systemctl start nginx
[root@nginx1 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

3. 兩臺安裝keepalived

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

4.配置主
keepalived

[root@nginx1 ~]# cd /etc/keepalived/
[root@nginx1 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@nginx1 keepalived]# > keepalived.conf
[root@nginx1 keepalived]# vi keepalived.conf
    vrrp_garp_interval 0
    vrrp_gna_interval 0
global_defs {
  notification_email {
        123456
@qq.com } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id lb01 } #VIP1 vrrp_instance VI_1 { state MASTER interface eno16777736 virtual_router_id 55  priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.174.50 } } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "keepalived.conf" 25L, 469C written [root@nginx1 keepalived]#

5. keepalived.conf傳到備機並修改

[root@nginx1 keepalived]# scp keepalived.conf root@192.168.174.139:/etc/keepalived/

#切換到備機192.168.174.139(備)上去修改keepalived.conf,只需修改

state BACKUP

priority 90

[root@nginx2 ~]# vi /etc/keepalived/keepalived.conf 
global_defs {
  notification_email {
        123456@qq.com
}
  notification_email_from [email protected]
  smtp_server   127.0.0.1
  smtp_connect_timeout 30
  router_id lb01
}

#VIP1
    vrrp_instance VI_1 {
      state BACKUP
      interface eno16777736
      virtual_router_id 55 
      priority 90
      advert_int 1
      authentication {
         auth_type PASS
         auth_pass 1111
      }
      virtual_ipaddress {
         192.168.174.50
      }
   }
~
~
~
~
~
~
~
~
~
~
"/etc/keepalived/keepalived.conf" 25L, 468C written

6. 配置準備nginx

#192.168.174.129

[root@nginx1 keepalived]# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
[root@nginx1 keepalived]# >/usr/share/nginx/html/index.html
[root@nginx1 keepalived]# vi /usr/share/nginx/html/index.html
web01

# 192.168.174.139

[root@nginx2 keepalived]# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
[root@nginx2 keepalived]# >/usr/share/nginx/html/index.html
[root@nginx2 keepalived]# vi /usr/share/nginx/html/index.html
web02

7.兩臺啟動服務並開機自啟

[root@nginx1 keepalived]# systemctl start keepalived
[root@nginx1 keepalived]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

8. 訪問各站點(主備及vip

9. 測試主備切換

192.168.174.129(主)上,停掉keepalived,測試主備切換

[root@nginx1 keepalived]# systemctl stop keepalived

重新整理頁面,vip已經切換到備(192.168.137.18上)

再主上啟動keepalived

[root@nginx1 keepalived]# systemctl start keepalived

重新整理頁面,發現又切換回來了

10. nginx存活測試

在主伺服器192.168.137.100上新增如下引數:

[root@nginx1 keepalived]# vi keepalived.conf
global_defs {
   notification_email {
        123456@qq.com
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id lb01
}

vrrp_script chk_nginx {
        script "/opt/chknginx.sh"
        interval 1
        weight -20
}
vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 55
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.50
    }
        track_script {
        chk_nginx
 }
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 55
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.50
    }
        track_script {
        chk_nginx
 }
}
"keepalived.conf" 50L, 834C written

/opt下建立chknginx.sh檔案,授予許可權

[root@nginx1 keepalived]# vi /opt/chknginx.sh
#!/bin/bash
A=`ps -C nginx --no-header|wc -l`
if [ $A -eq 0 ];then
    systemctl start nginx
    if [ `ps -C nginx --no-header|wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
[root@nginx1 keepalived]# chmod 755 /opt/chknginx.sh

在主nginx上關閉伺服器

[root@nginx1 keepalived]# shutdown -h now

vip會漂移到備伺服器192.168.174.139上。

瀏覽器輸入 http://192.168.174.50可檢視是否有跳轉到備伺服器上