配置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 |
vi /etc/sysconfig/nfs 搜尋和設定如下所示的埠配置: |
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 將上述檔案中的 儲存上述檔案之後,執行以下命令: |
mkdir -p /home/www/wwwroot/cjcbwg/storage 上述命令將建立共享目錄/home/www/wwwroot/cjcbwg/storage。 |
vi /etc/exports 在上述檔案的末尾新增一行,如下所示: 這一行表示只有192.168.223.133客戶端能夠以讀寫許可權掛載共享目錄,其他客戶端只能以只讀許可權掛載。 |
chkconfig nfs on chkconfig rpcbind on service rpcbind start service nfs start |
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 |
showmount -e 192.168.223.143 -e選項顯示NFS服務端的匯出列表。 |
mkdir -p /home/www/wwwroot/cjcbwg/storage 其中,/home/www/wwwroot/cjcbwg/storage為共享目錄的掛載點目錄。 |
mount -t nfs 192.168.223.143:/home/www/wwwroot/cjcbwg/storage /home/www/wwwroot/cjcbwg/storage 其中,-t選項用於指定檔案系統的型別為nfs。 |
umount /home/www/wwwroot/cjcbwg/storage |
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命令進行檢查。 |
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的負載均衡keepalived和nfs磁碟共享
環境說明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 ------------------
基於nginx和tengine的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