1. 程式人生 > >配置nginx的負載均衡keepalived和nfs磁碟共享

配置nginx的負載均衡keepalived和nfs磁碟共享

環境說明

3臺虛擬機器CentOS 6.5 x86_64,安裝好hengdalnmp.zip (lnmp1.3)

主nginx負載均衡器:192.168.223.130  (通過keepalived配置了VIP:192.168.223.160供外使用)
副nginx負載均衡器:192.168.223.133(通過keepalived配置了VIP:192.168.223.160供外使用)

後端代理的web伺服器:
192.168.223.143:8112       (通過nfs 把專案目錄下的 storage共享)
192.168.223.133:18112     (通過nfs 共享192.168.223.143的專案目錄下的 storage)

1. 安裝部署NFS服務端(192.168.223.143)

Step-1:安裝nfs-utils和rpcbind,執行以下命令:
yum install -y nfs-utils rpcbind
Step-2:為NFS指定固定埠,執行以下命令:

vi /etc/sysconfig/nfs

搜尋和設定如下所示的埠配置:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004

Step-3:開放防火牆中的上述埠,執行以下命令:
iptables  -I INPUT -p tcp --dport 111 -j ACCEPTiptables  -I INPUT -p udp --dport 111 -j ACCEPTiptables  -I INPUT -p tcp --dport 2049 -j ACCEPTiptables  -I INPUT -p udp --dport 2049 -j ACCEPTiptables  -I INPUT -p tcp --dport 30001:30004 -j ACCEPTiptables  -I INPUT -p udp --dport 30001:30004 -j ACCEPTservice iptables saveservice iptables restart

Step-4:設定SELinux為許可狀態,執行以下命令:

vi /etc/selinux/config

將上述檔案中的
SELINUX=enforcing
替換為
SELINUX=permissive

儲存上述檔案之後,執行以下命令:
setenforce 0

Step-5:建立共享目錄,執行以下命令:

mkdir -p /home/www/wwwroot/cjcbwg/storage

上述命令將建立共享目錄/home/www/wwwroot/cjcbwg/storage。

Step-6:配置exports檔案,執行以下命令:

vi /etc/exports

在上述檔案的末尾新增一行,如下所示:
/home/www/wwwroot/cjcbwg/storage 192.168.223.133(rw,sync,no_root_squash)
/home/www/wwwroot/cjcbwg/storage *(ro)

這一行表示只有192.168.223.133客戶端能夠以讀寫許可權掛載共享目錄,其他客戶端只能以只讀許可權掛載。

Step-7:啟動NFS相關服務,執行以下命令:
chkconfig nfs on
chkconfig rpcbind on
service rpcbind start
service nfs start
Step-8:檢查NFS的相關埠是否已經啟用,執行以下命令:
service iptables status
rpcinfo -p localhost

接著部署陳家祠專案 於 /home/www/wwwroot/cjcbwg

2. 安裝部署NFS客戶端(192.168.223.133)

NFS客戶端不需要啟動NFS服務,但需要安裝nfs-utils,執行以下命令:
yum install -y nfs-utils
Step-1:確定掛載點,執行以下命令:

showmount -e 192.168.223.143

-e選項顯示NFS服務端的匯出列表。

Step-2:建立掛載目錄,執行以下命令:

mkdir -p /home/www/wwwroot/cjcbwg/storage

其中,/home/www/wwwroot/cjcbwg/storage為共享目錄的掛載點目錄。

Step-3:掛載共享目錄,執行以下命令:

mount -t nfs 192.168.223.143:/home/www/wwwroot/cjcbwg/storage /home/www/wwwroot/cjcbwg/storage

其中,-t選項用於指定檔案系統的型別為nfs。

Step-4:共享目錄使用結束之後,解除安裝共享目錄,執行以下命令:
umount /home/www/wwwroot/cjcbwg/storage
開機自動掛載向fstab檔案中新增共享目錄的掛載條目,即可實現開機自動掛載,但是隨後與NFS服務端的連線將始終處於活動狀態。執行以下命令:
mkdir -p /home/www/wwwroot/cjcbwg/storage
vi /etc/fstab在上述檔案末尾加入共享目錄的掛載條目,如下所示:
192.168.223.143:/home/www/wwwroot/cjcbwg/storage /home/www/wwwroot/cjcbwg/storage nfs defaults 0 0
其中,第5個欄位設定為0表示共享目錄的檔案系統不需要使用dump命令進行轉儲,第6個欄位設定為0表示共享目錄的檔案系統不需要使用fsck命令進行檢查。
 接著部署陳家祠專案 於 /home/www/wwwroot/cjcbwg

3. 配置nginx反向代理(192.168.223.130,192.168.223.133)

nginx.conf

在http{}內配置

upstream cjcbwgs {  
		server 192.168.223.143:8112;
		server 192.168.223.133:18112;  
		ip_hash;
	} 

server
    {
        listen 8112 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name www.cjcbwg160.com;
        location / {

		proxy_pass   http://cjcbwgs;
		proxy_set_header Host $host:$server_port; 
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        } 

    }

4. 安裝部署keepalived(主192.168.223.130,從192.168.223.133)

-------------------------主從都安裝keepalived 設定vrrp------------------------------------------

yum install curl gcc openssl-devel libnl3-devel net-snmp-devel

yum install keepalived

chkconfig keepalived on

開機自動
vim /etc/sysconfig/iptables

新增
-A INPUT -d 192.168.223.160/32 -j ACCEPT
-A INPUT -d 224.0.0.18 -j ACCEPT
-A INPUT -p vrrp -j ACCEPT

重啟iptables service iptables restart

-------------------------主從都安裝keepalived 設定vrrp------------------------------------------

-------------------------主keepalived伺服器------------------------------------------
拷貝3個檔案(底部附件)
keepalived.conf.master
check_nginx.sh
notify.sh
到/etc/keepalived下

keepalived.conf.master重新命名成 keepalived.conf

chmod +x /etc/keepalived/check_nginx.sh
chmod +x /etc/keepalived/notify.sh

如果需要修改3個檔案裡的IP (演示拿虛擬機器Ip演示的)
-------------------------主keepalived伺服器------------------------------------------

-------------------------從keepalived伺服器------------------------------------------
拷貝3個檔案(底部附件)
keepalived.conf.backup
check_nginx.sh
notify.sh
到/etc/keepalived下

keepalived.conf.backup重新命名成 keepalived.conf

chmod +x /etc/keepalived/check_nginx.sh
chmod +x /etc/keepalived/notify.sh

如果需要修改3個檔案裡的IP (演示拿虛擬機器Ip演示的)
-------------------------從keepalived伺服器------------------------------------------

最後主從都重啟,測試是否配置成功

如果附件地址失效的話,可以去碼雲git庫裡找

nginx.conf

user  www www;

worker_processes auto;

error_log  /home/www/wwwlogs/nginx_error.log  info;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
        default_type  application/octet-stream;

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

        server_tokens off;
        access_log off;
		
		
	upstream webservers {  
		server 192.168.223.143:80;  
		server 192.168.223.133:80;
		#ip_hash;
	}  

	upstream cjcbwgs {  
		server 192.168.223.143:8112;
		server 192.168.223.133:18112;  
		ip_hash;
	} 

server
    {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name www.hengdawb.com;
        location / {  
            proxy_pass   http://webservers;  
        } 

    }

server
    {
        listen 8112 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name www.cjcbwg160.com;
        location / {

		proxy_pass   http://cjcbwgs;
		proxy_set_header Host $host:$server_port; 
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        } 

    }

include vhost/*.conf;
}

keepalived.conf.master

#ConfigurationFile for keepalived  
global_defs {  
	notification_email {                        ######定義接受郵件的郵箱  
		 [email protected]  
	}  
	notification_email_from [email protected]    ######定義傳送郵件的郵箱  
	smtp_server mail.qq.com  
	smtp_connect_timeout 10  
}

  
vrrp_script check_nginx {                   ######定義監控nginx的指令碼  
	script "/etc/keepalived/check_nginx.sh"  
	interval 2                            ######監控時間間隔  
	weight 2                              ######負載引數  
}  

vrrp_instance vrrptest {                 ######定義vrrptest例項  
	state MASTER               ######伺服器狀態  
	interface eth0                     ######使用的介面  
	virtual_router_id 51               ######虛擬路由的標誌,一組lvs的虛擬路由標識必須相同,這樣才能切換  
	priority 100                      ######服務啟動優先順序,值越大,優先順序越高,BACKUP 不能大於MASTER  
	
	unicast_src_ip  192.168.223.130         ##source ip
	unicast_peer {
		        192.168.223.133               ##dest ip
	}
	
	advert_int 1                        ######伺服器之間的存活檢查時間  
	authentication {  
		auth_type PASS                     ######認證型別  
		auth_pass lvshuo       ######認證密碼,一組lvs 伺服器的認證密碼必須一致  
	}  
	track_script {                              ######執行監控nginx程序的指令碼  
		check_nginx  
	}  
	virtual_ipaddress {                         ######虛擬IP地址  
		192.168.223.160  
	} 
	

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

keepalived.conf.backup

#ConfigurationFile for keepalived  
global_defs {  
	notification_email {                        ######定義接受郵件的郵箱  
		 [email protected]  
	}  
	notification_email_from [email protected]    ######定義傳送郵件的郵箱  
	smtp_server mail.qq.com  
	smtp_connect_timeout 10     
}

  
vrrp_script check_nginx {                   ######定義監控nginx的指令碼  
	script "/etc/keepalived/check_nginx.sh"  
	interval 2                            ######監控時間間隔  
	weight 2                              ######負載引數  
}  

vrrp_instance vrrptest {                 ######定義vrrptest例項  
	state BACKUP               ######伺服器狀態  
	interface eth0                     ######使用的介面  
	virtual_router_id 51               ######虛擬路由的標誌,一組lvs的虛擬路由標識必須相同,這樣才能切換  
	priority 90                      ######服務啟動優先順序,值越大,優先順序越高,BACKUP 不能大於MASTER  
	
	unicast_src_ip  192.168.223.133         ##source ip
	unicast_peer {
		        192.168.223.130               ##dest ip
	}
	
	advert_int 1                        ######伺服器之間的存活檢查時間  
	authentication {  
		auth_type PASS                     ######認證型別  
		auth_pass lvshuo       ######認證密碼,一組lvs 伺服器的認證密碼必須一致  
	}  
	track_script {                              ######執行監控nginx程序的指令碼  
		check_nginx  
	}  
	virtual_ipaddress {                         ######虛擬IP地址  
		192.168.223.160  
	}
	
	
	notify_master "/etc/keepalived/notify.sh master"  
	notify_backup "/etc/keepalived/notify.sh backup"  
	notify_fault "/etc/keepalived/notify.sh fault" 
}

check_nginx.sh

if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]  
 then  
    /etc/init.d/keepalived stop  
 else  
    echo "nginx is running"  
fi 

notify.sh

#!/bin/bash
# Author: lvshuo <[email protected]>
# description: An example of notify script
# 

#get ip
hostip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`

[email protected]
subject='Keepalived Notification'



notify() {
   curl -s -o /dev/null "http://47.93.81.30:5678/api/users/send_email?p=t&email=$email&subject=$subject&content=$content"
}

case $1 in
    master)
	content="$hostip switch master"
        notify content
        exit 0
    ;;
    backup)
        content="$hostip switch backup"
        notify content
        exit 0
    ;;
    fault)
        content="$hostip has fault"
        notify content
        exit 0
    ;;
    *)
        echo 'Usage: `basename $0` {master|backup|fault}'
        exit 1
    ;;
esac

相關推薦

配置nginx負載均衡keepalivednfs磁碟共享

環境說明3臺虛擬機器CentOS 6.5 x86_64,安裝好hengdalnmp.zip (lnmp1.3)主nginx負載均衡器:192.168.223.130  (通過keepalived配置了VIP:192.168.223.160供外使用) 副nginx負載均衡器:1

[轉載]nginx負載均衡+keepalived三主(多主)配置

rtu bucket 次數 with 信息 .gz plain int x86_64 nginx負載均衡+keepalived三主(多主)配置 1.實驗環境,實現目標三臺主機分別配置nginx負載均衡對後端多臺主機做轉發,同時配置keepalived實現HA,保證任意主機出

Nginx負載均衡+Keepalived高可用集群

check list proxy www alived 編譯安裝nginx efi class request 一、搭建環境及軟件版本 負載均衡:Nginx 高可用:Keepalived Linux:Centos 6.5 Nginx:nginx-1.6.2 Keepaliv

Nginx負載均衡+keepalived高可用

_id htm ins oba web服務器 介紹 rtu netstat 相對 註:環境介紹:VMware環境下4臺虛擬機 兩臺做負載均衡服務器 兩臺做realserver (模擬物理web服務器)1 配置keepalived實現nginx負載均衡高可用,keepali

Linux配置Nginx負載均衡

首先先了解下負載均衡,假設一個場景,如果有1000個客戶同時訪問你伺服器時,而你只有一臺伺服器的Nginx,且只有一個MySQL伺服器,那麼這些請求可能會高出你的的伺服器承受能力,就會down掉。 解決方法: 1.垂直升級:就是增加伺服器的配置,CPU,記憶體等 2.水平升級:新增多臺伺

centos下從零配置nginx(負載均衡)

centos下從零配置nginx(負載均衡) nginx下載安裝 先下載依賴環境,不然裝不上 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-

docker上配置nginx負載均衡

name ash bash send listen buffer erro lan catalina 采用ubuntu系統,docker安裝自行百度 1.安裝tomcat docker run -d -p 8088:8080 tomcat docker run -

三、netcore跨平臺之 Linux配置nginx負載均衡

前面兩章講了netcore在linux上部署以及配置nginx,並讓nginx代理webapi。 這一章主要講如何配置負載均衡,有些步驟在前兩章講的很詳細了,所以這一章我就不會一個個截圖了。 因為本人只有一個伺服器。所以我會在同一臺伺服器上部署兩套差不多的例項。 同樣的程式碼,我們在Program.cs

(三)配置nginx負載tomcat,redis解決session共享

Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的。 何為反向代理呢?即以代理伺服器來接受internet上的連線請求,然後將請

Nginx負載均衡,同時實現session共享

前言: 在專案實踐中,有時我們需要多臺伺服器進行負載,以擴充套件伺服器的寬頻、增加吞吐量和提高網路資料的處理能力,從而提高使用者的體驗感,保證專案的質量。當一個專案部署在多臺伺服器上,我們習慣於使用nginx做負載均衡,這樣同一個IP訪問專案的時候會被自動分配到不同的伺服器上; 但是,如

nginx 負載均衡個伺服器之間檔案共享

負載均衡----檔案服務策略 上回我提到的這麼多伺服器,他們共同需要的檔案從哪裡來? 那麼我們就需要檔案伺服器,檔案伺服器從哪裡來,我們先看圖瞭解下:                                                   圖1 ------------------

基於nginxtengine的tcp反向代理,負載均衡 安裝配置

zip http 端口 arc -s pro 進入 iteye obj 先下載nginx_tcp_proxy_module模塊。 wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/mast

93.Nginx配置負載均衡SSL配置

Nginx配置:負載均衡和SSL配置一、負載均衡 負載均衡在服務端開發中算是一個比較重要的特性。因為Nginx除了作為常規的Web服務器外,還會被大規模的用於反向代理前端,因為Nginx的異步框架可以處理很大的並發請求,把這些並發請求hold住之後就可以分發給後臺服務端(backend servers,也叫做

Nginx負載均衡配置+keepalived高可用

1.什麼是負載均衡?隨著應用各個核心模組業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提升時,這又將導致再一次硬體升級的高額成本投入,甚至效能再

多tomcat服務nginx負載均衡配置 linux 配置多個tomcat

1、nginx服務安裝及配置,詳見:linux 配置之安裝nginx 2、多個tomcat服務安裝及配置,詳見:linux 配置多個tomcat 3、關鍵配置nginx.conf檔案 http { include /etc/nginx/mime.types;

Nginx配置負載均衡、限流、快取、黑名單灰度釋出

一、Nginx安裝(基於CentOS 6.5) 1.yum命令安裝 yum install nginx –y (若不能安裝,執行命令yum install epel-release) 2. 啟動、停止和重啟 service nginx start service nginx stop

linux 1.3 nginx 負載均衡配置檔案

今日內容 nginx 1.編譯安裝配置完成 /opt/nginx11/html/index.html 這是網頁的首頁檔案 nginx.conf主配置檔案學習 如下 worker_processes 4; nginx工作程序數,根據cpu的核數定義 events { worker_connection

Nginx負載均衡NFS配置

Nginx配置 首先在兩臺伺服器上部署同一個專案,例如下: 測試網站節點1: http://192.168.168.61/nfstest/ 測試網站節點2: http://192.168.64.145/nfstest/ 在主站進行nginx配置 upstream nfstest { server 19

nginx負載均衡的一些問題具體配置

對於伺服器叢集的搭建,nginx負載均衡是很好的方式:思路如下圖 這裡的session採用了session共享的方式,這樣來避免一些情況下的session丟失。下面我會具體說到。 session丟失:是因為檔案儲存session的方式會把session儲存到當前伺服器中,

nginx負載均衡配置PHP-FPM

PHP開發基本上都知道兩種執行環境,分別是LNMP和LAMP。區別主要在N和A上,當然從細節上來區分,兩個P也有不一樣的地方。不談之前的淺淡理解,最近一個專案上要配合進行PHP伺服器指向的切換。發現A伺服器上安裝了apache,B伺服器上安裝了nginx,每次請求B伺服器的n