配置keepalived
#修改配置
vim /etc/keepalived/keepalived.conf
#配置文件
! Configuration File for keepalived
global_defs {
#從服務器最改一下這個
router_id node1 #表示運行keepalived服務器的一個標識。發郵件時顯示在郵件主題的信息
}
#監控服務.NGINX mysql等
vrrp_script chk_nginx {
script "/usr/local/keepalived/check_nginx.sh"
#每2s檢查一次
interval 2
#每次檢查-20
weight -20
}
vrrp_instance VI_1 {
##主從設置 MASTER/BACKUP
state MASTER
#網卡名稱
interface eth0
#同一個集羣下這個 router_id是一樣的
virtual_router_id 51
#本機的ip,需要修改
mcast_src_ip 192.168.100.10
#優先級,從節點 配置,需要小於主節點
priority 100
#設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
advert_int 1
#認證的密碼
authentication {
auth_type PASS
#設定授權密碼,密碼相同的爲一個集羣
auth_pass yellowcong
}
#觸發的腳本
track_script {
chk_nginx #檢測腳本,上面配置的
}
#虛擬ip地址
virtual_ipaddress {
192.168.0.100
192.168.0.101
}
}
下面是腳本內容,用來進行nginx是否存活的監測
#創建並賦予權限
touch check_nginx.sh && chmod a+x check_nginx.sh
#編輯文件
vim check_nginx.sh
#################下面是內容####################
#!/bin/bash
COUNT=$(ps -C nginx --no-header |wc -l)
echo $COUNT
#判斷Nginx 是否都掛掉了
if [ $COUNT -eq 0 ]
then
#如果掛掉了,就啓動nginx
/usr/local/nginx/sbin/nginx
echo "重啓nginx"
#等5秒鐘後,再次查看是否 啓動成功
sleep 3
#如果nginx沒有啓動起來,就直接幹掉keepalived
COUNT=$(ps -C nginx --no-header |wc -l)
if [ $COUNT -eq 0 ]
then
echo "幹掉keepalived"
#如果killall命令不能使用,就需要安裝psmisc工具了
#yum install -y psmisc
killall keepalived
fi
fi
Nginx 配置
vim /usr/local/nginx/conf/nginx.conf
#配置完成一個後,直接將另一個拷貝就可以了
#################配置的內容###############
#user nobody;
#配置的線程數目和cpu處理器的核心數目一致
worker_processes 2;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#負載均衡
upstream webapp{
server 192.168.100.11:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.100.11:8081 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.100.10:8081 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.100.10:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name localhost;
#地址匹配
location / {
#root html;
#index index.html index.htm;
proxy_set_header X-real-ip $remote_addr;
proxy_pass http://webapp;
}
#錯誤頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}