1。访问量中等的的网站nginx做反向代理(处理静态html等)--->apache/tomcat或nginx,这样足矣。7层代理,自身也可以缓存一些静态页面。搞一个keepalived就能做一个HA了。另外,现在流行用nginx的upstream模块来实现,好像nginx有取代apache做web的趋势,它能支持更多的并发连接,占用内存低。fastcgi只需要打相关的php补丁即可。名字叫php-fpm。只需要在nginx.conf里:
- location .php$
- { proxy_pass 127.0.0.1:9000
- 。。。。。。
- }
这样php由fastcgi来处理。页面涉及到一些https,搜索,也直接proxy_pass对应的server ip就可以了。
2。量大的话,再用nginx/haproxy等不现实了,因为代理本省的并发数量有限,而且代理过程也需要资源,此时本身就是个瓶颈。此时lvs/dr是个不错的选择。当然有钱的话bigip简单省事,而且功能强大,还预留API,利用TCL语言编程可以实现基于url的负载均衡和防盗链等,功能实在强大,公司nba直播的视频就写了irules,利用cookie防盗链。
3。再大的话没有cdn(cache)层,估计够呛。
此时session同步(如今web2.0时代,光看不让用户发言不现实)是个麻烦事,一般放memcache里。这个我还没搞过。虽然公司生产中这样做,但是我没参与过,⊙﹏⊙b汗。
至于负载均衡算法,基本上都有轮询,权重,等等,但是会话保持方面一般都基于ip来做,这样有点失去负载均衡的意义了。其中bigip的会话保持技术很先进,大概是利用cookie可以搜下看
一个keepalived.conf配置例子:
- ! Configuration File for keepalived
- global_defs {
- notification_email {
-
- }
- notification_email_from
- smtp_connect_timeout 3
- smtp_server 127.0.0.1
- router_id LVS_DEVEL
- }
- vrrp_script chk_proxy {
- script "killall -0 proxy"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- interface eth1
- state MASTER # 从为BACKUP
- priority 101 # 从为100
- virtual_router_id 50 #路由ID,可通过#tcpdump vrrp查看。
- garp_master_delay 1 #主从切换时间,单位为秒。
- authentication {
- auth_type PASS
- auth_pass KJj23576hYgu23IP #主辅通讯密码
- }
- track_interface {
- eth0
- eth1 # 监控网卡
- }
- virtual_ipaddress {
- 192.168.0.100 # 对外VIP
- }
- track_script {
- chk_proxy
- }
- #状态通知
- notify_master "/etc/keepalived/notify.py master"
- notify_backup "/etc/keepalived/notify.py backup"
- notify_fault "/etc/keepalived/notify.py fault"
- }
注意还得添加VRRP通讯支持
iptables -A INPUT -d 224.0.0.18 -j ACCEPT
阅读(2285) | 评论(0) | 转发(0) |