“lnmap實戰之負載均衡架構(無高可用)”之新增keepalived高可用

“lnmap實戰之負載均衡架構(無高可用)”之新增keepalived高可用

我之前有一篇”lnmap實戰之負載均衡架構(無高可用)“博客是專門部署了lanmap,之前沒有做高可用,那么我們現在就把高可用補上去吧

這樣我們照著之前的文檔從新部署一下 1.機器結構如下:

192.168.42.150 node0 [負載均衡器]
192.168.42.151 node1 [負載均衡器 新增]
192.168.42.152 node2 [web1]
192.168.42.153 node3 [web2]
192.168.42.154 node4 [nfs 共享存儲]
192.168.42.155 node5 [memcached session存儲]
192.168.42.156 node6 [mariadb]

我們在此基礎之上新增一臺nginx[負載均衡器]
我們此次是針對這兩臺nginx負載均衡器做高可用

2.我們依照上面的機器結構和之前的部署文檔,把”lnmap實戰之負載均衡架構(無高可用)”部署出來,部署出來,測試沒問題之后我們在node1節點上安裝nignx
安裝方法和node0一樣
node1操作:
(1).安裝nginx

yum install nginx -y

(2).備份nginx.conf

cp /etc/nginx/nginx.conf{,.back}

(3).將node0的nginx配置文件cp一份到node1 ->[記得是在node0上操作]

scp /etc/nginx/nginx.conf  192.168.42.151:/etc/nginx/
cd /etc/nginx/conf.d/
scp *.conf  192.168.42.151:/etc/nginx/conf.d/

(4).更改node1上的hosts文件

echo "192.168.42.151 www.test.com">>/etc/hosts
echo "192.168.42.151  test.discuz.com">>/etc/hosts
cat /etc/hosts
nginx -t
nginx -s reload

3.nginx+keepalived高可用

node0,node1 關閉nignx

node0:
(1).安裝keepalived

yum install keepalived -y

(2).配置keepalived
配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node0
   vrrp_mcast_group4 224.1.101.23

}

#存在文件時,檢測成功,即執行降級;否則不存在,全部退出;實現服務器切換
vrrp_script chk_down{
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
    interval 1
    weight -10
    fall 1
    rize 1
}


#腳本,健康狀態檢測,檢測nginx是否存活
vrrp_script chk_nginx {   
    script "killall -0 nginx && exit 0 || exit 1"
    interval 1
    weight -10
    fall 1
    rise 1
}

vrrp_instance sr1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass rEiszbuO
    }
    virtual_ipaddress {
        192.168.42.182/24 dev ens33 label ens33:0
    }

    #腳本調用
    track_script {
        chk_down
        chk_nginx
    }

    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"

}

node1:

(1).安裝keepalived

yum install keepalived -y

(2).配置keepalived

配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1
   vrrp_mcast_group4 224.1.101.23

}

#存在文件時,檢測成功,即執行降級;否則不存在,全部退出;實現服務器切換
vrrp_script chk_down{
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
    interval 1
    weight -10
    fall 1
    rize 1
}


#腳本,健康狀態檢測,檢測nginx是否存活
vrrp_script chk_nginx {   
    script "killall -0 nginx && exit 0 || exit 1"
    interval 1
    weight -10
    fall 1
    rise 1
}

vrrp_instance sr1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 96
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass rEiszbuO
    }
    virtual_ipaddress {
        192.168.42.182/24 dev ens33 label ens33:0
    }

    #腳本調用
    track_script {
        chk_down
        chk_nginx
    }

    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"

}

調用腳本notify.sh:

cd /etc/keepalived/
[root@centos703 keepalived]# vim notify.sh 
#!/bin/bash
#
contact='root@localhost'
notify() {
     mailsubject="vrrp:$(hostname) to be $1"
     mailbody="$(hostname) to be $1,vrrp transition, $(date)."
     echo "$mailbody" | mail -s "$mailsubject" $contact
}
    case $1 in
    master)
      notify master
      systemctl start nginx
      ;;
    backup)
      notify backup
      systemctl start nginx
      ;;
    fault)
      notify fault
      systemctl stop nginx
      ;;
    *)
      echo "Usage: $(basename $0) {master|backup|fault}"
      exit 1
      ;;
esac

6.node0,node1重新更改hosts解析

vim /etc/hosts
192.168.42.182  www.test.com
192.168.42.182  test.discuz.com

7.我們在node3,node4上是做了兩個虛擬主機,因此我們在負載均衡上也是要做兩個虛擬主機,并且需要把$host推送到后方的機器

test.conf 的內容如下:

server {
  listen 80;
  server_name www.test.com;
  location / {
        proxy_pass http://sshsrvs;
        proxy_set_header Host  $host;
        proxy_set_header X-Forwarded-For  $remote_addr;
        add_header X-Via  $server_addr;
        add_header X-Accel $server_name;

  }
}

discuz.conf的內容如下:

server {
  listen 80;
  server_name test.discuz.com;
  location / {
        proxy_pass http://sshsrvs;
        proxy_set_header Host  $host;
        proxy_set_header X-Forwarded-For  $remote_addr;
        add_header X-Via  $server_addr;
        add_header X-Accel $server_name;
  }
}

8.我們在瀏覽器中訪問www.test.com ,test.discuz.com
是兩個不同的網站記得在物理機需要做域名解析哦

原創文章,作者:srayban,如若轉載,請注明出處:http://www.www58058.com/78538

(0)
sraybansrayban
上一篇 2017-06-25
下一篇 2017-06-25

相關推薦

  • 數組、變量及bash的配置

    數組、變量及bash的配置 變量:存儲單個元素的內存空間 數組:存儲多個元素的內存空間,相當于多個變量集合 索引:編號從0開始,屬于數值索引,索引為自定義格式即為關聯數組(bash4.0之后支持) bash數組支持稀疏格式 數組的聲明 普通數組declare –a 關聯數組 declare –A 普通數組可以不聲明直接使用,關聯數組必須先聲明再使用 數組的賦…

    Linux干貨 2016-08-26
  • 馬哥linux運維網絡班第22期-第一周博客作業

    計算機的組成及其功能 計算機由運算器,控制器,存儲器,輸入裝置和輸出裝置組成 (1)運算器 對數據進行常規運算(+,-,*,/)和邏輯運算(與,或,非等)及比較位移等操作 (2)控制器 分析從存儲器中讀出的指令并按預先規定的步奏執行操作 (3)存儲器 存儲程序和數據信息并實現快速存取 (4)輸入設備 把各種類型的信息轉換為二進制編碼輸入進計算機存儲起來 (5…

    Linux干貨 2016-08-14
  • VIM命令 總結

    VIM命令總結

    2017-11-25
  • 馬哥教育網絡19期+第十五周課程練習

    1、總結sed和awk的詳細用法;   a).sed命令 sed可以實現grep的大部分功能,而且還可以查找替換 [root@localhost ~]# sed '10'p -n 1.txt [root@localhost ~]# sed &#039…

    Linux干貨 2016-08-22
  • select基本用法和軟件包管理

    一、select語句     select語句在腳本中用于創建菜單,按數字順序排列的菜單項顯示在標準輸出上,并用PS3提示符,等待用戶輸入。用戶輸入菜單中的某個數字,執行相應的命令,并被保存在內置變量REPLY中。 用法:     select NAME [in WORDS &#…

    Linux干貨 2016-08-21
  • Linux運維學習歷程-第九天-bash腳本初步了解

    概述:   本章重點在于講解bash腳本的基礎知識,為今后學習使用bash腳本打下基礎 一、bash基礎特性         程序:指令+數據             指令:由程序文件提供         &n…

    Linux干貨 2016-08-18
欧美性久久久久