1.軟件環境
CentOS6.5
FastDFS v5.05
libfastcommon- - master.zip(是從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫)
fastdfs- - nginx- - module_v1.16.tar.gz
nginx- - 1.6.2.tar.gz
fastdfs_client_java._v1.25.tar.gz
2.FastDFS集群規划
描述 |
IP地址 |
虛擬機名稱 |
用戶名 |
分組 |
跟蹤服務器1 |
192.168.1.170 |
tracker01_170 |
tracker01 |
|
跟蹤服務器2 |
192.168.1.180 |
tracker02_180 |
tracker02 |
|
存儲服務器1 |
192.168.1.171 |
storage01_g1_171 |
storage01 |
group1 |
存儲服務器2 |
192.168.1.172 |
storage02_g1_172 |
storage02 |
group1 |
存儲服務器3 |
192.168.1.173 |
storage03_g2_173 |
storage03 |
group2 |
存儲服務器4 |
192.168.1.174 |
storage04_g2_174 |
storage04 |
group2 |
存儲服務器5 |
192.168.1.175 |
storage05_g3_175 |
storage05 |
group3 |
存儲服務器6 |
192.168.1.176 |
storage06_g3_176 |
storage06 |
group3 |
1.FastDFS安裝(所有tracker服務器和storage服務器均有如下操作)
1.1 編譯和安裝所需的依賴包
# yum install make cmake gcc gcc-c++
1.2 安裝libfastcommon
1.2.1上傳或下載 libfastcommon-master.zip 到/usr/local/src目錄,解壓
# cd /usr/local/src/
# unzip libfastcommon-master.zip
# cd libfastcommon-master
1.2.2編譯和安裝
# ./make.sh
# ./make.sh install
libfastcommon 默認安裝到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so
1.2.3因為 FastDFS 主程序設置的 lib 目錄是/usr/local/lib,所以需要創建軟鏈接
# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
1.3安裝 FastDFS
1.3.1上傳或下載 FastDFS 源碼包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目錄,解壓
# cd /usr/local/src/
# tar -zxvf FastDFS_v5.05.tar.gz
# cd FastDFS
1.3.2編譯、安裝(編譯前要確保已經成功安裝了 libfastcommon)
# ./make.sh
# ./make.sh install
采用默認安裝的方式安裝,安裝后的相應文件與目錄:
A、服務腳本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
B、配置文件在(樣例配置文件):
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
C、命令工具在/usr/bin/目錄下的:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh
1.3.3因為 FastDFS 服務腳本設置的 bin 目錄是/usr/local/bin,但實際命令安裝在/usr/bin,可以進入/user/bin 目錄使用以下命令查看 fdfs 的相關命令:
# cd /usr/bin/
# ls | grep fdfs
因此需要修改 FastDFS 服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker 兩個腳本中的/usr/local/bin 修改成/usr/bin:
# vi /etc/init.d/fdfs_trackerd
使用查找替換命令進統一修改::%s+/usr/local/bin+/usr/bin
# vi /etc/init.d/fdfs_storaged
使用查找替換命令進統一修改::%s+/usr/local/bin+/usr/bin
2. 配置FastDFS跟蹤器Tracker(192.168.1.170,192.168.1.180)
2.1復制 FastDFS 跟蹤器樣例配置文件,並重命名
# cd /etc/fdfs/
# cp tracker.conf.sample tracker.conf
2.2編輯跟蹤器配置文件
# vi /etc/fdfs/tracker.conf
修改的內容如下:
disabled=false #啟用配置文件
port=22122 #tracker 的端口號,一般采用 22122 這個默認端口
base_path=/fastdfs/tracker #tracker 的數據文件和日志目錄
# the method of selecting group to upload files
# 0: round robin
# 1: specify group
# 2: load balance, select the max free space group to upload file
store_lookup=0(采取輪巡方式選擇要上傳的組進行存儲,默認2 選擇最大空閑空間的組)
(其它參數保留默認配置,附跟蹤器配置文件/conf/tracker.conf)
2.3創建基礎數據目錄(參考基礎目錄 base_path 配置)
# mkdir -p /fastdfs/tracker
2.4防火牆中打開跟蹤器端口(默認為 22122)
# vi /etc/sysconfig/iptables
添加如下端口行:
## FastDFS Tracker Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重啟防火牆:
# service iptables restart
2.5啟動 Tracker
# /etc/init.d/fdfs_trackerd start
(初次成功啟動,會在/fastdfs/tracker 目錄下創建 data、logs 兩個目錄)可以通過以下兩個方法查看 tracker 是否啟動成功:
2.5.1查看 22122 端口監聽情況
# netstat -unltp|grep fdfs
2.5.2 通過以下命令查看 tracker 的啟動日志,看是否有錯誤
# tail -100f /fastdfs/tracker/logs/trackerd.log
2.6關閉 Tracker
# /etc/init.d/fdfs_trackerd stop
2.7設置 FastDFS 跟蹤器開機啟動
# vi /etc/rc.d/rc.local
添加以下內容:
## FastDFS Tracker
/etc/init.d/fdfs_trackerd start
3.配置FastDFS存儲(192.168.1.171 ~ 176)
3.1復制 FastDFS 存儲器樣例配置文件,並重命名
# cd /etc/fdfs/
# cp storage.conf.sample storage.conf
3.2編輯存儲器樣例配置文件
# vi /etc/fdfs/storage.conf
修改的內容如下:
disabled=false #啟用配置文件
group_name=group1 #組名(第一組為 group1,第二組為 group2)
port=23000 #storage 的端口號,同一個組的 storage 端口號必須相同
base_path=/fastdfs/storage #設置 storage 的日志目錄
store_path0=/fastdfs/storage #存儲路徑
store_path_count=1 #存儲路徑個數,需要和 store_path 個數匹配
tracker_server=192.168.1.170:22122 #tracker 服務器的 IP 地址和端口
tracker_server=192.168.1.180:22122 #多個 tracker 直接添加多條配置
http.server_port=8888 #設置 http 端口號
(其它參數保留默認配置,附存儲節點配置文件/conf/storage.conf)
3.3創建基礎數據目錄(參考基礎目錄 base_path 配置)
# mkdir -p /fastdfs/storage
3.4防火牆中打開存儲器端口(默認為 23000)
# vi /etc/sysconfig/iptables
添加如下端口行:
## FastDFS Storage Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重啟防火牆:
# service iptables restart
3.5啟動 Storage
# /etc/init.d/fdfs_storaged start
(初次成功啟動,會在/fastdfs/storage 目錄下創建數據目錄 data 和日志目錄 logs)
各節點啟動動,使用 tail -f /fastdfs/storage/logs/storaged.log 命令監聽存儲節點日志,可以
看到存儲節點鏈接到跟蹤器,並提示哪一個為 leader 跟蹤器。同時也會看到同一組中的其他節點加入
進來的日志信息。
查看 23000 端口監聽情況:
# netstat -unltp|grep fdfs
所有 Storage 節點都啟動之后,可以在任一 Storage 節點上使用如下命令查看集群信息:
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
3.6關閉storage
# /etc/init.d/fdfs_storaged stop
3.7設置storage開機啟動
# vi /etc/rc.d/rc.local
添加:
## FastDFS Storage
/etc/init.d/fdfs_storaged start
4.文件上傳測試(192.168.1.170)
4.1修改 Tracker 服務器中的客戶端配置文件
# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
# vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=192.168.1.170:22122
tracker_server=192.168.1.180:22122
4.2Xftp5上傳test.png到192.168.1.170目錄/usr/local/src/,用作上傳測試
FastDFS上傳命令如下:
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/test.png
group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
能返回文件ID號,說明上傳成功。
在group2下(173和174)的數據目錄下可找到剛才上傳的文件:
# ll /fastdfs/storage/data/00/00/
5.在各個存儲節點上安裝Nginx(192.168.1.171 ~ 176)
5.1fastdfs-nginx-module 作用說明
FastDFS 通過 Tracker 服務器,將文件放在 Storage 服務器存儲,但是同組存儲服務器之間需要進入文件復制,有同步延遲的問題。假設 Tracker 服務器將文件上傳到了 192.168.1.135,上傳成功后文件 ID已經返回給客戶端。此時 FastDFS 存儲集群機制會將這個文件同步到同組存儲 192.168.1.136,在文件還沒有復制完成的情況下,客戶端如果用這個文件 ID 在 192.168.1.136 上取文件,就會出現文件無法訪問的錯誤。而 fastdfs-nginx-module 可以重定向文件連接到源服務器取文件,避免客戶端由於復制延遲導致的文件無法訪問錯誤。(解壓后的 fastdfs-nginx-module 在 nginx 安裝時使用)
5.2上傳 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src,解壓
# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
5.3修改 fastdfs-nginx-module 的 config 配置文件
# vi /usr/local/src/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改為:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
(注意:這個路徑修改是很重要的,不然在 nginx 編譯的時候會報錯的)
5.4上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄
5.5安裝編譯 Nginx 所需的依賴包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
5.6編譯安裝 Nginx(添加 fastdfs-nginx-module 模塊)
# cd /usr/local/src/
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
# make && make install
5.7復制 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄,並修改
# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf
5.7.1第一組 Storage 的 mod_fastdfs.conf 配置如下
connect_timeout=10
base_path=/tmp
tracker_server=192.168.1.170:22122
tracker_server=192.168.1.180:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/fastdfs/storage
group_count = 3
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
5.7.2第二組 Storage 的 mod_fastdfs.conf 配置與第一組配置只有 group_name 不同
group_name=group2
5.7.3第三組 Storage 的 mod_fastdfs.conf 配置與第一組配置只有 group_name 不同
group_name=group3
(附配置文件/conf/mod_fastdfs.conf)
5.8復制 FastDFS 的部分配置文件到/etc/fdfs 目錄
# cd /usr/local/src/FastDFS/conf
# cp http.conf mime.types /etc/fdfs/
5.9在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄
# ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
5.10配置 Nginx,簡潔版 nginx 配置樣例
# vi /usr/local/nginx/conf/nginx.conf
部分配置如下:
user storage01;
server {
listen 8888;
server_name localhost;
location /group1/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
(附配置文件/conf/storage_nginx/nginx.conf)
注意、說明:
A、8888 端口值是要與/etc/fdfs/storage.conf 中的 http.server_port=8888 相對應,
因為 http.server_port 默認為 8888,如果想改成 80,則要對應修改過來。
B、Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx,
對應的 Nginx 配置為:
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
C、如查下載時如發現老報 404,將 nginx.conf 第一行 user nobody 修改為 user root 后重新啟動。
5.11防火牆中打開 Nginx 的 8888 端口
# vi /etc/sysconfig/iptables
添加:
## Nginx Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
重啟防火牆: # service iptables restart
5.12啟動 Nginx
# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx
(重啟 Nginx 的命令為:/usr/local/nginx/sbin/nginx -s reload)
5.13設置Nginx開機啟動
# vi /etc/rc.local
加入:
## Nginx
/usr/local/nginx/sbin/nginx
5.14通過瀏覽器訪問測試時上傳的文件
http://192.168.1.173:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
http://192.168.1.184:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
6.在跟蹤器上安裝Nginx(192.168.1.170,192.168.1.180)
6.1在 tracker 上安裝的 nginx 主要為了提供 http 訪問的反向代理、負載均衡以及緩存服務
6.2安裝編譯 Nginx 所需的依賴包
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
6.3上傳 ngx_cache_purge-2.3.tar.gz 到/usr/local/src,解壓
# cd /usr/local/src/
# tar -zxvf ngx_cache_purge-2.3.tar.gz
6.4上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄
6.5編譯安裝 Nginx(添加 ngx_cache_purge 模塊)
# cd /usr/local/src/
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3
# make && make install
6.6配置 Nginx,設置負載均衡以及緩存
# vi /usr/local/nginx/conf/nginx.conf
部分配置如下:
user tracker01;
events {
worker_connections 1024;
use epoll;
}
http {
#設置緩存
。。。。
#設置緩存存儲路徑、存儲方式、分配內存大小、磁盤最大空間、緩存期限
。。。。
#設置 group1 的服務器
upstream fdfs_group1 {
server 192.168.1.171:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.172:8888 weight=1 max_fails=2 fail_timeout=30s;
}
#group2
#group3
server{
listen 8000;
server_name localhost;
#設置 group 的負載均衡參數
location /group1/M00 {
proxy_pass http://fdfs_group1;
。。。。
}
#group2
#group3
#設置清除緩存的訪問權限
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.1.111;
allow 192.168.1.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
}
}
(附配置文件/conf/tracker_nginx/nginx.conf)
6.7按以上 nginx 配置文件的要求,創建對應的緩存目錄
# mkdir -p /fastdfs/cache/nginx/proxy_cache
# mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp
6.8系統防火牆打開對應的端口
# vi /etc/sysconfig/iptables
## Nginx
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
重啟防火牆
# service iptables restart
6.9啟動 Nginx
# /usr/local/nginx/sbin/nginx
6.10重啟 Nginx
# /usr/local/nginx/sbin/nginx -s reload
6.11設置 Nginx 開機啟動
# vi /etc/rc.local
加入:
## Nginx
/usr/local/nginx/sbin/nginx
6.12文件訪問測試
http://192.168.1.170:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
http://192.168.1.180:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
以上是最間配置,多次測試可以發現,每一個 Tracker 中的 Nginx 都單獨對后端的 Storage 組做了負載均衡,但整套 FastDFS 集群如果想對外提供統一的文件訪問地址,還需要對兩個 Tracker 中的 Nginx 進行 HA 集群。
=======================================Keepalived+Nginx實現高可用Web負載均衡==========================================
一.所需安裝包
keepalived-1.2.18.tar.gz
二.方案規划
VIP |
IP |
主機名 |
Nginx端口 |
默認主從 |
192.168.1.77 |
192.168.1.170 |
tracker01 |
8000 |
MASTER |
192.168.1.180 |
tracker02 |
8000 |
BACKUP |
3.本文檔操作是在FastDFS安裝並完成基礎配置之后,故Nginx均已安裝完畢。直接開始Keepalived開始配置
1.安裝Keepalived(192.168.1.170, 192.168.1.180)
1.1上傳或下載 keepalived(keepalived-1.2.18.tar.gz)到 /usr/local/src 目錄
1.2解壓安裝
# cd /usr/local/src
# tar -zxvf keepalived-1.2.18.tar.gz
# cd keepalived-1.2.18
# ./configure --prefix=/usr/local/keepalived
# make && make install
備注:編譯可能報錯
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files.
解決:yum -y install openssl-devel
1.3將 keepalived 安裝成 Linux 系統服務
因為沒有使用 keepalived 的默認路徑安裝(默認是/usr/local),安裝完成之后,需要做一些工作
復制默認配置文件到默認路徑
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
復制 keepalived 服務腳本到默認的地址
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
設置 keepalived 服務開機啟動
# chkconfig keepalived on
1.4修改 Keepalived 配置文件
# vi /etc/keepalived/keepalived.conf
1.4.1 MASTER 節點配置文件(192.168.1.170)
! Configuration File for keepalived
global_defs {
## keepalived 自帶的郵件提醒需要開啟 sendmail 服務。建議用獨立的監控或第三方 SMTP
router_id tracker01 ## 標識本節點的字條串,通常為 hostname
}
## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。如果腳本執行結果為 0,並且 weight 配置的值大於 0,則優先級相應的增加。如果腳本執行結果非 0,並且 weight配置的值小於 0,則優先級相應的減少。其他情況,維持原本配置的優先級,即配置文件中 priority 對應的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑
interval 2 ## 檢測時間間隔
weight -20 ## 如果條件成立,權重-20
}
## 定義虛擬路由,VI_1 為虛擬路由的標示符,自己定義名稱
vrrp_instance VI_1 {
state MASTER ## 主節點為 MASTER,對應的備份節點為 BACKUP
interface eth1 ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同,我的是 eth1
virtual_router_id 170 ## 虛擬路由的 ID 號,兩個節點設置必須一樣,可選 IP 最后一段使用, 相同的 VRID 為一個組,他將決定多播的 MAC 地址
mcast_src_ip 192.168.1.170 ## 本機 IP 地址
priority 100 ## 節點優先級,值范圍 0-254,MASTER 要比 BACKUP 高
nopreempt ## 優先級高的設置 nopreempt 解決異常恢復后再次搶占的問題
advert_int 1 ## 組播信息發送間隔,兩個節點設置必須一樣,默認 1s
## 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 1111 ## 真實生產,按需求對應該過來
}
## 將 track_script 塊加入 instance 配置塊
track_script {
chk_nginx ## 執行 Nginx 監控的服務
}
## 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.1.77 ## 虛擬 ip,可以定義多個
}
}
(附配置文件/conf/keepalived/master/keepalived.conf)
1.4.2 BACKUP節點配置文件(192.168.1.180)
! Configuration File for keepalived
global_defs {
## keepalived 自帶的郵件提醒需要開啟 sendmail 服務。建議用獨立的監控或第三方 SMTP
router_id tracker02 ## 標識本節點的字條串,通常為 hostname
}
## keepalived 會定時執行腳本並對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級。如果腳本執行結果為 0,並且 weight 配置的值大於 0,則優先級相應的增加。如果腳本執行結果非 0,並且 weight配置的值小於 0,則優先級相應的減少。其他情況,維持原本配置的優先級,即配置文件中 priority 對應的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 檢測 nginx 狀態的腳本路徑
interval 2 ## 檢測時間間隔
weight -20 ## 如果條件成立,權重-20
}
## 定義虛擬路由,VI_1 為虛擬路由的標示符,自己定義名稱
vrrp_instance VI_1 {
state BACKUP ## 主節點為 MASTER,對應的備份節點為 BACKUP
interface eth1 ## 綁定虛擬 IP 的網絡接口,與本機 IP 地址所在的網絡接口相同,我的是 eth1
virtual_router_id 170 ## 虛擬路由的 ID號,兩個節點設置必須一樣,可選 IP 最后一段使用, 相同的VRID為一個組,他將決定多播的 MAC地址
mcast_src_ip 192.168.1.180 ## 本機IP地址
priority 100 ## 節點優先級,值范圍 0-254,MASTER 要比 BACKUP 高
nopreempt ## 優先級高的設置 nopreempt 解決異常恢復后再次搶占的問題
advert_int 1 ## 組播信息發送間隔,兩個節點設置必須一樣,默認 1s
## 設置驗證信息,兩個節點必須一致
authentication {
auth_type PASS
auth_pass 1111 ## 真實生產,按需求對應該過來
}
## 將 track_script 塊加入 instance 配置塊
track_script {
chk_nginx ## 執行 Nginx 監控的服務
}
## 虛擬 IP 池, 兩個節點設置必須一樣
virtual_ipaddress {
192.168.1.77 ## 虛擬 ip,可以定義多個
}
}
(附配置文件/conf/keepalived/backup/keepalived.conf)
1.5編寫 Nginx 狀態檢測腳本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)
# vi /etc/keepalived/nginx_check.sh
腳本要求:如果 nginx 停止運行,嘗試啟動,如果無法啟動則殺死本機的 keepalived 進程,keepalied將虛擬 ip 綁定到 BACKUP 機器上。內容如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
保存后,給腳本賦執行權限:
# chmod +x /etc/keepalived/nginx_check.sh
1.6啟動 Keepalived
# service keepalived start
1.7 Keepalived+Nginx 的高可用測試
1.7.1關閉 192.168.1.170中的 Nginx,Keepalived 會將它重新啟動
# /usr/local/nginx/sbin/nginx -s stop
1.7.2關閉 192.168.1.170中的 Keepalived,VIP會切換到 192.168.1.180中
# service keepalived stop
1.7.3重新啟動 192.168.1.170中的 Keepalived,VIP又會切回到 192.168.1.170中來
service keepalived start
查看虛擬IP狀態 # ip add
Keepalived 服務管理命令:
停止:service keepalived stop
啟動:service keepalived start
重啟:service keepalived restart
查看狀態:service keepalived status
1.8方便測試,將170和180的Nginx主頁修改一下
# vi /usr/local/nginx/html/index.html
<hr/>
<b>tracker01_170_master</b>
<hr/>
<hr/>
<b>tracker02_180_backup</b>
<hr/>
1.9文件訪問測試:
http://192.168.1.77:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
至此配置完畢。
VIP(8000) |
tracker_Nginx(8000) |
storage_Nginx(8888) |
192.168.1.77 |
192.168.1.170 192.168.1.180 |
192.168.1.171 192.168.1.172 192.168.1.173 192.168.1.174 192.168.1.175 192.168.1.176 |
文件訪問:
storage |
http://192.168.1.173:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png http://192.168.1.174:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |
tracker |
http://192.168.1.170:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png http://192.168.1.180:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |
VIP |
http://192.168.1.77:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |