1. 程式人生 > >配置nginx + keepalived雙主模式(雙機互為主備)

配置nginx + keepalived雙主模式(雙機互為主備)

前言

此前已經寫過一篇使用keepalived實現nginx的高可用,這種方式有一臺機器一直作backup使用,有50%的資源被浪費。

下面來配置nginx+keepalived的雙主機雙機熱備,這種配置下有兩個Virtual IP,兩個機器互為主備,最後我們把域名DNS伺服器解析至兩個Virtual IP即可。

環境介紹

兩臺伺服器

Server1:192.168.30.61
Server2:192.168.30.62

要設定的兩個虛擬IP

Virtual IP1:192.168.30.51
Virtual IP2:192.168.30.52

將DNS域名解析至兩個虛擬IP: 192.168.30.51、192.168.30.52

網路撲拓圖

這裡寫圖片描述

配置第一臺伺服器

第一臺伺服器ip為192.168.30.61

vi /etc/keepalived/keepalived.conf

配置內容如下:

global_defs
{
    notification_email
    {
       [email protected]
    }
    notification_email_from 123456@qq.com
    smtp_server 127.0.0.1
    stmp_connect_timeout 30
router_id LVS_DEVEL } vrrp_script Monitor_Nginx { script "/usr/local/keepalived/scripts/monitor_nginx.sh" interval 2 weight 2 } # 虛擬IP1, 本機作為Master vrrp_instance VI_1 { state MASTER interface enp0s3 virtual_router_id 51 priority 100 advert_int 1 track_interface { enp0s3 }
authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.30.51 }i track_script { Monitor_Nginx } } # 虛擬IP2, 本機作為Backup vrrp_instance VI_2 { state BACKUP interface enp0s3 virtual_router_id 52 priority 100 advert_int 1 track_interface { enp0s3 } authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.30.52 } track_script { Monitor_Nginx } }

配置第二臺伺服器

第二臺伺服器ip為192.168.30.62

vi /etc/keepalived/keepalived.conf

配置內容如下:

global_defs
{
    notification_email
    {
       [email protected]
    }
    notification_email_from 123456@qq.com
    smtp_server 127.0.0.1
    stmp_connect_timeout 30
    router_id LVS_DEVEL
}

vrrp_script Monitor_Nginx {
    script "/usr/local/keepalived/scripts/monitor_nginx.sh"
    interval 2
    weight 2
}

# 虛擬IP1, 本機作為BACKUP
vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    track_interface {
        enp0s3
    }

    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.30.51
    }
    track_script {
        Monitor_Nginx
    }
}

# 虛擬IP2, 本機作為Master
vrrp_instance VI_2 {
    state MASTER
    interface enp0s3
    virtual_router_id 52
    priority 100
    advert_int 1
    track_interface {
        enp0s3
    }

    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.30.52
    }
    track_script {
        Monitor_Nginx
    }

}

監控指令碼

和之前的監控指令碼一樣

# 監控nginx程序,若nginx主程序不存在則啟動nginx
# 若5s後nginx程序還是不存在的話kill掉keepalived程序,防止nginx沒執行該主機的keepalived還接管虛擬IP
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
        then
        /usr/local/nginx/sbin/nginx
        sleep 5
        if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
        then
                  killall keepalived
        fi
fi

測試

修改nginx預設訪問頁nginx的預設頁面

# nginx 預設訪問頁面
$NGINX_HOME/html/index.html

修改server1的頁,加入IP: 192.168.30.61

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx! 192.168.30.61 </h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

server2同理

兩個機器都啟動keepalived和nginx

訪問虛擬ip1

在瀏覽器輸入192.168.30.51進入訪問頁面
這裡寫圖片描述

訪問虛擬ip2

在瀏覽器輸入192.168.30.52進入訪問頁面
這裡寫圖片描述

證明兩個VIP都起效果了

Kill掉server2的keepalived

pkill keepalived
  • 訪問ip2

這裡寫圖片描述

證明了server1為server2的備機,server2 down掉後server1接管server1的nginx訪問

Kill掉server1機器的keepalived,啟動server2機器的keepalived

  • 訪問ip1

這裡寫圖片描述

證明了server2為server1的備機,server1 down掉後server1接管server1的nginx訪問

有關nginx和keepalived的安裝可參考

相關推薦

配置nginx + keepalived模式為主

前言 此前已經寫過一篇使用keepalived實現nginx的高可用,這種方式有一臺機器一直作backup使用,有50%的資源被浪費。 下面來配置nginx+keepalived的雙主機雙機熱備,這種配置下有兩個Virtual IP,兩個

keepalived 安裝配置高可用VIP,模式

keepalived 高可用 雙主模式 郵件腳本 首先需要明白我們準備使用keepalived來做什麽,今天這裏只是給大家簡單安裝和配置下keepalived實現vip對外服務,防止單點故障。keepalived是高可用高可用高可用 而非負載非負載非負載。 下面我將使用keepalived部署雙主模模式,

Nginx+keepalived高可用模式

Nginx+keepalive 負載均衡 keepalive雙主模型配置 負載均衡技術對於一個網站尤其是大型網站的web服務器集群來說是至關重要的!做好負載均衡架構,可以實現故障轉移和高可用環境,避免單點故障,保證網站健康持續運行。由於業務擴展,網站的訪問量不斷加大,負載越來越高。現需要在web前

Nginx+keepalived 高可用主從模式/模式

基礎介紹 負載均衡技術對於一個網站尤其是大型網站的web伺服器叢集來說是至關重要的!做好負載均衡架構,可以實現故障轉移和高可用環境,避免單點故障,保證網站健康持續執行。 由於業務擴充套件,網站的訪問量不斷加大,負載越來越高。現需要在web前端放置ngin

keepalived模式實現nginx高可用及LNAMMP架構

keepalived nginx lnammpkeepalived雙主模式實現nginx高可用及LNAMMP架構一、利用keepalived實現nginx調度器高可用;二、構建LNAMMP架構: 1) Nginx既是前端調度器,又是緩存服務器; 2) 將php的session緩存於memcached中;

ansible實現nginx模式反代,keepalived高可用,memcached緩存

ansible實現nginx前端反代 keepalived高可用與對後端rs的配置 ansible自動化運維工具配置ngnix前端反代到後端真實機,並設置keepalived高可用,在後端一臺真實主機上配置httpd,mysql,php-fpm;設置memcached緩存服務器在這臺真實主機上;(

nginx+keepalived高可用及模式

網卡 oot span align ip地址 cat lis 什麽 art 原文地址:http://blog.csdn.net/lexang1/article/details/52386909 高可用有2中方式。 1、Nginx+keepalived 主從配置 這種方案

keepalived+nginx+apache活搭建網卡模式

emc RKE RM etc lin admin 腳本 include status 之前寫過一篇文章《keepalived+nginx+apache主備及雙活搭建測試》,該測試環境只有一張網卡,雙活的ip都在該網卡上。本文背景:自動化運維平臺的前置機部署在雲平臺,服務器有

haproxy+keepalived模式配置

request address fig etc 虛擬 tab over .com ken Haproxy+Keepalived主備模式 主備節點設置 主備節點上各安裝配置haproxy,配置內容且要相同 global log 127.0.0.1 lo

nginx nginx+keepalived 實現+模型的高可用負載均衡代理服務

nginx(四) nginx+keepalived 實現主備+雙主熱備模型的高可用負載均衡代理服務        在前面《nginx配置:反向代理 負載均衡 後端健康檢查 快取》等幾篇文章中,我們配置了nginx的反向代理負載均衡WEB叢集,而在《keepalived

Keepalived模式+DNS輪詢機制 實現高負載

location 記錄 ipa res 均衡 sta text 不一致 for 一、Keepalived雙主模式+DNS輪詢機制作用 作用:在單主模式下,備機通常會以等待狀態放著,不接受任何數據,導致所有數據請求只往主機-負載均衡發送,做成資源浪費;而雙主模式,即創造兩個V

keepalived(模式)+haproxy+mysql_slave

interval track -s pass nec 11.2 ini 地址 clean 環境說明: debian系統 keepalived_master1 +haproxy 192.168.7.32 keepalived_master1 +haproxy 192.16

mysql之 mysql 5.6不停機一從搭建活躍一從基於日誌點復制

stat 5.6 create 文件夾 eat ima send spec tar 環境說明:版本 version 5.6.25-log 主1庫ip: 10.219.24.25主2庫ip: 10.219.24.22從1庫ip:10.219.24.26os 版本: cento

數據庫 之 Mysql的同步模型

兩個 white serve 執行 密碼連接 進行 st3 提交 復制 1 概述互為主從:兩個節點各自都要開啟binlog和relay log; 1、數據不一致; 2、自動增長id;為了防止id沖突,解決辦法是一個服務器使用奇數id,另一個服務器使用偶數id,合並的時候一

nginx+keepalived實現模式高可用

反向代理 負載均衡一、拓撲二、keepalived配置2.1 主配置! Configuration File for keepalived global_defs {notification_email {[email protected]/>[email protected]/>sy

MySQL的主從復制+模式

數據 io線程 msyql mysql- 關閉 cat ges enter 就是 MySQL的主從復制 部署環境: MySQL master 192.168.40.21 MySQL slave 192.168.40.22 思路: 當主MySQL上進行數據上的操作或

RocketMq的安裝-模式

1.修改/etc/hosts檔案 [[email protected] ~]# vi /etc/hosts [[email protected] ~]# systemctl restart network [[email protected] ~]# cat /et

MySQL 高可用:複製複製

########################################################################################### linux: CentOS 5.6 mysql: 5.6.22

Tarjan三大算法之連通分量連通分量 轉載

進行 ack clear 例題 min 路徑 ace 相關 重復 定義: 對於一個連通圖,如果任意兩點至少存在兩條點不重復路徑,則稱這個圖為點雙連通的(簡稱雙連通);如果任意兩點至少存在兩條邊不重復路徑,則稱該圖為邊雙連通的。點雙連通圖的定義等價於任意兩條邊都同在一個簡單

Keepalived模式

Linux Keepalived 1、配置selinux ,iptables ,同步時間各節點時間必須同步: ntpdate TIME_SERVER_IP (如果沒有ntpdate,安裝ntp包,或者直接安裝ntpdate包) vim /etc/chrony