当前位置:首页 » 云服务器 » 服务器搭建分布式

服务器搭建分布式

发布时间: 2023-09-11 09:28:46

A. 基于mogileFS搭建分布式文件系统--海量小文件的存储利器

1.简介

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。

当下我们处在一个互联网飞速发展的信息 社会 ,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化。在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集、数据存储、数据搜索、数据共享、数据传输、数据分析、数据可视化等一系列问题。

传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制、横向扩展受交换设备限制、节点受文件系统限制。

然而分布式存储的出现在一定程度上有效的缓解了这一问题,之所以称之为缓解是因为分布式存储在面对海量数据存储时也并非十全十美毫无压力,依然存在的难点与挑战例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。

2.分布式文件系统的一些解决方案

Google Filesystem适合存储海量大个文件,元数据存储与内存中

HDFS(Hadoop Filesystem)GFS的山寨版,适合存储大量大个文件

TFS(Taobao Filesystem)淘宝的文件系统,在名称节点上将元数据存储与关系数据库中,文件数量不在受限于名称节点的内容空间,可以存储海量小文件LustreOracle开发的企业级分布式系统,较重量级MooseFS基于FUSE的格式,可以进行挂载使用MogileFS

擅长存储海量的小数据,元数据存储与关系型数据库中

1.简介

MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。

目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个.

国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 薯仔, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。

2.MogileFS特性

1) 应用层提供服务,不需要使用核心组件

2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)

3)自动复制文件,复制文件的最小单位不是文件,而是class

4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信

5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现

6)不用共享任何数据

3.MogileFS的组成

1)Tracker--跟踪器,调度器

MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等.这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed), 包括将请求负载平衡到多个"query workers"中,然后让 mogilefs的子进程去处理.

mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡.trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,

tarcker的配置文件为/etc/mogilefs/mogilefsd.conf,监听在TCP的7001端口

2)Database--数据库部分

主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用

3)mogstored--存储节点

数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何 WebDAV 服务器都可以, 不过推荐使用 mogstored . mogilefsd可以配置到两个机器上使用不同端口… mogstored 来进行所有的 DAV 操作和流量,IO监测, 并且你自己选择的HTTP服务器(默认为 perlbal)用来做 GET 操作给客户端提供文件.

典型的应用是一个挂载点有一个大容量的SATA磁盘. 只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点.当然还需要mogadm这个工具增加这台机器到Cluster中.

配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口

4.基本工作流程

应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.

tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。

应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).

应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.

tracker 将该名称和域命的名空间关联 (通过数据库来做的)

tracker, 在后台, 开始复制文件,知道他满足该文件类别设定的复制规则

然后,应用程序通过 “get_paths” 请求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情况回复(在内部经过 database/memcache/etc 等的一些抉择处理), 该文件可用的完整 URLs地址列表.

应用程序然后按顺序尝试这些URL地址. (tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做..)

1.拓扑图

说明:1.用户通过URL访问前端的nginx

2.nginx根据特定的挑选算法,挑选出后端一台tracker来响应nginx请求

3.tracker通过查找database数据库,获取到要访问的URL的值,并返回给nginx

4.nginx通过返回的值及某种挑选算法挑选一台mogstored发起请求

5.mogstored将结果返回给nginx

6.nginx构建响应报文返回给客户端

2.ip规划

角色运行软件ip地址反向代理nginx192.168.1.201存储节点与调度节点1

mogilefs192.168.1.202存储节点与调度节点2

mogilefs192.168.1.203数据库节点

MariaDB192.168.1.204

3.数据库的安装操作并为授权

关于数据库的编译安装,请参照本人相关博文http://wangfeng7399.blog.51cto.com/3518031/1393146,本处将不再累赘,本处使用的为yum源的安装方式安装mysql

4.安装mogilefs. 安装mogilefs,可以使用yum安装,也可以使用编译安装,本处通过yum安装

5.初始化数据库

可以看到在数据库中创建了一些表

6.修改配置文件,启动服务

7.配置mogilefs

添加存储主机

添加存储设备

添加域

添加class

8.配置192.168.1.203的mogilefs 。切记不要初始化数据库,配置应该与192.168.1.202一样

9.尝试上传数据,获取数据,客户端读取数据

上传数据,在任何一个节点上传都可以

获取数据

客户端查看数据

我们可以通过任何一个节点查看到数据

要想nginx能够实现对后端trucker的反向代理,必须结合第三方模块来实现

1.编译安装nginx

2.准备启动脚本

3.nginx与mofilefs互联

查看效果

5.配置后端truckers的集群

查看效果

大功告成了,后续思路,前段的nginx和数据库都存在单点故障,可以实现高可用集群

B. hadoop分布式部署(转载)--贼靠谱

原文地址:https://blog.csdn.net/sjmz30071360/article/details/79889055

1. 集群搭建形式

Hadoop环境搭建分为三种形式:单机模式、伪分布式模式、完全分布模式

单机模式—— 在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。

伪分布式—— 也是在一台单机上运行,但不同的是java进程模仿分布式运行中的各类节点。即一台机器上,既当NameNode,又当DataNode,或者说既是JobTracker又是TaskTracker。没有所谓的在多台机器上进行真正的分布式计算,故称为“伪分布式”。

完全分布式—— 真正的分布式,由3个及以上的实体机或者虚拟机组成的机群。一个Hadoop集群环境中,NameNode,SecondaryName和DataNode是需要分配在不同的节点上,也就需要三台服务器。

前两种模式一般用在开发或测试环境下,生产环境下都是搭建完全分布式模式。

从分布式存储的角度来说,集群中的节点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。

从分布式应用的角度来说,集群中的节点由一个JobTracker和若干个TaskTracker组成。JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。

2. 环境

    操作系统:CentOS7(红帽开源版)

    机器:虚拟机3台,(master 192.168.0.104, slave1 192.168.0.102, slave2 192.168.0.101)

    JDK:1.8(jdk-8u162-linux-x64.tar)

    Hadoop:2.9.0(http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz)

3. 搭建步骤

3.1 每台机器安装&配置JDK(1台做好后,克隆出其它机器)

1) 创建目录 mkdir /usr/java

2) 上传jdk安装包到 /usr/java/

3) 解压 tar -xvf jdk-8u162-linux-x64.tar

4) 追加环境变量 vi /etc/profile

5) 使环境变量生效 source /etc/profile

6) 检测jdk正确安装 java -version

3.2 修改每台机器主机名(hostname)

hostnamectl set-hostname master  (立即生效)

hostnamectl set-hostname slave1    (立即生效)

hostnamectl set-hostname slave2    (立即生效)

确认修改

3.3 修改每台机器/etc/hosts文件

vi /etc/hosts

修改其中1台,然后scp到其它机器

scp 文件名 远程主机用户名@远程主机名或ip:存放路径

scp hosts [email protected]:/etc/

scp hosts [email protected]:/etc/

修改完之后,互ping其它机器,能互ping则说明修改OK

ping -c 3 slave1 (※ 3表示发送 3 个数据包)

3.4 配置ssh,实现无密码登录

无密码登录,效果也就是在master上,通过ssh slave1或者ssh slave2就可以登录对方机器,而不用输入密码。

1) 每台机器执行ssh-keygen -t rsa,接下来一路回车即可

执行ssh-keygen -t rsa主要是生成 密钥 和 密钥的存放路径

我们用的root用户,公钥私钥都会保存在~/.ssh下

2) 在master上将公钥放到authorized_keys里,命令:cat id_rsa.pub > authorized_keys

3) 将master上的authorized_keys放到其它机器上

scp authorized_keys root@slave1:~/.ssh/

scp authorized_keys root@slave2:~/.ssh/

4) 测试是否成功

3.5 上传&配置hadoop(配置完master后,将/usr/hadoop/整个目录内容到其它机器)

1) 创建目录 mkdir /usr/hadoop

2) 上传hadoop安装包hadoop-2.9.0.tar.gz到 /usr/hadoop/

3) 解压 tar -xvf hadoop-2.9.0.tar.gz

4) 追加环境变量 vi /etc/profile(其它机器也要相应配置一次hadoop环境变量)

5) 使环境变量生效 source /etc/profile

6) 确认环境变量配置OK

7) 创建HDFS存储目录

cd /usr/hadoop

mkdir hdfs

cd hdfs

mkdir name data tmp

/usr/hadoop/hdfs/name    --存储namenode文件

/usr/hadoop/hdfs/data      --存储数据

/usr/hadoop/hdfs/tmp      --存储临时文件

8) 修改/usr/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh文件,设置JAVA_HOME为实际路径

否则启动集群时,会提示路径找不到

9) 修改/usr/hadoop/hadoop-2.9.0/etc/hadoop/yarn-env.sh文件,设置JAVA_HOME为实际路径

10) 配置/usr/hadoop/hadoop-2.9.0/etc/hadoop/core-site.xml

增加hadoop.tmp.dir 和 fs.default.name

11) 配置/usr/hadoop/hadoop-2.9.0/etc/hadoop/hdfs-site.xml

dfs.replication:默认值3

dfs.permissions:默认值为true,设置为true有时候会遇到数据因为权限访问不了;设置为false可以不要检查权限就生成dfs上的文件

12) 配置/usr/hadoop/hadoop-2.9.0/etc/hadoop/mapred-site.xml

cd /usr/hadoop/hadoop-2.9.0/etc/hadoop

cp mapred-site.xml.template mapred-site.xml

maprece.framework.name:指定maprece运行在yarn平台,默认为local

13) 配置/usr/hadoop/hadoop-2.9.0/etc/hadoop/yarn-site.xml

yarn.resourcemanager.hostname:指定yarn的resourcemanager的地址

yarn.nodemanager.aux-services:recer获取数据的方式

yarn.nodemanager.vmem-check-enabled:意思是忽略虚拟内存的检查,如果安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是在实体机上,并且内存够多,可以将这个配置去掉

14) 配置/usr/hadoop/hadoop-2.9.0/etc/hadoop/slaves文件,将里面的localhost删除,配置后内容如下:

15) 整个/usr/hadoop/目录到其它机器

scp -r hadoop root@slave1:/usr/

scp -r hadoop root@slave2:/usr/

3.6 启动Hadoop

1) 启动之前需要格式化一下。因为master是namenode,slave1和slave2都是datanode,所以在master上运行

hadoop namenode -format

格式化成功后,可以看到在/usr/hadoop/hdfs/name目录下多了一个current目录,而且该目录下有一系列文件,如下:

2) 执行启动(namenode只能在master上启动,因为配置在master上;datanode每个节点上都可以启动)

执行 start-all.sh

master上执行jps,会看到NameNode, SecondaryNameNode, ResourceManager

其它节点上执行jps,会看到DataNode, NodeManager

3) 在wins上打开网页,查看HDFS管理页面 http://192.168.0.104:50070查看,提示无法访问

在master上,执行以下命令关闭防火墙,即可访问(为了能够正常访问node节点,最好把其它机器的防火墙也stop了)

systemctl stop firewalld.service

HDFS管理首页

HDFS Datenodes页

访问Yarn管理页: http://192.168.0.104:8088

4)通过主机名也可以访问的设置

win7为例,需要将以下信息追加到C:\Windows\System32\drivers\etc\hosts文件中

192.168.0.104 master

192.168.0.102 slave1

192.168.0.101 slave2

Over!!!搭建成功!!!

4. 运行实例

cd /usr/hadoop/hadoop-2.9.0/share/hadoop/maprece

hadoop jar hadoop-maprece-examples-2.9.0.jar pi 5 10

。。。。。。

=====================================================

如果不关防火墙,子节点可能出现,输入jps后只有jps一个进程,或者是缺进程的情况,关闭防火墙就好了。

C. 入门、快速搭建Docker分布式项目环境

1.什么是Docker

借用下网上传统虚拟机与Docker的对比图片。

传统虚拟化应用程序中,不仅包含应用程序和必要的二进制文件库,还包含一个完整的操作系统。

而Docker容器仅包含应用程序和相关依赖项,在主机的操作系统用户空间中作为一个独立进程运行,与其他容器共享内核,从而实现了虚拟机的资源隔离和分配,具有更高的可移植性和效率提高。

2.为什么使用Docker

1.更快速的交付和部署

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接 使用这个容器来部署代码。

2.高效部署和扩容

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。

3.更高的资源利用率

Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

4.更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

3.Docker的工作原理和概念

自己制作镜像然后上传仓库或使用仓库已有的镜像文件拉取到容器中部署。

为了方便Docker的说明,本次例子使用虚拟机安装CentOS 7来演示。CentOS 7的安装请等查看下篇文章或自行网络。

1.安装之前的准备工作

按照顺序,执行如下操作

1、安装必要的一些系统工具

2、添加软件源信息

3、更新并安装Docker-CE

安装准备工作

2.开启Docker服务

运行docker version 如果出现以下情况,说明当前用户没有 root相关操作权限

无root权限

解决思路

先查看有多少镜像

运行docker run hello-world 测试命令,如果出现下方红框内消息,证明安装成功

3.查看docker基本信息和版本

1.构建Nginx基础镜像

查询nginx镜像

镜像拉取

查看对外的访问路径

怎么才能访问刚才启用的nginx

nginx页面内容

我们可以进入容器,看下这个容器是什么样子

查看nginx在哪个位置

我们发现尽管启动了nginx,但是在外部还是不能访问,这是因为docker具有隔离机制,要不然怎么叫做容器化部署呢

Docker内nginx端口

对Nginx进行外网端口映射;

2.构建Tomcat基础镜像

打开容器后,默认安装目录在 /usr/local/

3.创建自己的专属镜像

用Dockerfile来制作镜像

创建一个新的镜像,并起名字为nywlw

查看新的镜像

运行自己创建的容器

4.删除容器实例

5.删除镜像

每天发布更多新鲜有含量的技术文章、总有一款适合你。

D. 怎么搭建分布式服务器

如何搭建分布式网站服务器,比如我有3台服务器ABC,需要搭建分布式服务。也就需要建立IIS 还由DNS WIN 服务器的 还有更改主机名 很麻烦的,这个需要专业的IT人员来操作的。

以下资料作为参考:
DNS轮循
首先介绍一个DNS系统:传统的DNS解析都是一个域名对应一个IP地址,但是通过DNS轮循技术(负载平衡技术)可以做到一个域名对应到多个IP 上. 这样大家难免就会问,这个技术有什么用呢?

DNS轮循是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术,该项技术可以智能的调整网站的访问量到不同服务器上,减轻网站服务器的压力,实现负载匀衡;如果您感觉到单一的主机已经不堪负载你网站日益增长的访问,那么建议您采用我们的DNS轮循技术。

DNS轮循系统可以根据您的需求设置N台主机作为WEB服务器。目前已有越来多大型的WEB服务器使用DNS轮循来实现负载均衡,服务的分布规划更便捷,扩展性更好,从而提高了网站的稳定性和访问效率,那些大量数据文件请求的客户也得到了更快的响应。

DNS轮循还将给您的网站提供这样的改进,诸如您的网站的数据使用量一直处于不断的增长当中,当达到服务器资源运行瓶颈的情况
下,由于采用了DNS轮循技术,您只需要增加服务器数量就可以平滑升级,而且偶然故障或其他意外情况造成的损失得以避免,7×24小时可靠性的持续的运行
成为可能。

如果您真的希望自己的网站能够一直稳定的在线运行,尽量的减少宕机的比率,那么除了采用比较好的网站空间技术支持之外,还可以采用时代互联域名的DNS轮循功能来实现网站的永久在线负载平衡
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其
他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。均衡负载
能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。这种群集技术可以用最少的投资获得接近于大型主机的性能。

网络负载均衡的优点

第一,网络负载均衡能将传入的请求传播到多达32台服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载均衡技术保证即使是在负载很重的情况下,服务器也能做出快速响应;

第二,网络负载均衡对外只需提供一个IP地址(或域名);

第三,当网络负载均衡中的一台或几台服务器不可用时,服务不会中断。网络负载均衡自动检测到服务器不可用时,能够迅速在剩余的
服务器中重新指派客户机通讯。这项保护措施能够帮助你为关键的业务程序提供不中断的服务,并可以根据网络访问量的增加来相应地增加网络负载均衡服务器的数
量;

第四,网络负载均衡可在普通的计算机上实现。

网络负载均衡的实现过程

在Windows Server 2003中,网络负载均衡的应用程序包括Internet信息服务(IIS)、ISA
Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows Media
Services(Windows视频点播、视频广播)等服务。同时,网络负载均衡有助于改善服务器的性能和可伸缩性,以满足不断增长的基于
Internet客户端的需求。

网络负载均衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称。下面,我们将在两台安装Windows Server 2003的普通计算机上,介绍网络负载均衡的实现及应用。

这两台计算机中,一台计算机名称为A,IP地址为192.168.0.7;另一台名为B,IP地址为192.168.0.8。
规划网络负载均衡专用虚拟IP地址为192.168.0.9。当正式应用时,客户机只需要使用IP地址192.168.0.9来访问服务器,网络服务均衡
会根据每台服务器的负载情况自动选择192.168.0.7或者192.168.0.8对外提供服务。具体实现过程如下:

在实现网络负载均衡的每一台计算机上,只能安装TCP/IP协议,不要安装任何其他的协议(如IPX协议或者NetBEUI协议),这可以从“网络连接属性”中查看。

第一步,分别以管理员身份登录A机和B机,打开两台机的“本地连接”属性界面,勾选“此连接使用下列项目”中的“负载均衡”项并进入“属性”对话框,将IP地址都设为192.168.0.9(即负载均衡专用IP),将子网掩码设置为255.255.255.0;

第二步,分别进入A机和B机的“Internet协议(TCP/IP)”属性设置界面,点击“高级”按钮后,在弹出的“高级TCP/IP设置”界面中添加IP地址192.168.0.9和子网掩码设置为255.255.255.0。

第三步,退出两台计算机的“本地连接属性”窗口,耐心等一会儿让系统完成设置。
以后,如果这两台服务器不能满足需求,可以按以上步骤添加第三台、第四台计算机到网络负载均衡系统中以满足要求。

E. 如何用SQLServer建立分布式数据库

很多组织机构慢慢的在不同的服务器和地点部署SQLServer数据库——为各种应用和目的——开始考虑通过SQLServer集群的方式来合并。

将SQLServer实例和数据库合并到一个中心的地点可以减低成本,尤其是维护和软硬件许可证。此外,在合并之后,可以减低所需机器的数量,这些机器就可以用于备用。

当寻找一个备用,比如高可用性的环境,企橡纳业常常决定部署Microsoft的集群架构。我常常被问到小的集群(由较少的节点组成)SQLServer实例和作为中心解决方案的大的集群哪一种更好。在我们比较了这两个集群架构之后,我让你们自己做决定。

什么是Microsoft集群服务器

MSCS是一个WindowsServer企业版中的内建功能。这个软件支持两个或者更多服务器节点连接起来形成一个“集群”,来获得更高的可用性和对数据和应用更简便的管理。MSCS可以自动的检查到服务器或者应用的失效,并从中恢复。你也可以使用它来(手动)移动服务器之间的负载来平衡利用率以及无需停机时间来调度计划中的维护任务。

这种集群设计使用软件“心跳”来检测应用或者服务器的失效。在服务器失效的事件中,它会自动将资源(比如磁盘和IP地址)的所有权从失效的服务器转移到活动的服务器。注意还有方法可以保持心跳连接的更高的可用性,比如站点全面失效的情况下。

MSCS不要求在客户计算机上安装任何特殊软件,因此用户在灾难恢复的经历依赖于客户-服务器应用中客户一方的本质。客户的重新连接常常是透明的,因为MSCS在相同的IP地址上重启应用、文件共享等等。进一步,为了灾难恢复,集群的节点可以处于分离的、遥远的地点。

在集群服务器上的SQLServer

SQLServer2000可以配置为最多4个节点的集群,而SQLServer2005可以配置为最多8个节点的集群。当一个SQLServer实例被配置为集群之后,它的磁盘资源、IP地址和服务就形成了集群组来实现灾难恢复。

SQLServer2000允许在一个集群上安装16个实例。根据在线帮助,“SQLServer2005在一个服务器或者处理器上可以支持最多50个SQLServer实例,”但是,“只能使用25个硬盘驱动器符,因此如果你需要更多的实例,那么需要预先规划。”

注意SQLServer实例的灾难恢复阶段是指SQLServer服务开始所需要的时间,这可能从几秒钟到几分钟。如果你需要更高的可用性,考虑使用其神拆他的方法,比如logshipping和数据库镜像。

单个的大的SQLServer集群还是小的集群

下面是大的、由更多的节点组成的集群的优点:

◆更高的可用新(更多的节点来灾难恢复)。

◆更多的负载游如枣均衡选择(更多的节点)。

◆更低廉的维护成本。

◆增长的敏捷性。多达4个或者8个节点,依赖于SQL版本。

◆增强的管理性和简化环境(需要管理的少了)。

◆更少的停机时间(灾难恢复更多的选择)。

◆灾难恢复性能不受集群中的节点数目影响。

下面是单个大的集群的缺点:

◆集群节点数目有限(如果需要第9个节点怎么办)。

◆在集群中SQL实例数目有限。

◆没有对失效的防护——如果磁盘阵列失效了,就不会发生灾难恢复。

◆使用灾难恢复集群,无法在数据库级别或者数据库对象级别,比如表,创建灾难恢复集群。

虚拟化和集群

虚拟机也可以参与到集群中,虚拟和物理机器可以集群在一起,不会发生问题。SQLServer实例可以在虚拟机上,但是性能可能会受用影响,这依赖于实例所消耗的资源。在虚拟机上安装SQLServer实例之前,你需要进行压力测试来验证它是否可以承受必要的负载。

在这种灵活的架构中,如果虚拟机和物理机器集群在一起,你可以在虚拟机和物理机器之间对SQLServer进行负载均衡。比如,使用虚拟机上的SQLServer实例开发应用。然后在你需要对开发实例进行压力测试的时候,将它灾难恢复到集群中更强的物理机器上。

集群服务器可以用于SQLServer的高可用性、灾难恢复、可扩展性和负载均衡。单个更大的、由更多的节点组成的集群往往比小的、只有少数节点的集群更好。大个集群允许更灵活环境,为了负载均衡和维护,实例可以从一个节点移动到另外的节点。

F. 什么是服务器分布式部署

1、什么是数据中心分布式部署

数据中心分布式部署,边缘数据中心是基础,是CDN的更下一层,服务对象是IDC及CDN需求的客户。对于流量大的客户,可多点分布,就近部署。

2、分布式部署的好处

A:在全国没有任何一个数据中心可以覆盖全国的每个角落,数据中心集中在一个点不能更好的服务全国各区域。分布式部署相当于在欧洲很多个国家之间的互联网关系。二三线城市就近布点,三级城市网络品质提升。针对网游、网络视频、网络下载等全国分布节点需求较高的客户,选择分布式节点托管在降低成本的同时还更好的保障了二、三级城市业务的网络运营品质,提升用户体验。
B:二三级城市较低的资源成本直接降低了客户网络资源投入。在良好品质保障的情况下,以更低价格购入,实现良好性价比。

G. 如何搭建大型网站系统

程序员们都希望能通过自己的努力学习,技术提升,拿到更好的收入,技术提升和高收入虽然不是轻易就能实现的,但总是有章可循。

一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿的用户实时消息传输,网络它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术,这些技术和手段可以广泛运行在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

一、最开始的网站架构

最初的架构,应散基用程序、数据库、文件都部署在一台服务器上,如图:

二、应用、数据、文件分离

随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。

三、利用缓存改善网站性能

在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。

缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等,这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但冲薯谨因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。

四、使用集群改善应用服务器性能

应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。

常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx是七层负载均衡和HAProxy支持四层、七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

五、数据库读写分离和分库分表

随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。

六、使用CDN和反向代理提高网站性能

假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的,这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样,所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。

而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓手册存数据才会继续走应用服务器获取,也减少了获取数据的成本。反向代理有Squid,Nginx。

七、使用分布式文件系统

用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS。

八、使用NoSql和搜索引擎

对于海量数据的查询,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

九、将应用服务器进行业务拆分

随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如网络分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。

十、搭建分布式服务

这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择。

大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

如果你还有这些疑问,成熟的网站架构师需要学什么核心技能?Java程序员如何晋升为互联网架构师?Java语言在架构搭建中扮演什么角色?怎样成为年收入几十万的架构师?欢迎来电来访昌平北大青鸟java培训。

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:427
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:552
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:740
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:533
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:141
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:229
java驼峰 发布:2025-02-02 09:13:26 浏览:646
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:529
linuxadobe 发布:2025-02-02 09:09:43 浏览:207
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:721