Nginx+Keepalived搭建高可用负载均衡集群

本文介绍如何通过Nginx和Keepalived搭建高可用集群,包括环境配置、软件安装、服务配置及日志管理等内容。实现两台服务器间的负载均衡和故障转移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境配置
nginx_master:192.168.1.128
nginx_slave :192.168.1.129
vip :192.168.1.130
网站服务器:192.168.1.144

二、安装
1)安装keepalived
1.安装依赖

yum install kernel-* gcc make openssl-*

2.下载keepalived安装包

wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz

3.解压

tar xvzf keepalived-1.2.19.tar.gz 
cd keepalived-1.2.19

4.配置

./configure --sysconfdir=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64

5.编译安装

make && make install

6.验证安装是否正确

keepalived -v

7.设置开机启动

chkconfig keepalived on

2)安装nginx
官方nginx yum源:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
enabled=1
gpgcheck=0

yum源设置好后直接安装即可:

yum install nginx
chkconfig nginx on

三、配置
1)两台主机nginx的配置(完全一样)

#vim /etc/nginx/conf.d/upstream.conf
upstream nginx_80 {
        server 192.168.1.144:80;
        ip_hash;
}

#vim /etc/nginx/conf.d/server.conf
server {
    listen 80;
    server_name 192.168.1.130;

    location / {
        proxy_pass http://nginx_80;
    }
    location /nginx_status{
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        # 要允许公司ip访问nginx status
        allow 192.168.1.0/24;
        deny all;
    }
}

2)nginx_master的keepalived配置

#vim /etc/keepalived/keepalived.conf 
global_defs {
   router_id nginx-ha1
}

vrrp_script check_nginx {
    # 检查nginx状态的脚本
    script "/data/script/check_nginx.sh"
    # 执行间隔2秒
    interval 2
}

vrrp_instance VI_1 {
    # 两台主机都是BACKUP
    state BACKUP
    interface eth0
    # 同一keepalived集群的virtual_router_id 必须相同,默认51
    virtual_router_id 55
    # 主的优先级高
    priority 100
    advert_int 1
    # 不抢占:如果集群里已存在MASTER状态的主机,即使优先级高于MASTER也不抢占为MASTER。只在优先级高的主机上设置即可。
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        # 虚拟IP
        192.168.1.130
    }
    track_script {
        check_nginx
    }
}

3)nginx_slave的keepalived配置

#vim /etc/keepalived/keepalived.conf 
global_defs {
   router_id nginx-ha2
}

vrrp_script check_nginx {
    script "/data/script/check_nginx.sh"
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 55
    # 备的优先级低
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.130
    }
    track_script {
        check_nginx
    }
}

4)防火墙设置

service iptables stop

5)部署nginx状态检查脚本check_nginx.sh

#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then
    #echo 1
    /etc/init.d/nginx start
    sleep 5
    if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then
        /etc/init.d/keepalived stop
        #echo 2
    fi
fi

给脚本设置可执行权限:

chmod +x /data/script/check_nginx.sh

6)开启keepalived的日志

#vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
#vim /etc/rsyslog.conf
# 配置文件最后面加上下面一行
local0.*                                        /var/log/keepalived.log
#重启rsyslog:
service rsyslog restart

7)启动服务

# 先检查nginx配置文件正确性
nginx -t
# 启动nginx服务
service nginx start
# 同时启动keepalived服务
service keepalived start
# 过一会查看虚拟IP是否在nginx_master主机上
ip addr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值