zoukankan      html  css  js  c++  java
  • 可扩展、高可用、负载均衡网站架构设计方案

    可扩展、高可用、负载均衡网站架构设计方案
    作者:田逸(sery@163.com) 本作品已刊登在《IT实验室周报》第6期第6版
    基本需求:
    1、  高可用性:将停止服务时间降低到最低甚至是不间断服务
    2、  可扩展性:随着访问的增加,系统具备良好的伸缩能力
    3、  可视性:系统、服务的状态处于一个实时的监控之下
    4、  高性能高可靠性:经过优化的体系结构及合理的备份策略
    5、  安全性:结构上的安全及主机的安全策略
     
    基本思路
    1、对于访问频繁,用户量大的对象(bbs,blog)采用某种合理的方式负载到多个服务器上。把数据库独立出来,准备2mysql数据库,以实现主从复制,即减轻负载,又提高了可靠性。更近一步,使用mysql proxy技术,实现主从服务器的读写分离,大大提高这个系统的性能和负载能力。
    2、数据库与外部网络隔离,只允许web服务器(bbs,blog等)通过私有地址方式访问。这样就提高了数据库的安全性,同时也节省了宝贵的带宽。
    3、部署监控系统,通过监控主机存活、服务、主机资源,实时把系统的健康状态置于可视状态,对系统的运营状态心中有数。
    4、备份是想都不用想的事情,使用单独的服务器集中备份,是一个比较不错的主意。
     
    拓扑结构
     
     
    业务逻辑
     
     
     
    技术实现
    1、负载均衡。2台同样配置的linux服务器,内核支持lvs,配置keepalived工具,即可实现负载转发。一旦其后的真实服务器出现故障,keepalived会自动把故障机器从转发队列删除掉,等到故障修复,它又会自动把真实服务器的地址加入转发列表。由于lvs支持会话保持,因此对于bbs 这样的应用,一点也不用担心其登录丢失。
    2mysql主从复制。即保证数据的安全,又提高了访问性能。我们在前端的每个web服务器上加入mysql proxy这个工具,即可期待实现读写的自动分离,让写的操作发生在主数据库,让查询这类读操作发生在从数据库。
    3nagios是一个开源的,受广泛欢迎的监控平台。它可对主机的存活、系统资源(磁盘空间、负载等)、网络服务进行实时监控。一旦探测到故障,将自动发送邮件(短信)通知故障。
    4、备份。包括web数据和数据库服务器的备份。对于web服务而言,GNU tar即可实现备份的一切愿望。简单的设置一下crontab 就可以让系统在我们做梦的时刻老老实实的帮我们备份了。但是,由于空间的限制,不可能一直备份下去,所以要做一个合适的策略,以不断的用新的备份去替换陈旧的备份数据;多少天合适?看磁盘容量吧。对于数据库,先mysqldump一下,再tar.完成这些工作后把备份文件传输到备份服务器集中。一个比较省事的方法是把备份服务器以NFS方式挂接到web服务器及数据库服务器。
    5web服务器。至少包括apachemysql proxy这两个组件。Apachebbsblog的容器,以虚拟机方式把用户的请求转发到bbs目录或blog目录。
    6、安全措施。包含两层安全,一层是主机本身,另一层是结构(mysql从外部网络隔离)。实践证明,iptables是一个非常值得信赖的防火墙工具。在实际应用中,采取先关门后开窗的策略,大大增强系统的安全性。
     
    组件
    一、 硬件: 负载均衡2(dell 1950),web服务器2-3(dell1950),数据库2(dell 2950),存储NAS(5T格式化后容量),备份4u服务器(带磁盘阵列5T容量),监控服务器1(dell1850).
    二、 软件:操作系统centos 5(定制安装),负载均衡ipvsadmkeepalived,监控nagios,web服务apache+php等,数据库mysql,数据库代理mysql proxy.
     
    进度安排
    1、  lvs负载均衡配置及测试:2-3
    2、  web服务器配置:2-3
    3、  mysql主从服务器配置:1-3
    4、  web数据迁移:1
    5、  数据库数据迁移:2
    6、  上线测试:1-2
    7、  正式上线:2
     
     
    keepalived.conf
    ! Configuration File for keepalived
    global_defs {
    router_id LVS_DEVEL
    }
     
    vrrp_instance VI_1 {
        state  master
        interface eth0
        virtual_router_id 59
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
            }
      virtual_ipaddress {
      61.61.61.100
      #61.61.61.101
      }
    }
     
    virtual_server 61.61.61.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        persistence_timeout 50
        protocol TCP
    real_server 61.61.61.102 80 {
            weight 100
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
        real_server 61.61.61.103 80 {
            weight 100
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
         }
        }
     
    真实服务器虚拟ip设置脚本
    #!/bin/bash
    #description : start realserver
    VIP=61.61.61.100
    ./etc/rc.d/init.d/functions
    case "$1" in
    start)
    echo " start LVS of REALServer"
    /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    stop)
    /sbin/ifconfig lo:0 down
    echo "close LVS Directorserver"
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
    esac

    本文出自 “sery” 博客,请务必保留此出处http://sery.blog.51cto.com/10037/85910

  • 相关阅读:
    集合
    WPF自定义控件--模拟手机密码输入控件,在输入时显示最后一个输入密码字符
    配置VS不生成XML和PDB文件
    Wlan常见命令(可以查看连接密码)
    云栖社区用机器人爬CSDN的文章?
    Marshal.PtrToStringAnsi中文乱码
    各种手工DIY
    yii2修改默认控制器
    3D模型网站分享
    SemanticZoom配合GridView组件的使用关键点
  • 原文地址:https://www.cnblogs.com/firstdream/p/2343950.html
Copyright © 2011-2022 走看看