一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Load Balance

Nginx、HAProxy、LVS三者的优缺点

一、Nginx优点: 1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。 2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。 3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。 4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。 5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。 6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。 7、可作为中层反向代理使用。 8、可作为静态网页和图片服务器。 9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。 Nginx常规的和HTTP请求和相应流程图: Nginx缺点: 1、适应范围较小,仅能支持http、https、Email协议。 2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。   二、LVS优点: 1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。 2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。 3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。 4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。 LVS DR(Direct Routing)模式的网络流程图: LVS的缺点: 1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。 2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。   三、HAProxy优点: 1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段) 2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。 3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。 4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。 5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种 ① roundrobin 表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法。该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。最大支持4095个后端主机; ② leastconn 连接数最少的服务器优先接收连接。leastconn建议用于长会话服务,例如LDAP、SQL、TSE等,而不适合短会话协议。如HTTP.该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。 ③ static-rr 每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权限是无效的。另外,它对服务器的数量没有限制。该算法一般不用; ④ source 对请求源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一个服务器。如果哈希的结果随可用服务器数量而变化,那么客户端会定向到不同的服务器;该算法一般用于不能插入cookie的Tcp模式。它还可以用于广域网上为拒绝使用会话cookie的客户端提供最有效的粘连;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。 ⑤ uri 表示根据请求的URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一个服务器。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端;该算法一般用于后端是缓存服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。 ⑥ url_param 在HTTP GET请求的查询串中查找<param>中指定的URL参数,基本上可以锁定使用特制的URL到特定的负载均衡器节点的要求;该算法一般用于将同一个用户的信息发送到同一个后端服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。 ⑦ hdr(name) 在每个HTTP请求中查找HTTP头<name>,HTTP头<name>将被看作在每个HTTP请求,并针对特定的节点;如果缺少头或者头没有任何值,则用roundrobin代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。 ⑧ rdp-cookie(name) 为每个进来的TCP请求查询并哈希RDP cookie<name>;该机制用于退化的持久模式,可以使同一个用户或者同一个会话ID总是发送给同一台服务器。如果没有cookie,则使用roundrobin算法代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。 haproxy的工作模型图: HAPorxy缺点: 1. 不支持POP/SMTP协议 2. 不支持SPDY协议 3. 不支持HTTP cache功能。现在不少开源的lb项目,都或多或少具备HTTP cache功能。 4. 重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。 5. 多进程模式支持不够好 ——————— 作者:qi_li_juan 来源:CSDN 原文:https://blog.csdn.net/qlj324513/article/details/81541282 版权声明:本文为博主原创文章,转载请附上博文链接!

龙生   24 Mar 2019
View Details

nginx实现请求的负载均衡 + keepalived实现nginx的高可用

前言 使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。 摘自《大型网站技术架构_核心原理与案例分析》 另外,大家可以看我的这两篇博客:LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡 和 主从热备+负载均衡(LVS + keepalived),对比下这三篇博客,其中区别及各自的优缺点需要大家好好体会。 环境准备 192.168.0.221:nginx + keepalived   master 192.168.0.222:nginx + keepalived   backup 192.168.0.223:tomcat 192.168.0.224:tomcat 虚拟ip(VIP):192.168.0.200,对外提供服务的ip,也可称作浮动ip 各个组件之间的关系图如下: tomcat做应用服务器 tomcat的安装不在本博客范围之内,具体可参考virtualBox安装centos,并搭建tomcat,tomcat的webapps下记得放自己的应用,我的是myWeb,如果大家也用我的myWeb,那么index.jsp中的ip需要换成自己的 将192.168.0.223、192.168.0.224上的tomcat启动起来,tomcat的路径可能和我的不一致,需要写成自己的 # cd /usr/local/tomcat7/bin # ./startup.sh 访问myWeb如下 nginx做负载均衡 nginx的安装,本文就不讲述了,具体可参考LVS + keepalived + nginx + tomcat 实现主从热备 + 负载均衡 nginx.conf内容如下

主从nginx的配置文件完全一样,nginx.conf配置可复杂可简单,大家根据自己的情况自行配置,照搬上述配置也是可以的。 配置好后,启动nginx,路径要写自己的 # cd /usr/local/nginx/sbin # ./nginx 访问nginx,效果如下: 两台nginx服务器服务正常,此时是没有主从之分的,两者级别一样高,当配置keepalived之后就有了主从之分了。 keepalived实现nginx高可用(HA) keepalived的安装本文就不讲述了,具体可参考主从热备+负载均衡(LVS + keepalived) keepalived作用其实在第一张图中已经有所体现,主要起到两个作用:实现VIP到本地ip的映射; 以及检测nginx状态。 master上的keepalived.conf内容如下:

backup上的keepalived.conf内容如下:

nginx检测脚本check_nginx_pid.sh内容如下:

启动keepalived # service keepalived start 访问VIP,效果如下: 我们来看下keepalived的日志信息 master(192.168.0.221): backup(192.168.0.222): 当我们把master上的keepalived停掉(模拟宕机),再来看下keepalived日志 原master(192.168.0.221): 原backup(192.168.0.222): 通过VIP可以正常访问服务,前端请求感受不到后端nginx的切换;重新唤醒原master(192.168.0.221)的测试这里就不进行了,大家自行测试 注意点 1、执行脚本时报错:/bin/sh^M: bad […]

龙生   24 Mar 2019
View Details

keepalived实现双机热备

keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。这些工作都是keepalived自动完成,不需要人工干涉,需要人工做的只是修复发生故障的服务器,以下通过示例来演示。 前提:为了测试能顺利进行,需先关闭selinux和firewalld。 测试环境如下: 1 2 3 4 5 keepalived主机: 10.0.0.20 keepalived备机: 10.0.0.21 http服务器1:   10.0.0.22 http服务器2:   10.0.0.23 VIP :       10.0.0.100   一、两台http服务器的安装 1、  两台机均安装httpd 1 $ sudo yum install -y httpd   2、  添加首页 1 2 3 4 5 6 7 $ sudo -i #http服务器1设置 # echo “10.0.0.22” >/var/www/html/index.html #http服务器2设置 # echo “10.0.0.23” >/var/www/html/index.html   3、  启动并设置开机启动httpd 1 2 $ sudo systemctl start httpd $ sudo systemctl enable httpd   二、两台keepalived主机的设置 1、  两台机均安装keepalived 1 2 3 #安装依赖文件与keepalive $ sudo yum install -y openssl openssl-devel keepalived   2、  keepalived主机配置   1 2 3 4 […]

龙生   24 Mar 2019
View Details

详解keepalived配置和使用

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lanlian.blog.51cto.com/6790106/1303195 一、keepalived简介: keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。   工作原理 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下: Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。 Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。 Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。   二、实验步骤: 1.创建管理节点在node1上,建立双机互信node1和node2,然后同步时间,安装keepalived 1 2 3 4 [root@node1~]# ansible all -m yum -a 'name=keepalived state=present' [root@node1keepalived]# rpm -qc keepalived /etc/keepalived/keepalived.conf//生成的主配置文件 /etc/sysconfig/keepalived   2.在node1上配置文件需要做一下修改 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 global_defs{    notification_email {         root@localhost         //收邮件人,可以定义多个    }    notification_email_from kaadmin@localhost       //发邮件人可以伪装    smtp_server 127.0.0.1  //发送邮件的服务器地址    smtp_connect_timeout 30 //连接超时时间    router_id LVS_DEVEL        } vrrp_instanceVI_1 {    //每一个vrrp_instance就是定义一个虚拟路由器的     state MASTER       //由初始状态状态转换为master状态     interface eth0         virtual_router_id 51    //虚拟路由的id号,一般不能大于255的     priority 100    //初始化优先级     advert_int 1    //初始化通告     authentication {   //认证机制         auth_type […]

龙生   24 Mar 2019
View Details

AMQP消息服务器 RabbitMQ

RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。 AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型: from:https://www.oschina.net/p/rabbitmq

龙生   29 Aug 2017
View Details

Windows server 2012网络负载均衡NLB

Windows server 2012网络负载均衡NLB 今天把NLB给装了下,就截图分享给大家吧,其实界面貌似和2003都差不多,基本上没有什么改变,算是给大家熟悉界面了。 虽然工作组也可以搭建NLB,不过实际公司使用大多数都是域环境,对于工作组我就不多做介绍了,大家可以自行百度,本次因为是实验,所以我在虚拟机里面给每台机器只加了一块网卡,一般来说,都是需要两块以上的网卡的 我这里有三台机器,NLB1,NLB2和NLB3 首先打开NLB2和NLB3服务器管理器,添加网络负载均衡NLB 接下来在NLB1机器搭建域环境 这里我们的域名就设置为loveworld.com 环境搭起来后,我们就开始配置NLB,打开负载均很管理器,选择新建 添加一台机器作为一个节点 基本上按照默认设置就可以 设置一个集群ip,以后我们访问这个ip就可以了 这里我们设置为多播,关于多播和单播,建议大家百度下,大家也可先把实验做完,然后再百度深入理解 然后添加另外一台机器 这里的优先级设置为2 配置完成 为了方便验证,我们在NLB2和NLB3两台机器上安装了IIS,然后设置index.htm分别显示为NLB2、NLB3。 我们在NLB1上首先ping一下集群的ip 10.1.1.1,可以ping通,然后再NLB1上打开浏览器,输入http://10.1.1.1,如图: 在这里我们可以发现是打开的NLB2的WEB服务,我们将NLB2这台机器暂停掉 然后清空IE历史记录,重新在NLB1上输入http://10.1.1.1 在这里,我们看到,自动切换到了NLB3上面 在实际操作过程中,我们可以搭建两台web服务器,两台web服务器可以用DFS文件服务实现同步,其中一台挂掉了,另外一台就会自动切换过去,两台都没挂掉的情况下,还可以实现负载均衡,大大的提高了web服务的效率和安全性。   from:http://www.shangxueba.com/jingyan/1657358.html

龙生   03 Apr 2015
View Details

Windows平台下安装Hadoop

1、安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件中的路径加引号即可解决,但我没测试成功)。 2、安装Cygwin Cygwin是Windows平台下模拟Unix环境的工具,需要在安装Cygwin的基础上安装Hadoop,下载地址:http://www.cygwin.com/ 根据操作系统的需要下载32位或64的安装文件。 1)、双击下载好的安装文件,点击下一步,选择install from internet 2)、选择安装路径 3)、选择local Package Directory 4)、选择您的Internet连接方式 5)、选择合适的安装源,点击下一步 6)、在Select Packages界面里,Category展开net,选择如下openssh和openssl两项 如果要在Eclipe上编译Hadoop,需要安装Category为Base下的sed 如果想在Cygwin上直接修改hadoop的配置文件,可以安装Editors下的vim 7)、点击“下一步”,等待安装完成。 3、配置环境变量 在“我的电脑”上点击右键,选择菜单中的“属性",点击属性对话框上的高级页签,点击”环境变量"按钮,在系统变量列表里双击“Path”变量,在变量值后输入安装的Cygwin的bin目录,例如:D:\hadoop\cygwin64\bin 4、安装sshd服务 双击桌面上的Cygwin图标,启动Cygwin,执行ssh-host-config -y命令 执行后,会提示输入密码,否则会退出该配置,此时输入密码和确认密码,回车。最后出现Host configuration finished.Have fun!表示安装成功。 输入net start sshd,启动服务。或者在系统的服务里找到并启动Cygwin sshd服务。 可能会遇到无法安装和启动sshd服务的问题,可参考此连接http://www.cnblogs.com/kinglau/p/3261886.html。 另外如果是Win8操作系统,启动Cygwin时,需要以管理员身份运行(右键图标,选择以管理员身份运行),否则会因为权限问题,提示“发生系统错误5”。 5、配置SSH免密码登录 执行ssh-keygen命令生成密钥文件 如下图所示,输入:ssh-keygen -t dsa -P " -f ~/.ssh/id_dsa,注意-t -P -f参数区分大小写。 ssh-keygen是生成密钥命令 -t 表示指定生成的密钥类型(dsa,rsa) -P表示提供的密语 -f指定生成的密钥文件。 注意:~代表当前用户的文件夹,/home/用户名 执行此命令后,在你的Cygwin\home\用户名 路径下面会生成.ssh文件夹,可以通过命令ls -a /home/用户名  查看,ssh -version命令查看版本。 执行完ssh-keygen命令后,再执行下面命令,就可以生成authorized_keys文件了。 cd ~/.ssh/ cp id_dsa.pub authorized_keys 如下图所示: 然后执行exit命令,退出Cygwin窗口 6、再次在桌面上双击Cygwin图标,打开Cygwin窗口,执行ssh localhost命令,第一次执行该命令会有提示,输入yes后,回车即可。如下图所示 7、安装Hadoop hadoop官网下载http://hadoop.apache.org/releases.html。 把hadoop压缩包解压到/home/用户名 目录下,文件夹名称更改为hadoop,可以不修改,但后边在执行命令时稍显麻烦。 (1)单机模式配置方式 单机模式不需要配置,这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。 (2)伪分布模式 可以把伪分布模式看作是只有一个节点的集群,在这个集群中,这个节点既是Master,也是Slave,既是NameNode,也是DataNode,既是JobTracker,也是TaskTracker。 这种模式下修改几个配置文件即可。 配置hadoop-env.sh,记事本打开改文件,设置JAVA_HOME的值为你的JDK安装路径,例如: JAVA_HOME="D:\hadoop\Java\jdk1.7.0_25" 配置core-site.xml

配置hdfs-site.xml

配置mapred-site.xml

  8、启动Hadoop 打开Cgywin窗口,执行cd […]

龙生   03 Apr 2015
View Details

集群、分布式、负载均衡区别与联系

1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群) 负载均衡集群(Load Balance Cluster) 负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。 负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。 2、负载均衡系统: 负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、b、c,那么分别由服务器A、B、C来处理; 3、分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。 而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。 分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。 from:http://itsoul.iteye.com/blog/777212

龙生   03 Apr 2015
View Details

服务器集群

服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。   服务器集群简介 一旦在服务器上安装并运行了群集服务,该服务器即可加入群集。群集化操作可以减少单点故障数量,并且实现了群集化资源的高可用性。下述各节简要介绍了群集创建和群集操作中的节点行为。[1] 注意:有关安装群集服务器的信息,请参阅 Windows server 2003产品家族的帮助和部署指南。 关于Windows Server 2003的企业版和Datacenter版都可以支持最大达8个节点的集群配置;其典型的特征是可为数据库、消息系统、文件与打印服务这些关键业务应用,提供高可用性和可扩展性,在集群中的多个服务器(节点)保持不间断的联系。即是说如果在集群中的某一节点因出错或维护不可用时,另一节点会立刻提供服务,以实现容错。正在访问服务的用户可以继续访问,而不会察觉到服务已经由另一台服务器(节点)提供。[2] 创建群集 在服务器群集产品中含有用来在服务器上安装群集软件和创建新群集的群集安装实用工具。创建新群集时,首先在选择作为群集的第一个成员的计算机上运行该实用工具。第一步是确定群集名称并创建群集数据库和初始的群集成员列表来定义新群集。 Windows server 2003 群集新增了一个群集管理设置向导以及使用 cluster.exe命令行界面创建( 包括从远程创建 )群集的功能。 创建群集的第二步是,添加可供所有群集成员使用的共用数据存储设备。这样,创建的新群集将带有一个节点、自己的本地数据存储设备以及群集共用资源 —— 通常是磁盘或数据存储和连接介质资源。 创建群集的最后一步是,在另外将要成为群集成员的每一台计算机上运行安装实用工具。每当将新节点添加到群集中时,新节点都会自动从群集的原始成员获得现有群集数据库的副本。当节点加入或形成群集时,群集服务会更新该节点私有的配置数据库副本。 形成群集 如果服务器运行了群集服务并且无法找到群集中的其它节点,它自己可以形成一个群集。要形成群集,节点必须能够获得对仲裁资源的独占权。 当最初形成群集时,群集中的第一个节点将包括群集配置数据库。每当有新节点加入群集时,新节点都会在本地获得并保持群集配置数据库的副本。仲裁资源用恢复日志(其中含有同节点无关的群集配置和状态数据)的形式存储配置数据库的最新版本。 在群集运行中,群集服务使用仲裁恢复日志执行以下操作 : 保证只有一组活动、可相互通讯的节点才能形成群集 仅当某个节点可以获得对仲裁资源的控制权时 , 才允许它形成群集 仅当某个节点可以同控制仲裁资源的节点通讯时 , 才允许它加入或留在现有群集中 集群服务的状态 从群集中的其它节点和群集服务管理接口的角度看,当形成群集时,群集中的每个节点可能处于三种不同状态中的一种。事件处理器会记录这些状态,而事件日志管理器会将这些状态复制到群集的其它节点。群集服务状态包括: 脱机。此时的节点不是完全有效的群集成员。该节点及其群集服务器可能在运行,也可能未运行。 联机。此时的节点是完全有效的群集成员。它遵从群集数据库的更新、对仲裁算法施加自己的影响、维护心跳通讯,并可以拥有和运行资源组。 暂停。它只能支持它当前已拥有的那些资源组。之所以提供暂停状态,是为了允许执行某些维护。大多数服务器群集组件会将联机和暂停视为等价的状态。 优势 一、集群系统可解决所有的服务器硬件故障,当某一台服务器出现任何故障,如:硬盘、内存、CPU、主板、I/O板以及电源故障,运行在这台服务器上的应用就会切换到其它的服务器上。 二、集群系统可解决软件系统问题,我们知道,在计算机系统中,用户所使用的是应用程序和数据,而应用系统运行在操作系统之上,操作系统又运行在服务器上。这样,只要应用系统、操作系统、服务器三者中的任何一个出现故障,系统实际上就停止了向客户端提供服务,比如我们常见的软件死机,就是这种情况之一,尽管服务器硬件完好,但服务器仍旧不能向客户端提供服务。而集群的最大优势在于对故障服务器的监控是基于应用的,也就是说,只要服务器的应用停止运行,其它的相关服务器就会接管这个应用,而不必理会应用停止运行的原因是什么。 三、集群系统可以解决人为失误造成的应用系统停止工作的情况,例如,当管理员对某台服务器操作不当导致该服务器停机,因此运行在这台服务器上的应用系统也就停止了运行。由于集群是对应用进行监控,因此其它的相关服务器就会接管这个应用。 缺点 我们知道集群中的应用只在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。我们知道整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区。因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。 加入群集 寻找 如果一个服务器要加入现有群集 , 则它必须运行群集服务并且必须成功找到群集中的其它节点。在找到其它节点后,加入的服务器必须接受群集成员资格验证,并获得群集配置数据库的副本。 条件 加入现有群集的过程开始于 Windows Server 2003 或 Windows 2000 Service Control Manager 在节点上启动群集服务之时。在启动过程中,群集服务会配置并装入该节点的本地数据设备。它并不会试图将共用的群集数据设备作为节点联机,因为现有群集可能正在使用这些设备。 过程 为了查找其它节点 , 会启动一个发现过程。当节点发现任何群集成员时,它将执行身份验证序列。第一个群集成员会对新加入者进行身份验证,并且在新服务器得到成功验证后返回成功状态。如果验证不成功(未能识别待加入节点的群集成员身份,或者它使用了无效的帐户密码),则加入群集的请求会被拒绝。 验证 进行成功验证后,首先联机的群集节点会检查加入节点上的配置数据库副本。如果该副本已过时,对加入服务器进行验证的群集节点会为加入的服务器发送该数据库的更新副本。刚加入群集的节点在收到复制的数据库后,可以用它查找共享资源并根据需要将它们联机。 脱离群集 当节点关闭或群集服务被停止时,节点可能脱离群集。但当节点不执行群集操作(比如不向群集配置数据库提交更新)时,节点也可能被迫脱离(被逐出)群集。 如果节点根据预先的计划脱离群集,它会向其它所有节点成员发送 ClusterExit 消息,通知它们它将脱离群集。该节点不等待任何响应就会立即进行关闭资源和所有群集连接的操作。由于其余节点收到了退出消息,因此它们不会执行在节点意外失效或网络通讯停止时发生的重新分组过程以重新确立群集成员身份。 方法 有两种常用的服务器集群方法,一种是将备份服务器连接在主服务器上,当主服务器发生故障时,备份服务器才投入运行,把主服务器上所有任务接管过来。另一种方法是将多台服务器连接,这些服务器一起分担同样的应用和数据库计算任务,改善关键大型应用的响应时间。同时,每台服务器还承担一些容错任务,一旦某台服务器出现故障时,系统可以在系统软件的支持下,将这台服务器与系统隔离,并通过各服务器的负载转嫁机制完成新的负载分配。PC服务器中较为常见的是两台服务器的集群,UNIX系统可支持8台服务器的集群系统,康柏的专用系统OpenVMS可支持多达96台服务器的集群系统。 集群的特点 在集群系统中,所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。集群必须可以协调管理各分离组件的错误和失败,并可透明的向集群中加入组件。用户的公共数据被放置到了共享的磁盘柜中,应用程序被安装到了所有的服务器上,也就是说,在集群上运行的应用需要在所有的服务器上安装一遍。当集群系统在正常运转时,应用只在一台服务器上运行,并且只有这台服务器才能操纵该应用在共享磁盘柜上的数据区,其它的服务器监控这台服务器,只要这台服务器上的应用停止运行(无论是硬件损坏、操作系统死机、应用软件故障,还是人为误操作造成的应用停止运行),其它的服务器就会接管这台服务器所运行的应用,并将共享磁盘柜上的相应数据区接管过来。其接管过程如下图所示(以应用A为例): 1.应用A正常工作时; 2.应用A停止工作后,其它的备用服务器将该应用接管过来。 具体接管过程分三部执行: a.系统接管 b.加载应用 c.客户端连接 集群技术的分类 高可用集群 高可用集群的英文全称是High […]

龙生   03 Apr 2015
View Details