目錄
1. Keepalived安裝配置
1.1 官網下載tar包
https://www.keepalived.org/
1.2 上傳到指定目錄安裝
./configure --prefix=/usr/local/keepalived --sysconf=/etc
*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
如果出現上述提示,則執行下面命令安裝libnl:
yum install -y libnl
make && make install
1.3 配置文件
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
配置文件內容如下:
! Configuration File for keepalived
#全局配置
global_defs {
# 負載均衡標識,在局域網內應該是唯一的。一般為主機名。
router_id 主機名稱
}
vrrp_script chk_http_port {
# 檢測心跳執行的腳本
script "/usr/local/src/nginx_check.sh"
# 檢測腳本執行間隔,單位:秒
interval 4
weight 2
}
#定義實例
vrrp_instance VI_1 {
# 指定keepalived的角色,MASTER為主,BACKUP為備
state MASTER
# 當前進行vrrp通訊的網絡接口卡(當前centos的網卡)
interface ens33
# 指定VRRP實例ID(虛擬路由編號),范圍是0-255,主從要一致
virtual_router_id 202
# 優先級,數值越大,獲取處理請求的優先級越高, 優先級高的將成為MASTER。
priority 100
# 指定發送VRRP通告的間隔,默認為1s(vrrp組播周期秒數)
advert_int 1
# 設置驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通信
authentication {
# 指定認證方式。PASS簡單密碼認證(推薦),AH:IPSEC認證(不推薦)。
auth_type PASS
# 指定認證所使用的密碼。最多8位。
auth_pass 2020
}
# 調用檢測腳本
track_script {
chk_http_port
}
# 定義虛擬ip(VIP),可多設,每行一個
virtual_ipaddress {
192.168.199.143
}
}
1.4 配置nginx檢測腳本文件
cd /usr/local/src
vim nginx_check.sh
腳本內容:
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx-1.18.0/sbin/nginx
sleep 4
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi
1.5 keepalived 啟動/重啟/停止/查看狀態
systemctl start/restart/stop/status keepalived
注:啟動keepalived會執行nginx檢測腳本,此時如果nginx未啟動則會同時啟動nginx。
1.6 查看日志
tail -f /var/log/messages
1.7 瀏覽器訪問虛擬IP地址
192.168.199.143
2. nginx負載均衡配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream minio-server {
# weight:默認為1。weight越大,負載的權重就越大。
# backup:其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。
# max_fails:允許請求失敗的次數默認為1,當超過最大次數時,返回 proxy_next_upstream 模塊定義的錯誤。
# fail_timeout:Nginx基於連接探測,如果發現后端異常,在單位周期為fail_timeout設置的時間中達到max_fails次數,這個周期次數內,如果后端同一個節點不可用,那么把節點標記為不可用,並等待下一個周期(同樣時常為fail_timeout)再一次去請求,判斷是否連接是否成功。
server 192.168.199.140:9000 weight=2 max_fails=3 fail_timeout=10s;
server 192.168.199.141:9000 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name 192.168.199.143;
charset utf-8;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
# 傳輸文件緩存大小及單次請求大小
client_body_buffer_size 10M;
client_max_body_size 1G;
# 宕機檢測,如果設置時間內無響應,則直接切換到其它服務
proxy_connect_timeout 4;
proxy_send_timeout 4;
proxy_read_timeout 4;
proxy_pass http://minio-server;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
此配置下 nginx + keepalived 在多台服務器上搭建,可以實現高可用負載均衡。