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

配置haproxy+keepalived+Nginx实现高并发负载均衡环境

高并发负责均衡(HA)主备切换,当LVS笨重,Nginx无法满足需求的时候,Haproxy是最佳选择安装环境(Mysql主从省略,memcached配置省略,主要记录下haproxy+keepalived,后端nginx也省了,本站都有资料,可以搜索):直接用haproxy做负载+代理,因为haproxy的负载比ngi
高并发负责均衡(HA)主备切换,当LVS笨重,Nginx无法满足需求的时候,Haproxy 是最佳选择

安装环境 (Mysql主从省略,memcached配置省略,主要记录下haproxy+keepalived,后端nginx也省了,本站都有资料,可以搜索):直接用haproxy做负载+代理,因为haproxy的负载比nginx强,比nginx+haproxy强,so…you know.

OS: Centos6.4(64X)
MASTER(haproxy):  192.168.101.110
BACKUP(haproxy):  192.168.101.111
VIP:  192.168.101.100
web1: 192.168.101.112
web2: 192.168.101.113
web3: 192.168.101.114


haproxy+keepalived+nginx高并发负载均衡

Haproxy安装和配置
yum install haproxy
 
[root@shpbox Desktop]# cat /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local0                  
    pidfile     /etc/haproxy/haproxy.pid    
    maxconn     65535                  
    user        nobody                    
    group       nobody                    
    nbproc      1                     
    daemon                             
 
defaults
    mode                    http          
    log                     global
    option                  httplog   
    option                  dontlognull
    option                  httpclose  
    option                  forwardfor 
    option                  redispatch
    retries                 2           
    option                  abortonclose   
    stats                   refresh 10  
    contimeout              5000       
    clitimeout              50000        
    srvtimeout              50000      
 
listen web *:80
mode http 
maxconn 2000   
balance        roundrobin     
COOKIE SERVERID insert indirect
server web1  192.168.101.112:80 COOKIE web1 check inter 1500 rise 3 fall 3 weight 3
server web2  192.168.101.113:80 COOKIE web2 check inter 1500 rise 3 fall 3 weight 3
server web3  192.168.101.114:80 COOKIE web3 check inter 1500 rise 3 fall 3 weight 3
option httpchk HEAD /index.html
srvtimeout      20000
 
listen stats_auth 192.168.101.110:9999 
stats enable
stats uri /haproxy-80
stats auth  shpbox:123456  
stats admin if TRUE
 注:server 里面的80端口也可以是其他端口,比如8090端口反代理和nginx一样,备用机配置差不多只要把管理地址改为备用机真实IP就好,其他不变

配置主备机日志  
vim /etc/rsyslog.conf
添加 以下两行
local3.*        /var/log/haproxy.log
local0.*        /var/log/haproxy.log

安装和配置 keepalived
[root@shpbox Desktop]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
 
vrrp_sync_group VGM {
group {
VI_1
}
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 
    virtual_ipaddress {
        192.168.101.100  
    }
 
}
主备机器一样,只需修改权重和主备标示即可,还有网卡看下当前的是否一致
如果你前端开启了防火墙或者selinux,请关闭防火墙测试或者selinux测试,否则你会出现两个master,哈哈,两个vip地址同时出现,或者起不来服务,如果不关闭iptables,请加入以下策略
### 允许80端口对外提供服务
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  
 
### 只前端响应客户端的ARP广播包,允许vrrp虚拟路由器冗余协议   
-A   INPUT   -d   224.0.0.0/8   -j   ACCEPT  
-A   INPUT    -p   vrrp   -j   ACCEPT 
 
有人说只需允许vrrp协议通过就好,个人建议两条都写上
 
后端Nginx服务器分别绑定VIP地址,执行脚本 {三台Nginx都执此脚本}
#!/bin/bash
### 后端 webserver 配置
SNS_VIP=192.168.101.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_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)
ifconfig lo:0 down
route del $SNS_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
 

推荐阅读
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
author-avatar
手机用户2502853267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有