“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 21:39
下一篇 2017-06-25 23:25

相關推薦

  • N25第8周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;      不在線的主使用紅色顯示; #!/bin/bash ipnet=172.20.51. trap ‘trap_action’ INT trap…

    Linux干貨 2017-02-22
  • linux系統自動安裝之PXE

    PXE(集成在網卡上的)預啟動執行環境 (能夠通過網絡實現操作系統安裝) PXE工作原理1、Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一并傳送給Client2、Client向P…

    2018-01-16
  • 數據結構知識點(list,tuple,冒泡法)

    分類 數值型 int、float、complex、bool 序列對象 字符串str、列表list、tuple 鍵值對 集合set、字典dict 數值型 complex:有實數和虛數部分組成 float:有整數和小數組成。只有雙精度 類型轉換 int(X) 返回一個整數 float(x) 返回一個浮點數 complex(x)、complex(x,y) 返回一個…

    2017-09-25
  • 組建RAID5重啟系統,出現md127的解決辦法

        我這里在組建RAID5之后重啟了系統,當時/dev/md0變成了/dev/md127。出現這問題主要是我沒有配置生成/etc/mdadm.conf文件,如果哪位伙伴出現類似我這種情況,而不是通過我這種方法解決的,希望能分享一下你的解決方法,謝謝。  先停止md127 [root@client3&nbs…

    Linux干貨 2016-01-05
  • Linux用戶和組的相關管理命令(一、用戶的相關命令)

    Linux是一個可以實現多用戶登錄的操作系統,通過su – 用戶名 可以進行用戶之間的切換,從而完成不同登錄用戶下對私有文件的操作,同時,每個用戶有且只有一個主組,但是可以有零個或多個附加組,每個組可以是一個用戶的主組,同時還可以是多個用戶的附加組。因此,熟練掌握用戶和組的相關命令十分重要。 首先,要了解用戶和組的配置文件各有兩個: 與用戶相關的…

    2017-07-22
  • 簡單shell腳本編程示例

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 腳本內容: 執行結果: 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中 腳本內容: 執行結果: 3、編寫腳本/roo…

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