Nginx 配置實例-配置高可用
1. 實現效果
2. 兩臺機器 nginx 的安裝
2.1 192.168.25.120 中 nginx 的安裝
2.1.1 安裝 pcre 依賴
su - root // 切換到 root 用戶
tar zxvf pcre-8.37.tar.gz // 解壓 pcre 安裝包
cd pcre-8.37 // 進入 pcre-8.37 目錄
./configure // 配置 pcre-8.37
make && make install // 編譯安裝 pcre-8.37
pcre-config --version // pcre 安裝成功後,查看其版本號
2.1.2 安裝其他依賴
su - root // 切換到 root 用戶
// 安裝其他依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.1.3 Nginx 的安裝
su - root // 切換到 root 用戶
tar zxvf nginx-1.12.2.tar.gz // 解壓 nginx-1.12.2.tar.gz 安裝包
cd nginx-1.12.2 // 進入 nginx-1.12.2 目錄
./configure // 配置 nginx-1.12.2
make && make install // 編譯安裝 nginx-1.12.2
2.1.4 驗證
/usr/local/nginx/sbin/nginx // 啓動 nginx
/usr/local/nginx/sbin/nginx -s stop // 停止 nginx
ps -ef | grep nginx // 查看 nginx 進程狀態
啓動 nginx 之後,瀏覽器訪問 nginx 所在主機的 IP 即端口,此處爲 192.168.25.120:80(80爲默認短褲,訪問時可省略),顯示頁面如下:
2.2 192.168.25.121 中 nginx 的安裝
2.2.1 安裝 pcre 依賴
su - root // 切換到 root 用戶
tar zxvf pcre-8.37.tar.gz // 解壓 pcre 安裝包
cd pcre-8.37 // 進入 pcre-8.37 目錄
./configure // 配置 pcre-8.37
make && make install // 編譯安裝 pcre-8.37
pcre-config --version // pcre 安裝成功後,查看其版本號
2.2.2 安裝其他依賴
su - root // 切換到 root 用戶
// 安裝其他依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.2.3 Nginx 的安裝
su - root // 切換到 root 用戶
tar zxvf nginx-1.12.2.tar.gz // 解壓 nginx-1.12.2.tar.gz 安裝包
cd nginx-1.12.2 // 進入 nginx-1.12.2 目錄
./configure // 配置 nginx-1.12.2
make && make install // 編譯安裝 nginx-1.12.2
2.2.4 驗證
/usr/local/nginx/sbin/nginx // 啓動 nginx
/usr/local/nginx/sbin/nginx -s stop // 停止 nginx
ps -ef | grep nginx // 查看 nginx 進程狀態
啓動 nginx 之後,瀏覽器訪問 nginx 所在主機的 IP 即端口,此處爲 192.168.25.120:80(80爲默認短褲,訪問時可省略),顯示頁面如下:
3. 兩臺機器 keepalived 的安裝
3.1 192.168.25.120 中 keepalived 的安裝
keepalived 配置文件位置:/etc/keepalived/keepalived.conf
# 使用 yum 命令安裝 keepalived
yum install -y keepalived
# 使用 rpm 命令查詢 keepalived 的安裝包
rpm -q -a keepalived
3.2 192.168.25.121 中 keepalived 的安裝
keepalived 配置文件位置:/etc/keepalived/keepalived.conf
# 使用 yum 命令安裝 keepalived
yum install -y keepalived
# 使用 rpm 命令查詢 keepalived 的安裝包
rpm -q -a keepalived
4. 兩臺機器高可用的配置
這裏採用 192.168.25.120 爲主、192.168.25.121 爲備的架構,其中 nginx_check.sh 腳本用於檢測 nginx 是否存活
4.1 nginx 檢測腳本的準備
nginx_check.sh
#!/bin/bash
A=`ps -C nginx ¨Cno-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
4.2 192.168.25.120 主機的 keepalived 配置文件的修改
keepalived 配置文件位置:/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.25.120 # smtp 服務器地址,本機IP
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/nginx/nginx_check.sh"
interval 2 # 檢測腳本執行的間隔
weight 2
}
vrrp_instance VI_1 {
state MASTER # 備份服務器上將 MASTER 改爲 BACKUP
interface eth0 # 網卡
virtual_router_id 51 # 主、備機的 virtual_router_id 須相同
priority 90 # 主、備機取不同的優先級,主機值較大,備機值較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.25.125 # VRRP H 虛擬地址
}
}
4.3 192.168.25.121 主機的 keepalived 配置文件的修改
keepalived 配置文件位置:/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.25.121
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/nginx/nginx_check.sh"
interval 2 # 檢測腳本執行的間隔
weight 2
}
vrrp_instance VI_1 {
state MASTER # 備份服務器上將 MASTER 改爲 BACKUP
interface eth0 # 網卡
virtual_router_id 51 # 主、備機的 virtual_router_id 須相同
priority 100 # 主、備機取不同的優先級,主機值較大,備機值較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.25.125 # VRRP H 虛擬地址
}
}
5. 驗證
5.1 啓動 keepalived
先啓動主機器,再啓動從機器
# 啓動 keepalived
systemctl start keepalived.service
5.2 測試 keepalived 中從機器虛擬 IP 的綁定
瀏覽器訪問 keepalived 中配置的虛擬 IP:192.168.25.125
使用 ip 命令查看,發現當前 121 主機的網卡 eth0 已綁定 192.168.25.125 的虛擬 IP
5.2 測試停止主服務器時的情況
停止 192.168.25.120 主服務器的 nginx 和 keepalived
# 停止 keepalived
systemctl stop keepalived.service
# 停止 nginx
/usr/local/nginx/sbin/nginx -s stop
再次瀏覽器訪問 192.168.25.125
使用 ip 命令查看,發現當前 121 主機的網卡 eth0 已綁定 125 的虛擬 IP