如何使用haproxy进行url路径重定向,非域名跳转

如何使用haproxy进行url路径重定向,非域名跳转,第1张

首先,先用haproxy的acl规则配置你需要匹配上的路径

例如,

我这里须要将

地址A: http://www.veryok.com/hello/ ...

的所有的请求都转发到某一服务器上

地址B: http://192.168.1.xxx/forward/hello/ ...上

HA架构是共同为客户机提供网络资源的一组计算机系统。其中每一台提供服务的计算机称为节点。当一个节点不可用或者不能处理客户的请求时,该请求会及时转到另外的可用节点来处理,而这些对于客户端是透明的,客户不必关心要使用资源的具体位置,集群系统会自动完成。

基于共享磁盘的HA架构通过共享盘柜实现集群中各节点的数据共享,包含主服务器、从服务器、存储阵列三种主要设备,以及设备间的心跳连接线。而基于磁盘镜像的HA架构不包含存储阵列。集群中两种服务器的本地硬盘通过数据镜像技术,实现集群中各节点之间的数据同步,从而实现集群的功能。

拓展资料:

HA架构软件是架构在操作系统之上的程序,其主要由守护进程、应用程序代理、管理工具、开发脚本等四部分构成,应用服务系统是为客户服务的应用系统程序,比如MS SQL Server,Oracle,Sybase,DB2 UDB,Exchange,Lotus Notes等应用系统软件。

        从Hadoop2开始,可以允许有2个NameNode,一个是active(活跃状态),另一个是standby(待命状态),其中active状态的NameNode对外提供服务,Hadoop1没有此特性.

在Hadoop1里面只能有一个NameNode,带来的灾难就是单点故障( single point of failure (SPOF)),每个集群只有一个NameNode,如果计算机或者进程不可用,则整个集群不可用,直到NameNode重新启动或者在单独的计算机.

这从两个方面影响了HDFS集群的总体可用性:

在发生意外事件(如机器崩溃)的情况下,集群将不可用,直到技术人员把NameNode重新启动之后.

如果NameNode对应的计算机节点需要进行硬件或者软件的升级,就需要停止NameNode服务,这又会导致集群宕机.

Hadoop的HA就可以允许在计算机崩溃的情况下,快速切换到新的NameNode,或者允许处于计划维护NameNode有运维人员直接切换到standby服务器上面

                                                                               -------以上取自 hadoop.apache.org 官网解答

HA的架构模式其实是有两种,HDFS High Availability Using the Quorum Journal Manager(企业级开发专用)和NFS for the shared storage 共享编辑日志模式(基本上不用)

共享编辑日志模式 -您将需要有一个共享目录,两台NameNode机器都可以对其进行读/写访问。通常,这是一个支持NFS的远程文件管理器,并安装在每个NameNode计算机上。当前仅支持一个共享的edits目录。因此,系统的可用性受到此共享编辑目录的可用性的限制,因此,为了消除所有单点故障,共享编辑目录需要冗余。具体来说,有到存储的多个网络路径,以及存储本身的冗余(磁盘,网络和电源)。 因此,建议共享存储服务器是高质量的专用NAS设备,而不是简单的Linux服务器。

                                                                                -------以上取自 hadoop.apache.org 官网解答         

所有企业开发里面目前还没遇到过使用这种模式的.下面详细介绍QJM模式

为了部署高可用性群集,您应该准备以下内容:

NameNode计算机 -运行活动NameNode和Standby NameNode的计算机应具有彼此等效的硬件,以及与非HA群集中将使用的硬件相同的硬件。

JournalNode计算机 -运行JournalNode的计算机。JournalNode守护程序相对较轻,因此可以合理地将这些守护程序与其他Hadoop守护程序(例如NameNode,JobTracker或YARN ResourceManager)并置在计算机上。 注意: 必须至少有3个JournalNode守护程序,因为必须将编辑日志修改写入大多数JN。这将允许系统容忍单个计算机的故障。您可能还会运行3个以上的JournalNode,但是为了实际增加系统可以容忍的故障数量,您应该运行奇数个JN(即3、5、7等)。请注意,当与N个JournalNode一起运行时,系统最多可以容忍(N-1)/ 2个故障,并继续正常运行。

                                                                                -------以上取自 hadoop.apache.org 官网解答 

这里解释一下,JournalNode上面之所以建议是奇数台,是因为HDFS底层算法他是(N-1)/2的故障,假如是偶数台,4台,(4-1)/2=1,也就是1台挂了,就会导致所有的JournalNode都不能正常运行,但是其实我只挂了一台而已,另外三台完全可以支撑完运行,如果是奇数3台的话,(3-1)/2=1台,挂了一台,还剩下两台,这时候就不能正常运行,但是,再挂一台是不是就超过了过半性原则,这个奇数过半性原理在整个Hadoop中使用很广泛

以三台服务器为例:

dachun001 :zookeeper    nn(NameNode)    zkfc(ZookeeperFailoverControl)       JournalNode  dn(DataNode)

dachun002 :zookeeper    nn(NameNode)    zkfc(ZookeeperFailoverControl)       JournalNode  dn(DataNode)

dachun003 :zookeeper                                  zkfc(ZookeeperFailoverControl)       JournalNode  dn(DataNode)

active NameNode:

接收client的rpc请求,同时自己的editlog写一条日志记录,同时发送给JournalNode日志集群写一条记录,同时接收DataNode的心跳和块报告

standby NameNode:

同时接收JournalNode日志集群的的记录,在自己本身执行,使得自己的元数据和active NameNode是一致的,这步叫做重演

同时也接受DataNode的心跳报告(这个是为了在进行从standby演变到active状态时候更加平滑)

也随时等待从standby-->active状态,对外提供服务。

JournalNode:

JouralNode守护进程相当的轻量级,可以和Hadoop的其他进程部署在一起

active NameNode -->  standby  NameNode的同步数据进程.

datanode: 

同时向两个nn发送 心跳 and 块报告

 zkfc(ZookeeperFailoverControl)进程:

监控NameNode的健康状态,可以理解为NameNode和zookeeper的桥梁,standby-active或者active-standby是通过zkfc进程  

NameNode通过zkfc向zookeeper集群定期发送心跳,使得自己被选举上,

当被zookeeperk集群选举为active时,

zkfc进程通过rpc调用NameNode状态变为active。

在典型的HA群集中,将两个单独的计算机配置为NameNode。在任何时间点,恰好其中一个NameNode处于 活动 状态,而另一个处于 Standby 状态。Active NameNode负责群集中的所有客户端操作,而Standby只是充当从属,并保持足够的状态以在必要时提供快速故障转移。

为了使Standby节点保持其状态与Active节点同步,两个节点都与称为“ JournalNodes”(JN)的一组单独的守护程序进行通信。当活动节点执行任何名称空间修改时,它会持久地将修改记录记录到这些JN的大多数中。Standby节点能够从JN读取编辑内容,并不断监视它们以查看编辑日志的更改。当“备用节点”看到编辑内容时,会将其应用到自己的名称空间。发生故障转移时,备用服务器将确保在将自身升级为活动状态之前,已从JournalNode读取所有编辑内容。这样可确保在发生故障转移之前,名称空间状态已完全同步。

为了提供快速故障转移,备用节点还必须具有有关集群中块位置的最新信息。为了实现这一点,DataNode被配置了两个NameNode的位置,并向两者发送块位置信息和心跳。

对于HA群集的正确操作至关重要,一次只能有一个NameNode处于活动状态。否则,名称空间状态将在两者之间迅速分散,从而有数据丢失或其他不正确结果的风险。为了确保此属性并防止所谓的“裂脑情况”,JournalNode将仅一次允许一个NameNode成为作者。在故障转移期间,将变为活动状态的NameNode将仅承担写入JournalNodes的角色,这将有效地防止另一个NameNode继续处于活动状态,从而使新的Active可以安全地进行故障转移。

yarn的HA相对于HDFS的HA就没有这么复杂,他的NM(NodeManager)只会向active的RM(ResourceManager)发送心跳信息,

zkfc是和ResourceManager在同一个进程中,即ZKFC是一个 线程 在 ResourceManager 进程中,如果这个ResourceManager进程挂了,这个ZKFC线程就挂了

RM(ReourceManager)进程:

a.启动时会向zk(zookeeper)集群的hadoop-ha目录写个lock文件,

写成功就标识为active,否则为standby。

standby rm(ResourceManager)会一直监控lock文件是否存在,如果不存在就尝试去创建,争取为active。

b.会接收client客户端的请求,接收和监控nm的资源汇报,

负责资源的分配和调度,启动和监控application master。

rmstore:

a.rm的作业信息是存储在zk(zookeeper)的/rmstore,

active rm会向这个目录写作业app信息。

b.当active rm挂了,另外一个standby rm成功转为active状态,

就会从这里读取对应的作业的信息,

重新构建作业的内存信息,启动内部服务,

开始接收NM(NodeManager)心跳,构建集群资源信息,且开始接收客户端提交的作业的请求。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/702172.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-04
下一篇2023-08-04

发表评论

登录后才能评论

评论列表(0条)

    保存