Linux系统下Nginx+keepalived搭建双机热备负载集群

说明:

1、 使用Nginx+keepalved实现负载均衡,解决单点与高流量并发问题

一、 Nginx+keepalved实现负载均衡
WHY? 为什么用Nginx而不用LVS?
7点理由足以说明一切:
1 、高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 ~ 3 万并发连接数。 
2 、内存消耗少: 在 3 万并发连接下,开启的 10 个 Nginx 进程才消耗 150M 内存( 15M*10=150M )。 
3 、配置文件非常简单: 风格跟程序一样通俗易懂。 
4 、成本低廉: Nginx 为开源软件,可以免费使用。而购买 F5 BIG-IP 、 NetScaler 等硬件负载均衡交换机则需要十多万至几十万人民币。 
• 使用 Nginx 做七层负载均衡的理由 
5 、支持 Rewrite 重写规则: 能够根据域名、 URL 的不同,将 HTTP 请求分到不同的后端服务器群组。 
6 、内置的健康检查功能: 如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。 
7 、节省带宽: 支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。

进一步说明:
Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。

Nginx是基于Linux 2.6内核中epoll模型http服务器,与Apache进程派生模式不同的是Nginx进程基于于Master+Slave多进程模型,自身具有非常 稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠 性,Slave进程所有的业务信号都由主进程发出,Slave进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。

服务器IP存活检测是由Keepalived自己本身完成的,将2台服务器配置成Keepalived互为主辅关系,任意一方机器故障对方都能够将IP接 管过去。
Keepalived的服务IP通过其配置文件进行管理,依靠其自身的进程去确定服务器的存活状态,如果在需要对服务器进程在线维护的情况下,只需要停掉 被维护机器的Keepalived服务进程,另外一台服务器就能够接管该台服务器的所有应用。

本文出自:守住每一天 http://liuyu.blog.51cto.com/183345/305145


快速配置方法:
A、环境:
centos5.3、nginx-1.0.11、keepalived-1.2.2 
主nginx负载均衡器:192.168.9.154
辅nginx负载均衡器:192.168.9.155
vip:192.168.9.188

B、安装keepalived
#tar zxvf keepalived-1.2.2 .tar.gz
#cd keepalived-1.2.2
#./configure --prefix=/usr/local/keepalived
#make 
#make install

可能出现的问题

keepalived 安装!!! OpenSSL is not properly installed on your system.
解决办法yum install openssl-devel


#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
#cd /etc/keepalived/

vim keepalived.conf

! Configuration File for keepalived
global_defs {
notification_email {
51cto@51cto.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.9.155 <==辅nginx的IP地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.9.188 <==VIP地址
}
}
#service keepalived start

辅机的配置文件:

! Configuration File for keepalived
global_defs {
notification_email {
51cto@51cto.com
}
notification_email_from keepalived@chtopnet.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.9.154 <==主nginx的IP的地址
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass chtopnet
}
virtual_ipaddress {
192.168.9.188
}
}

检查其配置: ip a 
测试:停主看辅是否接管


配置Nginx负载均衡

在nginx.conf中配置如下内容

use epoll;###epoll模式
events {
    use epoll;
    worker_connections  51200; // 运行要使用ulimit -SHn 51200
}

upstream 192.168.9.155(在154机器上nginx.conf配置192.168.9.154){
      server 192.168.9.100; //Web服务器01
      server 192.168.9.101; //Web服务器02
 }
下面这块不是必须的 但要优化
 ************************************
 client_header_buffer_size 32k;
 large_client_header_buffers 4 32k;
 ************************************


location / {
             proxy_pass    http://192.168.9.155;
             proxy_set_header Host    $host;
             proxy_set_header X-Real-IP    $remote_addr;
             proxy_set_header X-Forwarded-For     $proxy_add_x_forwarded_for;


 }######后端源Web服务器通过X-Forwarded-For获取用户真实IP地址


不是必须 配置监控
**********************************
 location /nginx_status {
                       stub_status on;
                       access_log off;
                       allow 192.168.9.20;
                       deny all;
}######这个就是简单监控nginx的状态
**********************************
(2)测试配置是否正常
/usr/local/nginx/sbin/nginx -t


然后进行测试 在192.168.9.100和192.168.9.101 启动nginx让显示的内容不同这样看效果明显

再对keepalived主辅进行测试 停用一台 看是否另一台接管

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值