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

    可扩展、高可用、负载均衡网站架构设计方案

     

    基本需求:

    1、  高可用性:将停止服务时间降低到最低甚至是不间断服务

    2、  可扩展性:随着访问的增加,系统具备良好的伸缩能力

    3、  可视性:系统、服务的状态处于一个实时的监控之下

    4、  高性能高可靠性:经过优化的体系结构及合理的备份策略

    5、  安全性:结构上的安全及主机的安全策略

     

    基 本思路

    1、对于访问频繁,用户量 大的对象(bbs,blog)采用某种合理的方式负载到多个服务器上。把数据库独立出来,准备2套mysql数据库,以实现 主从复制,即减轻负载,又提高了可靠性。更近一步,使用mysql proxy技 术,实现主从服务器的读写分离,大大提高这个系统的性能和负载能力。

    2、数据库与外部网络隔 离,只允许web服务器(bbs,blog等)通过 私有地址方式访问。这样就提高了数据库的安全性,同时也节省了宝贵的带宽。

    3、部署监控系统,通过监 控主机存活、服务、主机资源,实时把系统的健康状态置于可视状态,对系统的运营状态心中有数。

    4、备份是想都不用想的事 情,使用单独的服务器集中备份,是一个比较不错的主意。

    拓 扑结构

     

    业务逻辑

    技术实现

    1、负载均衡。2台同样配置的linux服务器,内核支 持lvs,配置keepalived工 具,即可实现负载转发。一旦其后的真实服务器出现故障,keepalived会自 动把故障机器从转发队列删除掉,等到故障修复,它又会自动把真实服务器的地址加入转发列表。由于lvs支持会话保持,因此对于bbs 这样的应用,一 点也不用担心其登录丢失。

    2、mysql主从复制。即保证数据的安全,又提高了访问性能。我们在前端的每个web服务器上加入mysql proxy这 个工具,即可期待实现读写的自动分离,让写的操作发生在主数据库,让查询这类读操作发生在从数据库。

    3、nagios是一个开源的,受广泛欢迎的监控平台。它可对主机的存活、系统资源(磁盘空间、负载等)、网络服务进行实时监控。一旦探测到故障,将自动发送邮件(短信)通知故障。

    4、备份。包括web数据和数据库服务器的备份。对于web服务而言,GNU tar即可实现备 份的一切愿望。简单的设置一下crontab 就可以让系统在我们做梦的时刻老老实实的帮我们备份了。 但是,由于空间的限制,不可能一直备份下去,所以要做一个合适的策略,以不断的用新的备份去替换陈旧的备份数据;多少天合适?看磁盘容量吧。对于数据库, 先mysqldump一下,再tar.完成这些工作后把 备份文件传输到备份服务器集中。一个比较省事的方法是把备份服务器以NFS方式挂接到web服务器及数据库服务器。

    5、web服务器。至少包括apache和mysql proxy这两个组件。Apache做bbs和blog的容器,以虚拟机方式把用户的请求转发到bbs目录或blog目录。

    6、安全措施。包含两层安 全,一层是主机本身,另一层是结构(mysql从外部网络隔离)。实践证明,iptables是一个非常值得信赖的防火墙工具。在实际应用中,采取先关门后开窗的策略,大大增强系统的安全性。  

    组 件

    一、 硬件: 负载均衡2台(dell 1950),web服务器2-3台(dell1950),数据库2台(dell 2950),存储NAS(5T格式化后容量),备份4u服务器(带磁盘阵列5T容量),监控服务器1台(dell1850).

    二、 软件:操作系统centos 5(定制安装),负载均衡ipvsadm、keepalived,监 控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

  • 相关阅读:
    python3删除mysql上月分区数据(脚本)
    ansible之基本原理及命令
    centOS 7 简单设置(虚拟机)
    TCP_Wrappers 简介
    sudo
    引用数据应该选择 ID, CODE 还是 NAME
    吃得洒脱是一种什么体验
    通用数据同步机制
    我的学PyTorch之路(1)
    38岁才学会了游泳的心得
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4792662.html
Copyright © 2011-2022 走看看