[转]:http://www.net130.com/CMS/Pub/special/special_fzjh/special_fzjh_yy/2010_05_23_79351_3.htm
首先:
使用nginx做为负载均衡器时,通讯模型类似于LVS-NAT,在某些情况下,随着集群节点数量的增长,nginx将会成为网络通讯的瓶颈,因为所有应 答数据包都必须通过nginx,一颗400MHz的处理器能够容纳100Mbps的连接,因此,在一般情况下,网络更可能比LVS Director更可能成为瓶颈。在这种情况下,使用LVS-DR比使用nginx做负载均衡器上更可靠一些。
使用nginx+keepalived的可行性:
Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。在新浪动态应用平台 上,Keepalived配合LVS在线上服务中有着很好的稳定性。
Nginx是基于Linux 2.6内核中epoll模型http服务器,与Apache进程派生模式不同的是Nginx进程基于于Master+Slave多进程模型,自身具有非常 稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠 性,Slave进程所有的业务信号都由主进程发出,Slave进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。在新浪博客应用平台上, 经过将近8个月的运行,没有因为主进程退出或者子进程僵死导致服务中致的故障存在。
在生产环境中,任何的机器宕机导致的损失都需要被 降到最低,传统的生产环境中,都是将服务器直接放置在4/7层交换机后面以避免因为服务器或者服务器软件故障导致的服务中止。当前的业务模式下,有许多高 并发的服务需求,Js小文件、高速动态接口、Nginx七层业务,都希望所有的Socket操作能够尽快完成,减少用户的时间等待。4/7层交换机由于负 责了新浪全站多个产品的服务,经常会成为高并发服务应用的一个制约条件。于是,就孕育出了使用Keepalived+Nginx实现双机交叉热备使用公网 ip进行DNS轮询服务的想法,这个方案可以运用于需要高并发服务的所有应用环境。越少的Socket通讯层,数据到达用户桌面的速度越快。
1、服务器IP存活检测:
服务器IP存活检测是由Keepalived自己本身完成的,将2台服务器配置成Keepalived互为主辅关系,任意一方机器故障对方都能够将IP接管过去。
2、服务器应用服务存活检测:
一个正常的业务服务,除了保证服务器的状态存活之外,还需要应用业务的存活。之前之所以有Apache服务器因为进程僵死导致HTTP不响应从而影响服 务是因为Apache的进程模式导致的。在Nginx的进程模型下,可以认为只要Nginx进程存活状态,服务就是正常的,于是只需要做到检测进程存活就 能够做到检测服务的存活。Slave进程的健康状态由Nginx自身的Master进程去完成,Master进程的存活可以通过服务器上的专用脚本进行监 测,一旦发现Nginx Master进程异常退出,则立即重新启动Nginx进程,该方案已经在新浪博客系统上运行近半年。
3、服务器在线维护:
Keepalived的服务IP通过其配置文件进行管理,依靠其自身的进程去确定服务器的存活状态,如果在需要对服务器进程在线维护的情况下,只需要停掉被维护机器的Keepalived服务进程,另外一台服务器就能够接管该台服务器的所有应用。
上面的可行性的文章转自其他blog,以下是根据上面的方案做的配置笔记,另外,我还没有搞明白keepalived如何防止脑裂,因此,现在,个人觉得,用heartbeat做双机的热备更可靠一些,文章的后面有使用heartbeat做双机热备的配置。
方案 一 使用keepalived做nginx负载均衡器的双机热备
Keepalived为LVS群集提供强劲的健康检查机制。它实现了一个多层L3、L4、L5/7容错健康检查框架,当有Server Pool宕机后通过socket通知***内核***将 其从Server Pools中剔除,进一步提高Linux Virtual Server project项目的High Availability。同时提供了独立的VRRPv2栈来及时处理 director failover ,及时为LVS集群节点健康检查及LVS directors failover。
在这里我们只使用keepalived的vrrp的功能,使主服务器和备份服务器故障时IP瞬间无缝交接。
1 安装
./configure --prefix=/usr/local/keepalived
make
make install
2 配置文件
vi /usr/local/keepalived/etc/keepalived/keepalived.conf
Master的配置文件
vrrp_instance VI_INET1 {
state MASTER #(主机为MASTER,备用机为BACKUP)
interface eth0 #(HA监测网络接口)
mcast_src_ip 192.168.7.191 #(VRRP Multicast广播源地址,分别取主、备机地址,不能取与virtual_ipaddress相同)
track_interface { #其他要监测状态的接口
eth1
}
virtual_router_id 53 #(主、备机的virtual_router_id必须相同)
priority 200 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高)
advert_int 5 #(VRRP Multicast广播周期秒数)
authentication {
auth_type pass #(VRRP认证方式)
auth_pass yourpass #(VRRP口令字)
}
virtual_ipaddress {
192.168.7.100 #(VRRP HA虚拟地址)
}
}
Slave的配置文件
vrrp_instance VI_INET1 {
state BACKUP
interface eth0
track_interface {
eth1
}
virtual_router_id 53
priority 100
advert_int 5
authentication {
auth_type pass
auth_pass yourpass
}
virtual_ipaddress {
192.168.7.100
}
}
track_interface的意思是将Linux中你想监控的网络接口卡监控起来,当其中的一块出现故障是keepalived都将视为路由器出现故障。
启动
在启动前先查看IP地址。注:不能使用ifconfig查看
[root@real1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:c8:9b:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.7.191/24 brd 192.168.7.255 scope global eth0
/usr/local/keepalived/sbin/keepalived -D -f /usr/local/keepalived/etc/keepalived/keepalived.conf
启动后
[root@real1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:c8:9b:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.7.191/24 brd 192.168.7.255 scope global eth0
inet 192.168.7.100/32 scope global eth0
当Master失效时,Backup就会通过MultiCast地址:224.0.0.18(vrrp的默认地址)这个组播地址,获得这个消息,并将192.168.7.100这个地址接管过来。
别忘记在iptables配置当中增加:
-I INPUT -s <主/备服务器ip> -d 224.0.0.18 -j ACCEPT
# keepalived.conf for HA "routers"
global_defs {
notification_email {
recipient@mail.domain
}
notification_email_from root@fqdn.of.machine
smtp_server 1.2.3.4
smtp_connect_timeout 60
router_id router_1
}
vrrp_script check_running {
script "/usr/local/bin/check_running"
interval 10
weight 10
}
vrrp_script always_succeed {
script "/bin/date"
interval 10
weight 10
}
vrrp_script always_fail {
script "/usr/local/bin/always_fail"
interval 10
weight 10
}
vrrp_instance ROUTER_1 {
state MASTER
smtp_alert
interface eth0
virtual_router_id 101
priority 100
advert_int 3
authentication {
auth_type PASS
auth_pass whatever
}
virtual_ipaddress {
1.1.1.1
}
track_script {
check_running weight 20
}
}
|
# keepalived.conf for HA "routers" global_defs {
notification_email {
recipient@mail.domain
}
notification_email_from root@fqdn.of.machine
smtp_server 1.2.3.4
smtp_connect_timeout 60
router_id router_2
}
vrrp_script check_running {
script "/usr/local/bin/check_running"
interval 10
weight 10
}
vrrp_script always_succeed {
script "/bin/date"
interval 10
weight 10
}
vrrp_script always_fail {
script "/usr/local/bin/always_fail"
interval 10
weight 10
}
vrrp_instance ROUTER_1 {
state BACKUP
smtp_alert
interface eth0
virtual_router_id 101
priority 90
advert_int 3
authentication {
auth_type PASS
auth_pass whatever
}
virtual_ipaddress {
1.1.1.1
}
track_script {
check_running weight 20
}
}
|
相关推荐
Nginx负载均衡+keepalived双机热备
nginx+keepalive主从 双机热备 + 自动切换解决方案 就可实现负载均衡及高可用集群
redhat6.4+nginx+keepalived__实现双机热备和负载均衡
keepalived+nginx双机热备+负载均衡 非抢占模式,支持虚拟IP切换,tomcat负载均衡配置等服务,可以动态自动切换
文章目录说明:一、安装nginx二、nginx负载均衡配合keepalived服务案例实战0. 拓扑1. 在192.168.1.11和192.168.1.12上配置nginx的代理服务器功能,配置如下1.11 nginx配置1.12 nginx配置2. 在192.168.1.11 和192.168...
针对OpenFlow SDN系统中的策略管理模块提出了一种新型的双机热备和负载均衡方案,采用了服务器集群的方式,通过Keepalived和Heartbeat实现了双机热备模块,通过Nginx实现了代理服务器和负载均衡模块。经工程验证有效...
Nginx+keepalived+tomcat实现性负载均衡
运行结果图片在文档里面
Haproxy是一个开源的、高性能的基于tcp和http应用代理的高可用的、负载均衡服务软件,它支持双机热备(heartbeat)、高可用(heartbeat、)、负载均衡(lvs、nginx、squid)、虚拟主机、基于tcp和http的应用代理、...
在当前的软件系统开发中都会使用微服务系统架构。...构建服务网关集群,并且在服务网关前去部署一个nginx,根据nginx的负载均衡算法来转发我们的请求到指定的网关,在由指定的网关将我们的请求路由到指定的微服务上面。
Haproxy是一个开源的、高性能的基于tcp和http应用代理的高可用的、负载均衡服务软件,它支持双机热备(heartbeat)、高可用(heartbeat、)、负载均衡(lvs、nginx、squid)、虚拟主机、基于tcp和http的应用代理、...
nginx+keepalived做前端双机热备,后端tomcat做负载均衡。有前置nginx的proxy_pass将location做动静分离后的jsp等jsp程序文件分发到后端upstreamd模块中tomcat集群上,将静态html网页、图片、js、css等使用前端nginx...
基本上能支持所有应用,因为 lvs 工作在 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等等。 文档简单演示了lvs+keepalived的搭建过程和负载测试,顺便记录下来。每天进步一点。
首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用。...
课程内容包括了Linux基础部分, Linux进阶和高级,Shell编程部分,企业服务管理及Apache服务,LVS+Keepalived负载均衡、无人值守、双机热备。KVM,Zabbix企业级实战,自动化运维体系实战,Gitlab+Ansible+Jenkins...
用到的技术有mysql双机热备,celery异步通信,非关系数据库redis,fastDFS分布式文件系统,uwsgi + nginx,whoosh + haystack + jieba全部检索,事务回滚,并发访问控制,负载均衡,对接第三方(支付宝)支付等。...