1. 程式人生 > >centos7安裝配置nginx+keepalived集群

centos7安裝配置nginx+keepalived集群

安裝配置nginx+keepalived

關閉防火墻(如果因為其他原因不關閉,也請不要禁止80端口):systemctl stop firewalld.service
禁止防火墻自動啟動:systemctl disable firewalld.service
查看系統版本
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
查看內核
uname -r
3.10.0-862.3.2.el7.x86_64
跟新系統及系統包
更新yum:yum update -y

安裝基礎包
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

安裝nginx
(下載路徑自己選擇)
下載nginx1.14.0穩定版本
wget http://nginx.org/download/nginx-1.14.0.tar.gz
解壓:tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/
進入解壓好後的源碼目錄:cd /usr/local/nginx-1.14.0/
使用默認配置:./configure
編譯並安裝nginx:make && make install
啟動nginx:/usr/local/nginx/sbin/nginx
快速停止nginx:/usr/local/nginx/sbin/nginx -s stop
優雅停止nginx(會將正在處理中的請求處理完畢):/usr/local/nginx/sbin/nginx -s quit

檢測配置是否錯誤:/usr/local/nginx/sbin/nginx -t
重新加載配置:/usr/local/nginx/sbin/nginx -s reload

安裝keepalived
yum -y install keepalived

vi /etc/keepalived/keepalived.conf
master配置文件如下
! Configuration file for keepalived
global_defs {
notification_email {br/>[email protected]
<="">}
notification_email_from [email protected]
smtp_server 127.0.0.1

smtp_connect_timeout 30
router_id LVS_DEVEL
}
#監控nginx
vrrp_script chk_nginx {
script "/etc/keepalived/monitor_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER #主從設置 MASTER
interface ens32 #網卡名
virtual_router_id 100
mcast_src_ip 192.168.254.128 #本機ip
priority 51 #從機小於主機
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.88 #VIP 的IP
}
track_script {
chk_nginx #檢測腳本
}
}

backup配置文件如下
! Configuration file for keepalived
global_defs {
notification_email {br/>[email protected]
<="">}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#監控NGINX
vrrp_script chk_nginx {
script "/etc/keepalived/monitor_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP #主從設置 MASTER
interface ens32 #網卡名
virtual_router_id 100
mcast_src_ip 192.168.254.129 #本機ip
priority 50 #從機小於主機
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.254.88 #VIP 的IP
}
track_script {
chk_nginx #檢測腳本
}
}

監測腳本如下(相同)
vi /etc/keepalived/monitor_nginx.sh
#!/bin/bash
a=ps -C nginx --no-header | wc -l
if [ $a -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ ps -C nginx --no-header| wc -l -eq 0 ];then
systemctl stop keepalived
fi
fi

在兩臺nginx分別執行腳本,綁定虛擬IP,抑制ARP廣播
vi ip-config
#!/bin/bash
#description: Config realserver
VIP=192.168.254.88 #綁定你要設置的VIP
/etc/rc.d/init.d/functions
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
執行綁定腳本(腳本隨便放哪裏都可以)
./ip-config start
之後就是測試環境了!

centos7安裝配置nginx+keepalived集群