• 欢迎访问极客公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入极客公园 QQ群
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 百度口碑求点赞啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊http://koubei.baidu.com/s/gitcafe.net
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

告别LVS:使用keepalived+nginx实现负载均衡代理多个https

未分类 博客教主 14年前 (2010-06-14) 9602次浏览 1个评论

需求1:CDN小节点使用尽可能少的资源实现高可用和负载均衡
需求2:需要支持10多个HTTPS站点的反向代理
后端环境:nginx在前端做url_hash,后端缓存服务器使用squid和lighttpd分别处理动静态内容,服务器证书在nginx上

解决方案:


使用keepalived来实现前端3台nginx的高可用,DNS轮询来均摊负载。
每个https站点使用一个独立IP,非https站点分摊到这些IP上。
在每台机器的lo上绑定所有的IP来启动nginx服务。

架构图:

原理:
正常情况下负载均摊,每台机器只负担2-3个HTTPS站点,比如此时nginxA只负责192.168.0.101和192.168.0.102这2个 HTTPS站点。当nginxB挂掉时,nginxA和nginxC会根据策略去分担192.168.0.103和192.168.0.104这2个站点 的访问,这时nginxA上负担的站点就可能就是192.168.0.101、192.168.0.102和192.168.0.104了。

分配策略:


lo绑ip脚本:

#!/bin/sh
echo ‘2’ > /proc/sys/net/ipv4/conf/lo/arp_announce
echo ‘1’ > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo ‘2’ > /proc/sys/net/ipv4/conf/all/arp_announce
echo ‘1’ > /proc/sys/net/ipv4/conf/all/arp_ignoreifconfig lo:1 198.188.0.101 netmask 255.255.255.255
ifconfig lo:2 198.188.0.102 netmask 255.255.255.255
ifconfig lo:3 198.188.0.103 netmask 255.255.255.255
ifconfig lo:4 198.188.0.104 netmask 255.255.255.255
ifconfig lo:5 198.188.0.105 netmask 255.255.255.255
ifconfig lo:6 198.188.0.106 netmask 255.255.255.255

Ngnix A配置文件范例:
! Configuration File for keepalived

global_defs {
notification_email {
duanli0n@gmail.com
}
notification_email_from nginx_ha1@snda.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id nginx_ha1
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.101
192.168.0.102
}
}

vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.103
192.168.0.104
}
}

vrrp_instance VI_3 {
state BACKUP
interface eth0
virtual_router_id 53
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.105
192.168.0.106
}
}

作者:du@nli0n


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:告别LVS:使用keepalived+nginx实现负载均衡代理多个https
喜欢 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. 你如果用dns 轮训, 如何 解决 会话 同步, 以及 负载, 比如 session1 在 realserver1 上, 突然server1 挂了, 怎么保持这个session1? 其次, realserver1, realserver2 等 服务器的负载, 你如何实现 各个服务器的负载均衡, 让 会话连接达到均衡,也就是 各个服务器 的负载不会 一个高,一个低, 达到平衡, dns轮循,我想是没法 实现这个的,这是随机的访问后端服务器。 实际意义上是没有达到负载均衡。。
    brent2010-06-30 23:11