word完整版可点击如下下载>>>>>>>>
高可用网站架构设计与实现.rar-互联网文档类资源-CSDN下载内容包括详细设计文档word版,附带开题报告和相关PPT等文档,供大家参考学习。也可在本博客主页找到更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/u013253075/48595338?spm=1001.2014.3001.5503
目 录
摘要- I
ABSTRACT II
1 绪论- 1
1.1 研究背景- 1
1.2 开发意义- 2
1.3 论文的组织结构- 3
2 关键技术介绍- 4
2.1 服务器集群- 4
2.2 集群技术的分类- 4
2.3 Apache介绍- 4
2.4 Keepalived介绍- 5
2.5 HAProxy介绍- 5
2.6 MySQL数据库- 5
2.7 Mycat介绍- 6
3 系统分析- 7
3.1 可行性分析- 7
3.1.1 技术可行性- 7
3.1.2 经济可行性- 7
3.1.3 法律可行性- 7
3.2 功能需求分析- 7
3.3 性能分析- 9
4 系统概要设计- 11
4.1 负载均衡器的选择- 11
4.1.1 LVS 11
4.1.2 HAProxy 11
4.2 服务器架构的选择- 11
4.2.1 Apache+Nginx反向代理- 12
4.2.2 MySQL+Mycat读写分离- 12
4.3 搭建系统环境- 12
5 系统详细设计- 15
5.1 配置Apache 15
5.2 配置Nginx 16
5.3 配置Keepalived实现Nginx的高可用- 17
5.3.1 配置Keepalived 17
5.3.2 编写脚本- 18
5.4 配置MySQL 19
5.5 配置Mycat实现读写分离- 20
5.6 HAProxy的部署安装- 21
5.7 Keepalived实现Mycat高可用- 22
5.7.1 编写脚本实现- 22
5.7.2 编辑Keepalived配置文件- 22
5.8 建立Web页面- 23
6 系统测试- 25
6.1 测试目的- 25
6.2 测试方法- 25
6.3 测试Nginx服务的使用- 25
6.3.1 测试通过Apache访问Web网页页面- 25
6.3.2 测试通过Nginx访问服务- 26
6.4 测试MySQL服务的使用- 28
6.4.1 测试MySQL双主复制- 29
6.4.2 测试通过Mycat访问MySQL服务- 29
6.4.3 测试通过VIP访问MySQL服务- 30
6.5 测试MySQL的高可用集群- 30
6.6 测试Apache的高可用集群- 31
7 总结与展望- 34
参考文献- 35
致谢- 37
摘 要
高可用网站架构设计是网站架构过程中不可或缺的任务之一。网站系统一开始采用传统架构方式,能够满足基本使用。随着用户数量和访问请求的不断增长,服务器抗负载能力不够,造成服务访问速度慢的问题,甚至还有用户数据丢失的危险。大多数网站(尤其是京东、淘宝、天猫等电子商务网站)必须提供7×24小时不间断的服务,任何服务中断或关键数据丢失都会导致直接的业务损失。用户对网站提出了应用程序服务高性能和可靠性的要求。因此,部署一套高效可靠的高可用平台架构,使服务器与应用服务的运行可靠、稳定,对于企业而言尤为重要。
本文需要进行的工作如下:(1)HAProxy做调度器将客户端访问请求通过调度算法转发给后端设备;(2)Nginx做反向代理服务器转发客户端访问请求;(3)Keepalived做调度器的高可用集群,避免单点故障;(4)Mycat做读写分离,提高MySQL的运行效率;(5)MySQL做双主复制,避免MySQL服务器成为单点故障。
网站的高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。实现这种高可用架构的主要手段是数据和服务的冗余备份以及失效转移。
关键词:高可用 集群 负载均衡 双机热备
ABSTRACT
The design of high available website architecture is one of the indispensable tasks in the process of website architecture.At the beginning, the website system adopts the traditional architecture, which can satisfy the basic use.With the increasing number of users and access requests, the server is not able to resist the load, causing the problem of slow service access speed, and even the risk of loss of user data.Most websites (especially e-commerce sites such as JD.com, Taobao and Tmall) have to provide round-the-clock service, and any interruption of service or loss of critical data will result in a direct loss of business、Users demand high performance and reliability of application services for websites、Therefore, it is particularly important for enterprises to deploy a set of efficient and reliable high-availability platform architecture to make the server and application service run reliably and stably.
The work required in this paper is as follows :(1) HAProxy acts as the scheduler to forward the client access request to the back-end device through the scheduling algorithm.(2) Nginx does the reverse proxy server to forward the client access request.(3) Keepalived makes scheduler highly available cluster to avoid single point of failure.(4) Mycat does read-write separation to improve the running efficiency of MySQL、(5) MySQL does double master replication to avoid MySQL server becoming a single point of failure.
The main purpose of the high availability architecture design of the website is to ensure that the service is still available, the data is still saved and can be accessed when the server hardware fails、The main means of implementing this high availability architecture are redundant backup and failover of data and services.
Keywords: high availability cluster load balancing double hot standby
1 绪论
本章节主要是介绍高可用网站架构设计与实现的开发背景和意义。随着企业服务器和应用服务数量的不断增加,服务器面临着海..............
1.1 研究背景
随着科学技术的快速发展,各种计算机产业分支不断出现,如云计算、人工智能、嵌入式、物联网、软件定义网络等,而这些产业分支都离不开..................
随着服务器业务量的不断提高,数据访问流量的迅速增长,部分网站的抗负载能力逐渐不足。与此同时,随着各类应用程序层出不穷,服...........................
然而,服务器处理和存储访问数据的性能与路由器发送数据量的性能相比,服务器处理数据的能力远远不足。用户数的增长以及数据库信.......................
由于信息技术的发展和用户数据集中化存储,增加了数据总量,以至于用户对业务连续性要求越来越高。现有IT系统主要面临以下问题:.................
提升业务服务的可用性成为互联网行业发展的必然趋势。高可用架构在业务服务系统通过集群、系统冗余等方式提高实体服务器的可用性和可靠性。服务器采用高可用集群架构方式后,单设备故障时,不影响业务连续访问。..................
1.2 开发意义
在集群技术的基础上,一台计算机服务器上的各种资源,如硬盘、网卡、内存等都被充分的调用,能够以较高的性能处理服.....................
高可用集群通过多台服务器提供相同服务的方式增加了计算机服务器系统的稳定性,提升了计算机服务器的长在线能力。高可用集群采用主备服务器自动切换的技术,实现服务器故障自动切换、系统7×24小时不间断运行,避免企业因系统服务器抗负载能力不足,单个节点宕机所引起的经济损失。工作时,Master服务器处于服务.....................
1.3 论文的组织结构
本文描述的是一个高可用网站的设计架构,开发................
论文的结构主要分为七部分。
第一章为绪论,主要介绍高可用架构的研究背景和开发意义,分析......................
第二章为关键技术部分,介绍架构开发所使用到.....................
第三章为系统分析部分,主要通过一些基本的调查方法了解高可...............
第四章为系统概要设计,主要是系统的集群架构设计、一些组.....................
第五章为系统详细设计部分,主要是系统组件的设计与实现,通过各个组件相................
第六章为系统测试部分,测试各个集群的功能,以验证各个组.................
第七章主要是对本文进行的全面总结,反思自己的不足之处和遭....................
2 关键技术
本章节主要介绍了高可用网站架构设计与实现开发过程中所.................
2.1 服务器集群
服务器集群就是指将多个服务器集中起来进行集中管理,对用户而言只有一个服务器。集群可以整合多台计算机资源,如内存,硬盘,网卡等,这..................
2.2 集群技术的分类
高可用集群:又称HA集群,此类集群可以提升服务的可靠性, 避免单点故障引起的服务中断。
负载均衡集群:又称LB集群,该类集群一..........................能力。
2.3 Apache介绍
Apache是世界上使用最多的Web服务器,阿里巴巴、百度、网易等公司都在使用,市场占有率达60%左右。Apache具有以下五种特性:..................
虚拟主机的类型包括基于名称的虚拟主机、基于IP地址的虚拟主机,本架构测试所使用的就是基于IP地址的虚拟主机,使用虚拟主机...将不同的...................
Apache支持https,以密文的方式传递数据...................
2.4 Keepalived介绍
Keepalived基于VRRP(虚拟路由冗余协议)协议开发,Keepalived的作用是实现HA集群。Keepalived通过心跳信息判断后台服务..........................
2.5 HAProxy介绍
HAProxy是一个开源的、高性能的、基于TCP和HTTP应用的负载均衡软件,借助HAProxy可快速、可靠地提供基于TCP和HTTP......................
HAProxy实现四层、七层应用的调度。HAProxy具有以下几种特性:(1) 可靠性和稳定性非常好,可以与硬件的F5相媲美。(2) 最高可.........................
(3) 支持多种负载均衡算法 ,同时也支持session会话保持。(4) 支持虚拟主机功能。(5) 从HAProxy 1.3版本后开始支持连接拒绝、全透明.........................。
2.6 MySQL数据库
MySQL是一个非常快速、多线程、多用户和功能强大的关系型数据库服务器软件。MySQL服务器具有以下四种特性1、开源的、跨平台的 2、支持多种存储引擎 3、支持多种主从复制4、支持多种安装部署方式。MySQL使用c和c++编写.......................................
增量备份、差异备份,根据备份的结果..................
2.7 Mycat介绍
Mycat是一个开源的分布式数据库系统,实现了MySQL协议的客户端,用户可以将它看做数据库代理服务器,将MySQL请求发送给Myc.....................
3 系统分析
本章主要对高可用网站架构设计与实现分析的描述,主.......................
3.1 可行性分析 3.1.1 技术可行性
本文设计与实现的高可用网站的设计架构与实现是采用将多个软件组合、保证其可用性的同时保证其稳定性,并且针对这些软件进行过大..................
3.1.2 经济可行性
本文设计与实现的高可用网站的设计架构与实现所需要的开发软件主要是Nginx、Keepalived、MySQL等开源软件,开源意味着免费,不需要..................
3.1.3 法律可行性
基于网站架构设计与实现所需要的开发环境为Linux,使用的软件为Nginx、Keepalived、Mycat等都是免费、开源的,不存在版权纠纷问题,而且本系...............
3.2 功能需求分析
(1)应用程序需要7×24小时提供不间断服务,确保用户可以随时访问应用。传统网站架构如图3-1所示,传统架构客户端访问Web服务,压力全部在Web容................
(2) 保证用户访问质量。根据大数据统计分析,页面2~3秒响应数据是大多数人能够接受的,页面5秒以上响应时间,页面的访..........................
(3) 用户数据的可靠性。数据库实现双主复制和读写分离。双主复制避免数据库形成单点故障,Mycat读写分离降低数据库的................
高可用网站架构设计与实现根据全面的调查研究以及分析当前的服务架构模式,通过传统网站架构与高可用网站架构对比研究,提出了本架构的设计方案。根据调查研究以及实际分析得出了高可用网站设计框架的具体功能模............
图3-1 传统网站架构图
但这种架构也有局限性:只适合于中大型企业,而一些超大型企业,如天猫、淘宝、京东、12306等,高可用集群的服务...............
图3-2 高可用网站架构图
3.3 性能分析
(1)安全性。高可用网站架构通过调度器将客户端请求发送给Nginx反向代理,Nginx将请求发送给后端............
(2)可靠性。高可用网站架构通过集群的方式部署,极大的避免了单点.................
(3)高抗负载性。高可用网站架构通过设置的调......................站将出现503错误,避免整个服务瘫痪。
(4)高可用性。服务不可用状态时间短,一台机器处.................。
4 系统概要设计
本章将对高可用网站架构设计与实现架构设计方面,各个部件的选择与........................
4.1 负载均衡器的选择
负载均衡器有LVS以及HAProxy两种。
4.1.1 LVS
LVS是基于IP的负载均衡技术,有很强的负载能力,作为L.........
4.1.2 HAProxy
HAProxy是基于TCP和HTTP应用开发的一款负载均衡软件,借助HAProxy可快速、可靠地提供基于TCP和HTTP应用的负载均衡解决方案。HAProxy................
HAProxy具有两大特性:一是可靠和稳定,可以......................可达10Gbps。
通过LVS和HAProxy对比,为了使.....................
4.2 服务器架构的选择
本架构Web服务器架构选择有两种方案:(1)Apa.................
数据库架构采用MySQL+Mycat读写分离,MySQL数据库双主复制。
4.2.1 Apache+Nginx反向代理
Apache+Nginx反向代理既可以实现负载均衡集群,又可....................
Apache+LVS实现负载均衡集群。LVS基于内核工作,稳定性强,可配置操作简便,可拓展性不...................
4.2.2 MySQL+Mycat读写分离
为了避免高峰期访问数据库导致数据库负载不足,进而导致数据库瘫痪,本架构采用Mycat读写分离,一台数据库.................
4.3 搭建系统环境
通过以上分析及环境的综合因素考虑,最终确立了本架构。如表4-1所示。
表4-1 各服务器IP及安装的软件安装表
主机名
服务器参数
IP地址
任务角色
Nginx01
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.7
VIP192.168.183.100
Nginx反向代理
KeepalivedHA集群
Nginx02
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.8
VIP192.168.183.100
Nginx反向代理
KeepalivedHA集群
HAProxy01
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.9
HAProxy负载均衡
KeepalivedHA集群
HAProxy02
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.10
HAProxy负载均衡
KeepalivedHA集群
Mycat01
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.11
Mycat读写分离
Mycat02
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.12
Mycat读写分离
MySQL01
内存128G
硬盘18T
CPU:Xeon Bronze 3106
192.168.183.13
MySQL双主复制
MySQL02
内存256G
硬盘18T
CPU:Xeon Gold 6240
192.168.183.14
MySQL双主复制
主机名
服务器参数
IP地址
任务角色
Apache01
内存256G
硬盘18T
CPUXeon Bronze 3106
192.168.183.15
Apache提供Web服务
Apache02
内存256G
硬盘18T
CPUXeon Bronze 3106
192.168.183.16
Apache提供Web服务
首先两台MySQL做双主复制,便于做冷备份,提高系统的可靠性。其次两台Mycat做读写分离,避免高峰期访问MySQL导致的系统故...................
5 系统详细设计
本章将对高可用网站架构设计与实现系统详细设计方面,各个部件的安装、部署和组合进行介绍,通过这些介绍可以了解高可用网..................
5.1 配置Apache
安装配置Apache,确保Web服务的正常访问。查看当前的网络状态,方便配置基于IP的虚拟主机安装配置Apache,需要新加一块..............................
图5-1 http运行状态图
核心代码如下:
[root@mycat02 ~]# vim /etc/httpd/conf.d/web2.conf
ServerName music.linux.com //主机名称
documentRoot /webdata02 //文档根路径位置
........................
5.2 配置Nginx
源码编译安装Nginx后,备份并修改Nginx配置文件。编辑Nginx配置文件,一是使后端实体客户端能够接受到真实的客户端IP信..................
Nginx核心代码如下:
[root@nginx01 ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream; //默认文件类型
sendfile on;//调用sendfile函数降低系统负载
keepalive_timeout 65;//连接超时时间
limit_req_zone $binary_remote_addr zone=one:100m rate=12r/m;//保存用户IP地址大小为100M,每分钟可以访问12次
upstream websrv {//设置负载均衡的服务器
...................................
5.3.1 配置Keepalived
安装配置Keepalived,修改Keepalived配置文件有以下四个目的:一是使Keepalived能够运行shell脚本。二是生成虚拟IP。三是配置状态为...................
图5-2 端口信息图
核心代码如下:
[root@nginx01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { //全局配置
router_id nginx01 //路由器id,可以自行修改
}
vrrp_script check_nginx { //定义脚本存放的位置,以及休眠时间
script "/etc/keepalived/checknginx.sh"
interval 1}
......................
5.3.2 编写脚本
为了使Keepalived能够检测nginx状态,且Keepali....................
Shell脚本核心代码如下:
[root@nginx01~]#vim /etc/keepalived/checknginx.sh
#!/bin/bash
#
curl 127.0.0.1 &> /dev/null //文本访问本机的Web服务,消息重定向到黑洞文件
.....................
故障测试,测试脚本能否正常执行。通过查看VIP转移和日....................
5.4 配置MySQL
安装mariadb-server,配置mariadb配置文件,需要开启二进制日志log_bin文件,从而配置MySQL双主复制。在配置主从复制之前,需要在主服务器上创建从服务器能够登录的用户,确保主从复制成功。查看主节....................
图5-3 主从复制线程状态图
MySQL核心代码如下:
//查看Master服务器的二进制日志文件状态
MariaDB [(none)]> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mast..........................
5.5 配置Mycat实现读写分离
源码编译安装JDK,Mycat基于Java语言编写,需要JDK环境。在MySQL主服务器上创建能够在Mycat上运行的用户,确保读写分离能够成.............
.
图5-4 Mycat服务状态图
Mycat核心代码如下
[root@mycat01 ~]# vim /usr/local/ mycat /conf/schema.xml
//逻辑数据库,根据dataNode将逻辑数据库和真实数据库连接,sqlMaxLimit限制数据返回
5.6 HAProxy的部署安装 安装配置HAProxy,修改HAProxy配置文件,配置负载..................... 图5-5 HAProxy启动状态图 HAProxy核心代码如下: [root@haproxy01 ~]# vim /etc/haproxy/haproxy.cfg Global maxconn 2000 //最大连接数为2000 nbproc 1 //进程数量为1 user nobody //运行HAProxy用户 group nobody//运行HAProxy用户所在组 log 127.0.0.1 local0 info //日志存放在本机,通过local0输出 ...................... 5.7.2 编辑Keepalived配置文件 编辑Keepalived配置文件,使其能够运行shell脚本,并生成VIP,设置认证用户密码。并确保Keepalived启动。 Keepalived核心代码如下: [root@haproxy01 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id haproxy01 } vrrp_script check_ mycat { script "/etc/keepalived/check mycat.sh" interval 1 } .................................. 5.8 建立Web页面 建立Web页面,页面将数据库中的数据映射到网页页面中,方便数据的读取。 核心代码如下: header("Content-type: text/html; charset=utf-8"); $con=mysql_connect('192.168.183.100:8066', 'martin', 'redhat'); //连接数据库 if(!$con){//判断数据库是否连接成功 die('connect failed!'); }else{ echo "数据库连接成功!"; } mysql_select_db("runoob", $con); mysql_query("SET NAMES utf8"); $result = mysql_query("SELECT Name,Age FROM jiaowu.students"); echo " ..................... 系统测试的目的是对当下已经完成的高可用集群架................. 高可用网站架构设计与实现在测试的时候主.要采用.................... 6.3.1 测试通过Apache访问Web网页页面 测试Apache访问,通过直接访问两............. 图6-1 直接访问Apache 图6-2 直接访问Apache 如图6-1,图6-2所示,通过浏览器能够正.......................... 6.3.2 测试通过Nginx访问服务 测试Nginx能否正常工作,通过直接.......... 图6-3 通过Nginx访问Apache 图6-4 通过Nginx访问Apache 如图6-3,图6-4所示,通过浏览器能够正常访问Nginx,Nginx反向代理正常。 6.3.3 测试通过VIP虚拟网络访问Web网页页面 测试通过VIP访问Apache................ 图6-5 通过VIP访问Apache 图6-6 通过VIP访问Apache 如图6-5,图6-6所示,通过浏览器能够正......... 6.4 测试MySQL服务的使用 使用Mariadb-server直接连接数据.................... 图6-7 数据库查询结果 6.4.1 测试MySQL双主复制 在Slave数据库上查询jiaowu.students内的内容,如.................... 图6-8 数据库结果 6.4.2 测试通过Mycat访问MySQL服务 通过Mycat的8066端口访问................... 测试结果如图6-9所示,能够正常查询到jiaow............. 图6-9 数据库查询结果 根据上述结果,通过Mycat能正常访问MySQL服务。 6.4.3 测试通过VIP访问MySQL服务 通过VIP的8066端口测试能否正常访问My...................... 测试结果如图6-10所示,能够正常查询到jiaowu.students内的信息,Keepalived服务工作正常。 图6-10 数据库查询结果 6.5 测试MySQL的高可用集群 模拟一台MySQL服务器宕机,测试通过VIP虚拟网络能否正常访问MySQL服务。 如表6-1序号2所示,在一台My.................. 模拟一台HAProxy节点宕机,测试通过VIP虚拟网络能否正常访问MySQL服务。 如图表6-1序号4所示,在.......................... 表6-1 测试结果 序号 测试项目 测试功能 预测结果 实际结果 1 通过VIP访问MySQL服务 MySQL服务功能正常提供 能够访问MySQL服务 权限拒绝,无法正常访问MySQL服务,不符合预测结果 2 一台MySQL宕机,通过VIP访问MySQL服务 MySQL服务功能正常提供 能够访问MySQL服务 符合预测结果 3 一台MySQL宕机,一台Mycat宕机,通过VIP访问MySQL服务 MySQL服务功能正常提供 能够访问MySQL服务 符合预测结果 4 一台MySQL宕机,一台Mycat宕机,一台HAProxy宕机,通过VIP访问MySQL服务 MySQL服务功能正常提供 能够访问MySQL服务 符合预测结果 6.6 测试Apache的高可用集群 模拟一台Nginx服务器宕机,测试通过VI..............................台的一台Nginx代理服务器,Nginx再将请求转发给Web后端设备。 模拟一台Keep..........................。 图6-11 Nginx01网卡的IP信息 图6-12 Nginx01日志 图6-13 Nginx02日志 图6-14 Nginx02网卡的IP信息 表6-2 测试结果 序号 测试项目 测试功能 预测结果 实际结果 1 VIP访问虚拟网络 Web服务功能 能够访问Web服务 出现Welcome访问界面,不符合预测结果 2 一台Nginx宕机,访问VIP虚拟网络 Web服务功能 能够访问Web服务 符合预测结果 3 一台Nginx,Haproxy宕机,访问VIP Web服务功能 能够访问Web服务 符合预测结果 高可用网站设计架构与实现的成功之处在于能够确保在某一个服务器宕机的情况下,其集群所提供的服务还能够正常提供,很好的避免了单点故障。失败之处不仅仅在于MySQL构建主从复制时基础环境没有构建好,而且........... 高可用网站架构设............. 在云服务器的构架中,高可用集群可以通过Kubernetes或其它批量部署容器软件批量部署docker容器到云平台上,配合................. 高可用网站架构设计与实现.rar-互联网文档类资源-CSDN下载内容包括详细设计文档word版,附带开题报告和相关PPT等文档,供大家参考学习。也可在本博客主页找到更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/u013253075/48595338?spm=1001.2014.3001.5503 6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试Nginx服务的使用
7 总结与展望
需要详细内容的在下面链接下载