JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

CentOS7安装keepalived实现Nginx的高可用

wys521 2024-10-08 12:18:48 精选教程 24 ℃ 0 评论

1)keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

2)keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

1、 创建依赖环境

yum -y install openssl-devel gcc gcc-c++
yum -y install libnl libnl-devel

2、安装keepalived

wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz --no-check-certificate
tar -zxvf keepalived-2.2.7.tar.gz
cd keepalived-2.2.7
./configure --prefix=/usr/local/keepalived
make && make install

3、创建启动文件

mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /root/keepalived-2.2.7/keepalived/keepalived.service /etc/systemd/system/
ln -s /usr/local/keepalived-2.2.7/sbin/keepalived /usr/sbin/
cp /root/keepalived-2.2.7/keepalived/etc/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived
systemctl enable keepalived.service
mkdir /var/log/keepalived/
vi /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
vi /etc/rsyslog.d/keepalived.conf
local0.* /var/log/keepalived/keepalived.log
systemctl restart rsyslog

4、创建配置文件

master
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id 190_master
}
vrrp_script chk_nginx {
script "/data/build/check_nginx.sh" # 检测nginx状态的脚本路径
interval 2 # 检测时间间隔
weight 3
}
vrrp_instance VI_1 {
state MASTER
interface em1
virtual_router_id 190 # 虚拟路由的ID号,两个节点设置必须一样
mcast_src_ip 192.168.8.4
priority 200 # 节点优先级,取值范围 0-254,MASTER要比BACKUP高
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认1s
nopreempt
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.8.100 # 虚拟ip,两个节点设置必须一样,可以定义多个
}
track_script {
chk_nginx # 执行Nginx监控的服务
}
}
EOF
slave
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id 191_slave
}
vrrp_instance VI_1 {
state BACKUP
interface em1
virtual_router_id 190
mcast_src_ip 192.168.8.6
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.8.100
}
}
EOF

5、编写 Nginx 状态检测脚本

vi /data/build/check_nginx.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
docker restart nginx
sleep 3
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /data/build/logs/check_nginx.log
systemctl stop keepalived.service
fi
fi

6、启动keepalived

systemctl start keepalived.service

7、模仿down机

关闭master的keepalived模仿down机

systemctl stop keepalived.service

至此,Keepalived + Nginx 实现高可用 Web 负载均衡搭建完毕。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表