热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS系统中配置Nginx+keepalived高可用负载均衡集群

首先理解上图:一个高访问量的站点(每天100万PV),可以使用以上的服务器组成配置。该站点总共由7台服务器组成,图片文件服务器负责整个站点的图片存储(当然高访问量的站点当然需要cnd图片加速了),两台数据库服务器形成主从备份保证了数据运算的速度,同
CentOS系统中配置Nginx+keepalived高可用负载均衡集群

首先理解上图:一个高访问量的站点(每天100万PV),可以使用以上的服务器组成配置。该站点总共由7台服务器组成,图片文件服务器负责整个站点的图片存储(当然高访问量的站点当然需要cnd图片加速了),两台数据库服务器形成主从备份保证了数据运算的速度,同时保证了当其中一台服务器宕机后,还有一台数据库服务器保证系统的运行,两台web服务器保证了系统的快速响应请求,同时其中一台web服务器宕机后还有一个web服务器提供服务。两台nginx代理服务负责转发用户的请求,问题是,两台nginx有两个ip,怎么才能保证一台nginx服务器宕机后,另一台服务器自动接手服务呢?keepalived提供的VRRP虚拟路由服务就可以解决这个问题。

一、安装必要的软件包,以保证nginx和keepalived能安装:
yum -y install gcc gcc-c++ make
yum -y install wget                                                                           #安装下载工具
yum -y install pcre-devel                                                                 #安装nginx的依赖软件包
yum -y install openssl-devel                                                            #安装keepalived依赖软件包
yum -y install popt-devel               #安装keepalived依赖软件包

二、安装nginx
wget http://nginx.org/download/nginx-1.2.8.tar.gz         #下载nginx
tar -zxf nginx-1.2.8.tar.gz            #解压nginx
cd nginx-1.2.8
groupadd www                          #添加www用户组
useradd -g www www                #新添加www用户,且用户组隶属于www用户组
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install               #编译,--with-http_stub_status_module --with-http_ssl_module这两个模块必须开启
编写nginx启动脚本
cat /etc/init.d/nginx
#!/bin/bash
#
# chkconfig: - 85 15
# description: Nginx is a World Wide Web server.
# processname: nginx
nginx=/usr/local/nginx/sbin/nginx   #nginx执行路径
cOnf=/usr/local/nginx/conf/nginx.conf    #nginx配置文件路径
case \$1 in
start)
    echo -n "Starting Nginx"
    \$nginx -c \$conf
    echo " done"
    ;;
stop)
    echo -n "Stopping Nginx"
    killall -9 nginx
    echo " done"
    ;;
test)
    \$nginx -t -c \$conf
    ;;
reload)
    echo -n "Reloading Nginx"
    ps auxww | grep nginx | grep master | awk '{print \$2}' | xargs kill -HUP
    echo " done"
    ;;
restart)
    killall -9 nginx
    echo -n "Stopping Nginx"
    \$nginx -c \$conf
    echo -n "Starting Nginx"
    echo " done"
    ;;
show)
    ps -aux|grep nginx
    ;;
*)
    echo -n "Usage: \$0 {start|restart|reload|stop|test|show}"
    ;;
esac
EOF
chmod +x /etc/init.d/nginx
service nginx start
chkconfig nginx on
service nginx start
在浏览器浏览你的nginx看看是否启动。

三、安装keepalived-1.2.0
wget http://keepalived.org/software/keepalived-1.2.0.tar.gz
tar -zxf keepalived-1.2.0.tar.gz
cd keepalived-1.2.0
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ 
mkdir /etc/keepalived
编写keepalived的配置
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_script chk_http_port {
    script "/etc/keepalived/nginx_pid.sh"    #nginx监控脚本路径,改脚本可以把死掉的nginx进程重新启动。
    interval 2
    weight 2
}
global_defs {
        router_id LVS_DEVEL
}
vrrp_instance VI_1 {
        state MASTER           #状态,位主,从机使用BACKUP
        interface eth0            #把那块网卡映射寻ip
        virtual_router_id 51   #虚拟路由id号,这个和从keepalived机子一样。
        priority 100    #权重,那个权重高,那个就是主的,所以MASTER的权重必须高于BACKUP
        advert_int 1
        authentication {
auth_type   PASS                #主从机子通信的加密方式,两台必须一样
auth_pass 123456                #主从机子通信的加密密码,两台必须一样
        }
track_script {
    chk_http_port                #监控脚本,chk_http_port对应的是第3行的vrrp_script chk_http_port,
}
virtual_ipaddress {
    192.168.1.250               #虚拟IP
}
EOF
service keepalived start
ip addr 看看是否有以下内容:如果内看到以下内容就表明你keepalived配置正确了,然后你用192.168.137.120这个虚拟ip是否和192.168.137.110这个ip看到的是一样的,如果是一样就表明可以了

centos6.4安装nginx+keepalived实现负载均衡 - 无所谓 - 无所谓了嘛

编写nginx的监控脚本:
cat /etc/keepalived/nginx_pid.sh
#!/bin/bash
while  :
do
    nginxpid=`ps -C nginx --no-header | wc -l`
    if [ $nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
        sleep 5
        if [ $nginxpid -eq 0 ];then
/etc/init.d/keepalived stop
        fi
    fi
    sleep 5 
done
EOF

四、经过以上的配置,虚拟路由是可以启动了,当主虚拟路由机宕机后,从虚拟路由机后接手。下面来配置nginx的转发代理。
nginx的配置如下:
user www www;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid       logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
client_max_body_size        300m;
sendfile                         on;
tcp_nopush                 on;
fastcgi_connect_timeout        300;
fastcgi_send_timeout        300;
fastcgi_read_timeout        300;
fastcgi_temp_file_write_size 128k;
keepalive_timeout          90;
tcp_nodelay                          on;
server_tokens                          off;
gzip                  on;
gzip_min_length        1k;
gzip_http_version                 1.1;
gzip_comp_level                2;
gzip_types text/plain application/x-Javascript text/css application/xml;
gzip_vary               on;
include vhost/*.conf; 
}

推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文旨在回顾并总结近期学习的.NET Core基础知识,通过具体的操作指南加深理解,并为初学者提供实用建议,避免常见的错误和陷阱。内容涵盖CentOS的安装配置、.NET Core环境搭建及网站部署等。 ... [详细]
  • 三菱PLC SLMP协议报文详解
    本文详细解析了三菱PLC中使用的SLMP协议报文结构,包括其工作原理、通信流程及报文格式,旨在帮助工程师和技术人员更好地理解和运用这一协议。 ... [详细]
  • 本指南详细介绍了如何在同一台计算机上配置多个GitHub账户,并使用不同的SSH密钥进行身份验证,确保每个账户的安全性和独立性。 ... [详细]
author-avatar
尚伦旺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有