前言
使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。
另外,大家可以看我的这两篇博客:LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡 和 主从热备+负载均衡(LVS + keepalived),对比下这三篇博客,其中区别及各自的优缺点需要大家好好体会。
环境准备
192.168.0.221:nginx + keepalived master
192.168.0.222:nginx + keepalived backup
192.168.0.223:tomcat
192.168.0.224:tomcat
虚拟ip(VIP):192.168.0.200,对外提供服务的ip,也可称作浮动ip
各个组件之间的关系图如下:
tomcat做应用服务器
tomcat的安装不在本博客范围之内,具体可参考virtualBox安装centos,并搭建tomcat,tomcat的webapps下记得放自己的应用,我的是myWeb,如果大家也用我的myWeb,那么index.jsp中的ip需要换成自己的
将192.168.0.223、192.168.0.224上的tomcat启动起来,tomcat的路径可能和我的不一致,需要写成自己的
# cd /usr/local/tomcat7/bin
# ./startup.sh
访问myWeb如下
nginx做负载均衡
nginx的安装,本文就不讲述了,具体可参考LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡
nginx.conf内容如下
user root; #运行用户
worker_processes 1; #启动进程,通常设置成和cpu的数量相等
#全局错误日志及PID文件
error_log /usr/local/nginx/logs/error.log;
error_log /usr/local/nginx/logs/error.log notice;
error_log /usr/local/nginx/logs/error.log info;
pid /usr/local/nginx/logs/nginx.pid;
# 工作模式及连接数上线
events
{
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但