1. 程式人生 > >Linux叢集之keepalive+Nginx

Linux叢集之keepalive+Nginx

叢集從功能實現上分高可用和負載均衡:

高可用叢集,即“HA"叢集,也常稱作“雙機熱備”。

當提供服務的機器宕機,備胎將接替繼續提供服務;

實現高可用的開源軟體有:heartbeat、keepalived。,keepalived還有負載均衡的功能。

核心原理都是通過心跳線連線兩臺伺服器,一臺用於提供服務,當這臺機子宕機了,另外一臺伺服器頂替。;

  1. 負載均衡叢集,需要有一臺伺服器作為分發器,它負責把使用者的請求分發給後端的伺服器處理,在這個叢集裡,除了分發器外,就是給使用者提供服務的伺服器了,這些伺服器數量至少為2臺,實現負載均衡的開源軟體有LVS、keepalived、haproxy、nginx,商業的有F5、Netscaler。

keepalivied工作原理:

keepalived通過VRRP(Virtual Router Redundancy Protocl,虛擬路由冗餘協議)來實現高可用。

  1. 它是實現路由高可用的一種通訊協議,在這個協議裡會將多臺功能相同的路由器組成一個小組,這個小組裡會有1個master角色和N(N>=1)個backup角色。
  2. master會通過組播的形式向各個backup傳送VRRP協議的資料包,當backup收不到master發來的VRRP資料包時,就會認為master宕機了。此時就需要根據各個backup的優先順序來決定誰成為新的mater。
  3. Keepalived要有三個模組,分別是core、check和vrrp。其中core模組為keepalived的核心,負責主程序的啟動、維護以及全域性配置檔案的載入和解析,check模組負責健康檢查,vrrp模組是來實現VRRP協議的。

環境: master:192.168.123.128 keepalive+Nginx

   backup:192.168.123.129 keepalive+Nginx

VIP(Virtual IP):192.168.123.100   虛擬IP;

nginx的安裝 在這裡就不說了,這裡主要說的不是這個;

安裝keepalive: 

yum install -y keepalived

修改配置檔案:

vim /etc/keepalived/keepalived.conf

keepalived.conf內容如下:

global_defs {
   notification_email {
     
1012447978@qq.com } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx{ script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass gys } virtual_ipaddress { 192.168.123.100 } track_script{ chk_nginx } }
View Code

自定義指令碼,監控Nginx服務:

vim /usr/local/sbin/check_ng.sh

check_ng.sh指令碼內容如下

#!/bin/bash
# 時間變數  用於記錄日誌
d=`date --date today +%Y%m%d_%H:%M:%S`
# 計算Nginx程序數量
n=`ps -C nginx --no-heading|wc -l`
# 如果程序為0,則啟動Nginx,並且再次檢測程序數量
# 如果還為0,說明Nginx無法啟動,此時需要關閉keepalived
if [ $n -eq "0" ]; then
     /etc/init.d/nginx start
     n2=`ps -C nginx --no-heading|wc -l`
     if [ $n2 -eq "0" ];then
             echo "$d nginx down,keepalived will stop">> /var/log/check_ng.log
             systemctl stop keepalived
     fi
fi
View Code

附權,否則keepalived無法呼叫

chmod 777 /usr/local/sbin/check_ng.sh

啟動keepalived

systemctl start keepalived

根據上面的配置檔案;如果本機的Nginx沒有啟動,keepalived啟動的時候會把Nginx拉起來。

檢視nginx是否起成功

ps -ef|grep nginx

檢視keepalived是否起成功

ps -ef|grep keepalived

Master配置完成後,129上配置backup;

vim /etc/keepalived/keepalived.conf

內容如下:

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx{
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}

vrrp_instance VI_1 {
    state backup
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass gys
    }
    virtual_ipaddress {
        192.168.123.100        
    }

    track_script{
        chk_nginx
    }
}
View Code

監控指令碼內容如下

#!/bin/bash
# 時間變數  用於記錄日誌
d=`date --date today +%Y%m%d_%H:%M:%S`
# 計算Nginx程序數量
n=`ps -C nginx --no-heading|wc -l`
# 如果程序為0,則啟動Nginx,並且再次檢測程序數量
# 如果還為0,說明Nginx無法啟動,此時需要關閉keepalived
if [ $n -eq "0" ]; then
     /etc/init.d/nginx start
     n2=`ps -C nginx --no-heading|wc -l`
     if [ $n2 -eq "0" ];then
             echo "$d nginx down,keepalived will stop">> /var/log/check_ng.log
             systemctl stop keepalived
     fi
fi
View Code

附權:

chmod 777 /usr/local/sbin/check_ng.sh

啟動keepalived

systemctl start keepalived

本例項中,可以模擬出master宕機後,訪問vip地址,可以過度到backup上,但是無法通過keepalived來拉起Nginx。

如果有人知道怎麼回事,麻煩告訴我一聲;

相關推薦

Linux叢集keepalive+Nginx

叢集從功能實現上分高可用和負載均衡: 高可用叢集,即“HA"叢集,也常稱作“雙機熱備”。 當提供服務的機器宕機,備胎將接替繼續提供服務; 實現高可用的開源軟體有:heartbeat、keepalived。,keepalived還有負載均衡的功能。 核心原理都是通過心跳線連線兩臺伺服器,一臺用於提供服務

Linux教程Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

php use 命令 端口 htm pos html dream targe Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 使用命令關閉占用80端口的程序 sudo fuser

Linux學習路-Nginx(1)介紹篇【22】---20180206

Nginx架構介紹 I/O介紹 一、Nginx介紹Nginx:engine X ,2002年,開源,商業版http協議:web服務器(類似於httpd)、http reverse proxy(類似於httpd)、imap/pop3 reverse proxy,tcpNGINX is a free, o

Linux學習路-Nginx(2)安裝及配置文件篇【23】---20180210

Nginx編譯 Nginx yum安裝 主配置文件分析 Core functionality分 一、Nginx的安裝方法及配置介紹1、yum安裝官方: http://nginx.org/packages/centos/7/x86_64/RPMSFedora-EPEL: http

Linux學習路-Nginx(4)模塊簡要介紹篇【27】---20180228

ngx_http_proxy_modu ngx_http_headers_mo ngx_http_fastcgi_mo 一、ngx_http_proxy_module模塊ngx_http_proxy_module轉發請求至另一臺主機1、proxy_pass URL;Context:location

Linux叢集、Keepalived—Nginx高可用叢集架構搭建

叢集介紹Linux叢集根據功能劃分為兩大類:高可用和負載均衡。高可用叢集高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。實現高可用的開源軟體有:heartbeat、Keepalived,其中heartbeat已無人維護,所

cool-2018-03-08-FastDFS叢集搭建+keepalive+nginx高可用

這裡以我搭建好的FastDFS叢集高可用+負載均衡的虛擬機器為例,下載地址:一、環境準備    centOS-6.6,VMware   8個節點,node22,node23,node25~node30;其中node22,node23作為keepalived+nginx高可用負

Linux開發Nginx安裝配置

linux運維 Nginx 扣丁學堂 雲計算 Nginx("engine x")是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高連接並發的情況下,Nginx是Apache服

Linux Nginx實戰】初識Nginx(一)

Nginx LNMP 實戰 1.Nginx是什麽? nginx是一款高性能的HTTP和反向代理服務器軟件,第一個開源版本誕生於2004年,雖然誕生較晚但經過十多年的發展,已經成為非常流行的web服務器軟件,下圖是w3techs公布的全球網站服務器軟件統計報告 2.Nginx為什麽流行? 首先,ng

Linux基礎命令練習Day7-nginx,nfs

調度 個數 等於 集群配置 大小設置 selinux VC In 及其 一. Nginx Nginx("engine x") 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Ramb

linux服務nginx-隨筆-2(nginx配置站點的三種方式)

三種方式: 1.域名  2.埠  3.IP 直接上配置檔案  一.域名  server { listen 80; server_name www.e

linux服務nginx-隨筆-5(利用狀態模組,顯示使用者訪問連線狀態資訊)

使用的是nginx的--with-http_stub_status_module   模組 一、創建出一個狀態模組的站點檔案 cat >>/application/nginx/c

Linux下MongoDB叢集建立並配置副本叢集

案例演示:一、在linux環境下,在一臺機器上建立3個節點,建立一個測試為目的的副本集1.首先建立3個不同的資料儲存資料夾[[email protected] db]# cd /usr/local/mongodb/data/db [[email prote

企業級Linux講座在SAN上建立高可靠性SAMBA叢集

  2、Install and setup Red Hat Cluster Manager      1) 安裝Red Hat 叢集管理員套件      用root 登入rhel3-1 安裝clumanager 與redhat-config-cluster 套件才能設定Red Hat 叢集管理員,將光碟收入光

Nginx+Tomcat搭建高效能負載均衡叢集枯藤老樹

--枯藤老樹昏鴉,小橋流水人家,古道西風瘦馬。夕陽西下,斷腸人      在天涯。 一、     工具   nginx-1.8.0   apache-tomcat-6.0.33 二、    目標   實現高效能負載均衡的Tomcat叢集:   

Nginx-反向代理伺服器】實踐篇(三)Tomcat+Nginx搭建叢集

繼前面的部落格,本篇部落格來實踐操作體會一下Nginx配置過程如下:(1)到Nginx官網下載Nginx的Windows版本:點選開啟連結(這裡我們使用nginx/Windows-1.4.7版本進行實驗

linux設定nginx域名轉發

    server_name www.imooc.com; // nginx的虛擬的域名    access_log /usr/local/nginx/logs/access.log combined; // log檔案的位置    index index.html index.htm index.jsp

java叢集redis sentinel、nginx、session共享配置詳解

說明 1、看此篇文章之前,你需要對spring 基礎,redis等相關技術基礎. 2、redis 服務端使用2主2從,分佈交叉部署至2臺伺服器,且分佈部署2臺tomcat web應用,兩臺伺服器分別部署2臺nginx來實現負載均衡。 3、你需要對叢集的概念有所

Linux服務 Nginx安裝

ins col devel path req .com prefix 日誌 make 安裝包下載: 鏈接:https://pan.baidu.com/s/1yna9nvT_9iYw4_0uVQRgFw 提取碼:nurm yum -y install gcc aut

我的Linux自學

記錄學習 作為一只菜鳥,並且沒有任何Linux的經驗,我從網上下載的視頻自學Linux。歡迎各位新手或大師指點,開通博客意在記錄自己學習的點滴。 由於項目在公安行業內,系統的版本無法跟現代的大型網後臺的系統版本相提並論。公安系統的版本大多停留在四五年前,因為是自學,下載的視頻也是四五年前的,所以後