学习Linux的第四十七天

本文详细介绍了Linux虚拟服务器(LVS)的DR模式搭建过程,包括配置和使用Keepalived进行高可用方案对比。同时,深入探讨了DRBD的安装、工作原理、故障恢复机制及其在高可用集群中的作用。内容涵盖了DRBD的三种复制模式以及在主备节点间切换的操作,最后讨论了LVS的负载均衡集群原理和分类,强调了LVS在处理大规模并发访问和提供7*24小时服务的重要性。
摘要由CSDN通过智能技术生成

LVS DR模式的搭建

DR模式的搭建和NAT模式的搭建准备工作都差不多的,就是比NAT模式多了一个vip
在这里插入图片描述
在这里插入图片描述
搭建完以后我们需要再每个机器上来执行各自的脚本。

keepalived+LVS

在这里插入图片描述
在这里插入图片描述

高可用开源方案 Keepalived VS Heartbeat对比

1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat 2.1.4后拆分成3个子项目,安装、配置、使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了;而Keepalived只有1个安装文件、1个配置文件,配置文件也简单很多;
2)Heartbeat功能更强大:Heartbeat虽然复杂,但功能更强大,配套工具更全,适合做大型集群管理,而Keepalived主要用于集群倒换,基本没有管理功能;
3)协议不同:Keepalived使用VRRP协议进行通信和选举,Heartbeat使用心跳进行通信和选举;Heartbeat除了走网络外,还可以通过串口通信,貌似更可靠;
4)使用方式基本类似:如果要基于两者设计高可用方案,最终都要根据业务需要写自定义的脚本,Keepalived的脚本没有任何约束,随便怎么写都可以;Heartbeat的脚本有约束,即要支持service start/stop/restart这种方式,而且Heartbeart提供了很多默认脚本,简单的绑定ip,启动apache等操作都已经有了;

DRBD安装配置、工作原理及故障恢复

一、DRBD简介
DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RAID。它允许用户在远程机器上建立一个本地块设备的实时镜像。
二、DRBD是如何工作的呢?
(DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary)。另一个主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,但这对于通常的故障切换高可用集群来说已经足够用了。有可能以后的版本支持两个节点进行读写存取。
三、DRBD与HA的关系
一个DRBD系统由两个节点构成,与HA集群类似,也有主节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问DRBD设备(/dev/drbd*)。在主节点写入的数据通过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,在备用节点上,DRBD只是将数据从DRBD设备写入到备用节点的磁盘中。现在大部分的高可用性集群都会使用共享存储,而DRBD也可以作为一个共享存储设备,使用DRBD不需要太多的硬件的投资。因为它在TCP/IP网络中运行,所以,利用DRBD作为共享存储设备,要节约很多成本,因为价格要比专用的存储网络便宜很多;其性能与稳定性方面也不错
四、DRBD复制模式
协议A:
异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点
协议B:
内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘
协议C:
同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽

一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议
四、 DRBD工作原理图
DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,
五、环境介绍及安装前准备
环境介绍:
系统版本:CentOS 6.4_x86_64
DRBD软件:drbd-8.4.3-33.el6.x86_64 drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64 下载地址:http://rpmfind.net
注意:这里两个软件的版本必须使用一致,而drbd-kmdl的版本要与当前系统的版本相对应,当然在实际应用中需要根据自己的系统平台下载符合需要的软件版本;查看系统版本 “uname -r”
安装前准备:
1、每个节点的主机名称须跟"uname -n"命令的执行结果一样
######NOD1节点执行
sed -i ‘s@(HOSTNAME=).@\1nod1.allen.com@g’ /etc/sysconfig/network
hostname nod1.allen.com
######NOD2节点执行
sed -i 's@(HOSTNAME=).
@\1nod2.allen.com@g’ /etc/sysconfig/network
hostname nod2.allen.com
注释:修改文件须重启系统生效,这里先修改文件然后执行命令修改主机名称可以不用重启
2、两个节点的主机名称和对应的IP地址可以正常解析
######在NOD1与NOD2节点执行
cat > /etc/hosts << EOF
192.168.137.225 nod1.allen.com nod1
192.168.137.222 nod2.allen.com nod2
EOF
3、配置epel的yum源 点此下载并安装
######在NOD1与NOD2节点安装
rpm -ivh epel-release-6-8.noarch.rpm
4、需要为两个节点分别提供大小相同的分区

######在NOD1节点上创建分区,分区大小必须与NOD2节点保持一样
[root@nod1 ~]# fdisk /dev/sda
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859):
Using default value 7859
Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +2G
Command (m for help): w
[root@nod1 ~]# partx /dev/sda #让内核重新读取分区
######查看内核有没有识别分区,如果没有需要重新启动,这里没有识别需要重启系统
[root@nod1 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 204800 sda1
8 2 62914560 sda2
253 0 20971520 dm-0
253 1 2097152 dm-1
253 2 10485760 dm-2
253 3 20971520 dm-3
[root@nod1 ~]# reboot
######在NOD2节点上创建分区,分区大小必须与NOD1节点保持一样
[root@nod2 ~]# fdisk /dev/sda
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859):
Using default value 7859
Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +2G
Command (m for help): w
[root@nod2 ~]# partx /dev/sda #让内核重新读取分区
######查看内核有没有识别分区,如果没有需要重新启动,这里没有识别需要重启系统
[root@nod2 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 204800 sda1
8 2 62914560 sda2
253 0 20971520 dm-0
253 1 2097152 dm-1
253 2 10485760 dm-2
253 3 20971520 dm-3
[root@nod2 ~]# reboot

六、安装并配置DRBD
1、在NOD1与NOD2节点上安装DRBD软件包
######NOD1
[root@nod1 ~]# ls drbd-*
drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm
[root@nod1 ~]# yum -y install drbd-.rpm
######NOD2
[root@nod2 ~]# ls drbd-

drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm
[root@nod2 ~]# yum -y install drbd-.rpm
2、查看DRBD配置文件
ll /etc/drbd.conf;ll /etc/drbd.d/
-rw-r–r-- 1 root root 133 May 14 21:12 /etc/drbd.conf #主配置文件
total 4
-rw-r–r-- 1 root root 1836 May 14 21:12 global_common.conf #全局配置文件
######查看主配置文件内容
cat /etc/drbd.conf
######主配置文件中包含了全局配置文件及"drbd.d/"目录下以.res结尾的文件
include “drbd.d/global_common.conf”;
include "drbd.d/
.res";
3、修改配置文件如下:
[root@nod1 ~]#vim /etc/drbd.d/global_common.conf
global {
usage-count no; #是否参加DRBD使用统计,默认为yes
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C; #使用DRBD的同步协议
handlers {
# These are EXAMPLE handlers only.
# They may have severe implications,
# like hard resetting the node under certain circumstances.
# Be careful when chosing your poison.
pri-on-incon-degr “/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
pri-lost-after-sb “/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
local-io-error “/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f”;
# fence-peer “/usr/lib/drbd/crm-fence-peer.sh”;
# split-brain “/usr/lib/drbd/notify-split-brain.sh root”;
# out-of-sync “/usr/lib/drbd/notify-out-of-sync.sh root”;
# before-resync-target “/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 – -c 16k”;
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
}
options {
# cpu-mask on-no-data-accessible
}
disk {
on-io-error detach; #配置I/O错误处理策略为分离
# size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
# disk-drain md-flushes resync-rate resync-after al-extents
# c-plan-ahead c-delay-target c-fill-target c-max-rate
# c-min-rate disk-timeout
}
net {
cram-hmac-alg “sha1”; #设置加密算法
shared-secret “allendrbd”; #设置加密密钥
# protocol timeout max-epoch-size max-buffers unplug-watermark
# connect-int ping-int sndbuf-size rcvbuf-size ko-count
# allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
# after-sb-1pri after-sb-2pri always-asbp rr-conflict
# ping-timeout data-integrity-alg tcp-cork on-congestion
# congestion-fill congestion-extents csums-alg verify-alg
# use-rle
}
syncer {
rate 1024M; #设置主备节点同步时的网络速率
}
}
注释: on-io-error 策略可能为以下选项之一
detach 分离:这是默认和推荐的选项,如果在节点上发生底层的硬盘I/O错误,它会将设备运行在Diskless无盘模式下
pass_on:DRBD会将I/O错误报告到上层,在主节点上,它会将其报告给挂载的文件系统,但是在此节点上就往往忽略(因此此节点上没有可以报告的上层)
-local-in-error:调用本地磁盘I/O处理程序定义的命令;这需要有相应的local-io-error调用的资源处理程序处理错误的命令;这就给管理员有足够自由的权力命令命令或是脚本调用local-io-error处理I/O错误
4、添加资源文件:
[root@nod1 ~]# vim /etc/drbd.d/drbd.res
resource drbd {
on nod1.allen.com { #第个主机说明以on开头,后面是主机名称
device /dev/drbd0;#DRBD设备名称
disk /dev/sda3; #drbd0使用的磁盘分区为"sda3"
address 192.168.137.225:7789; #设置DRBD监听地址与端口
meta-disk internal;
}
on nod2.allen.com {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.137.222:7789;
meta-disk internal;
}
}
5、将配置文件为NOD2提供一份
[root@nod1 ~]# scp /etc/drbd.d/{global_common.conf,drbd.res} nod2:/etc/drbd.d/
The authenticity of host ‘nod2 (192.168.137.222)’ can’t be established.
RSA key fingerprint is 29:d3:28:85:20:a1:1f:2a:11:e5:88💿25:d0:95:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘nod2’ (RSA) to the list of known hosts.
root@nod2’s password:
global_common.conf 100% 1943 1.9KB/s 00:00
drbd.res 100% 318 0.3KB/s 00:00
6、初始化资源并启动服务
######在NOD1节点上初始化资源并启动服务
[root@nod1 ~]# drbdadm create-md drbd
Writing meta data…
initializing activity log
NOT initializing bitmap
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory
New drbd meta data block successfully created. #提示已经创建成功
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory
######启动服务
[root@nod1 ~]# service drbd start
Starting DRBD resources: [
create res: drbd
prepare disk: drbd
adjust disk: drbd
adjust net: drbd
]


DRBD’s startup script waits for the peer node(s) to appear.

  • In case this node was already a degraded cluster before the
    reboot the timeout is 0 seconds. [degr-wfc-timeout]
  • If the peer was available before the reboot the timeout will
    expire after 0 seconds. [wfc-timeout]
    (These values are for resource ‘drbd’; 0 sec -> wait forever)
    To abort waiting enter ‘yes’ [ 12]: yes
    ######查看监听端口
    [root@nod1 ~]# ss -tanl |grep 7789
    LISTEN 0 5 192.168.137.225:7789 :
    ######在NOD2节点上初始化资源并启动服务
    [root@nod2 ~]# drbdadm create-md drbd
    Writing meta data…
    initializing activity log
    NOT initializing bitmap
    lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory
    New drbd meta data block successfully created.
    lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory
    ######启动服务
    [root@nod2 ~]# service drbd start
    Starting DRBD resources: [
    create res: drbd
    prepare disk: drbd
    adjust disk: drbd
    adjust net: drbd
    ]
    ######查看监听地址与端口
    [root@nod2 ~]# netstat -anput|grep 7789
    tcp 0 0 192.168.137.222:42345 192.168.137.225:7789 ESTABLISHED -
    tcp 0 0 192.168.137.222:7789 192.168.137.225:42325 ESTABLISHED -
    ######查看DRBD启动状态
    [root@nod2 ~]# drbd-overview
    0:drbd/0 Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
    7、资源的连接状态详细介绍
    7.1、如何查看资源连接状态?
    [root@nod1 ~]# drbdadm cstate drbd #drbd为资源名称
    Connected
    7.2、资源的连接状态;一个资源可能有以下连接状态中的一种
    StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况
    Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的
    Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams
    Timeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空
    BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空
    NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
    ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
    TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空
    WFConnection:等待和对等节点建立网络连接
    WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包
    Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态
    StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS
    StartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID
    WFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS
    WFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUID
    WFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT
    SyncSource:以本节点为同步源的同步正在进行
    SyncTarget:以本节点为同步目标的同步正在进行
    PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
    PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
    VerifyS:以本地节点为验证源的线上设备验证正在执行
    VerifyT:以本地节点为验证目标的线上设备验证正在执行
    7.3、资源角色
    查看资源角色命令
    [root@nod1 ~]# drbdadm role drbd
    Secondary/Secondary
    [root@nod1 ~]# cat /proc/drbd
    version: 8.4.3 (api:1/proto:86-101)
    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
    0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2103412
    注释:
    Parimary 主:资源目前为主,并且可能正在被读取或写入,如果不是双主只会出现在两个节点中的其中一个节点上
    Secondary 次:资源目前为次,正常接收对等节点的更新
    Unknown 未知:资源角色目前未知,本地的资源不会出现这种状态
    7.4、硬盘状态
    查看硬盘状态命令
    [root@nod1 ~]# drbdadm dstate drbd
    Inconsistent/Inconsistent
    本地和对等节点的硬盘有可能为下列状态之一:
    Diskless 无盘:本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离
    Attaching:读取无数据时候的瞬间状态
    Failed 失败:本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘
    Negotiating:在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态
    Inconsistent:数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态
    Outdated:数据资源是一致的,但是已经过时
    DUnknown:当对等节点网络连接不可用时出现这种状态
    Consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是UpToDate或是Outdated
    UpToDate:一致的最新的数据状态,这个状态为正常状态
    7.5、启用和禁用资源
    ######手动启用资源
    drbdadm up
    ######手动禁用资源
    drbdadm down
    注释:
    resource:为资源名称;当然也可以使用all表示[停用|启用]所有资源
    7.6、升级和降级资源
    ######升级资源
    drbdadm primary
    ######降级资源
    drbdadm secondary
    注释:在单主模式下的DRBD,两个节点同时处于连接状态,任何一个节点都可以在特定的时间内变成主;但两个节点中只能一为主,如果已经有一个主,需先降级才可能升级;在双主模式下没有这个限制
    8、初始化设备同步
    8.1、选择一个初始同步源;如果是新初始化的或是空盘,这个选择可以是任意的,但是如果其中的一个节点已经在使用并包含有用的数据,那么选择同步源是至关重要的;如果选错了初始化同步方向,就会造成数据丢失,因此需要十分小心
    8.2、启动初始化完全同步,这一步只能在初始化资源配置的一个节点上进行,并作为同步源选择的节点上;命令如下:
    [root@nod1 ~]# drbdadm – --overwrite-data-of-peer primary drbd
    [root@nod1 ~]# cat /proc/drbd #查看同步进度
    version: 8.4.3 (api:1/proto:86-101)
    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
    0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—n-
    ns:1897624 nr:0 dw:0 dr:1901216 al:0 bm:115 lo:0 pe:3 ua:3 ap:0 ep:1 wo:f oos:207988
    [=================>…] sync’ed: 90.3% (207988/2103412)K
    finish: 0:00:07 speed: 26,792 (27,076) K/sec
    ######当同步完成时如以下状态
    version: 8.4.3 (api:1/proto:86-101)
    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
    0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2103412 nr:0 dw:0 dr:2104084 al:0 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
    注释: drbd:为资源名称
    ######查看同步进度也可使用以下命令
    drbd-overview
    9、创建文件系统
    9.1、文件系统只能挂载在主(Primary)节点上,因此在设置好主节点后才可以对DRBD设备进行格式化操作
    ######格式化文件系统
    [root@nod1 ~]# mkfs.ext4 /dev/drbd0
    ######挂载文件系统
    [root@nod1 ~]# mount /dev/drbd0 /mnt/
    ######查看挂载
    [root@nod1 ~]# mount |grep drbd0
    /dev/drbd0 on /mnt type ext4 (rw)
    注释:
    "/dev/drbd0"为资源中定义已定义的资源名称
    ######查看DRBD状态
    [root@nod1 ~]# drbd-overview
    0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r-----
    注释:
    Primary:当前节点为主;在前面为当前节点
    Secondary:备用节点为次
    9.2、在挂载目录中创建一个测试文件并卸载;然后
    [root@nod1 ~]# mkdir /mnt/test
    [root@nod1 ~]# ls /mnt/
    lost+found test
    ######在切换主节点时必须保证资源不在使用
    [root@nod1 ~]# umount /mnt/
    9.3、切换主备节点
    ######先把当前主节点降级为次
    [root@nod1 ~]# drbdadm secondary drbd
    ######查看DRBD状态
    [root@nod1 ~]# drbd-overview
    0:drbd/0 Connected Secondary/Secondary UpToDate/UpToDate C r-----
    ######在NOD2节点升级
    [root@nod2 ~]# drbdadm primary drbd
    ######查看DRBD状态
    [root@nod2 ~]# drbd-overview
    0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r-----
    9.4、挂载设备并验证文件是否存在
    [root@nod2 ~]# mount /dev/drbd0 /mnt/
    [root@nod2 ~]# ls /mnt/
    lost+found test
    七、DRBD脑裂的模拟及修复
    注释:我们还接着上面的实验继续进行,现在NOD2为主节点而NOD1为备节点
    1、断开主(parmary)节点;关机、断开网络或重新配置其他的IP都可以;这里选择的是断开网络
    2、查看两节点状态
    [root@nod2 ~]# drbd-overview
    0:drbd/0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4%
    [root@nod1 ~]# drbd-overview
    0:drbd/0 StandAlone Secondary/Unknown UpToDate/DUnknown r-----
    ######由上可以看到两个节点已经无法通信;NOD2为主节点,NOD1为备节点
    3、将NOD1节点升级为主(primary)节点并挂载资源
    [root@nod1 ~]# drbdadm primary drbd
    [root@nod1 ~]# drbd-overview
    0:drbd/0 StandAlone Primary/Unknown UpToDate/DUnknown r-----
    [root@nod1 ~]# mount /dev/drbd0 /mnt/
    [root@nod1 ~]# mount | grep drbd0
    /dev/drbd0 on /mnt type ext4 (rw)
    4、假如原来的主(primary)节点修复好重新上线了,这时出现了脑裂情况
    [root@nod2 ~]# tail -f /var/log/messages
    Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_a_drbd
    Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0 exit code 0 (0x0)
    Sep 19 01:56:06 nod2 kernel: block drbd0: Split-Brain detected but unresolved, dropping connection!
    Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0
    Sep 19 01:56:06 nod2 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0 exit code 0 (0x0)
    Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( NetworkFailure -> Disconnecting )
    Sep 19 01:56:06 nod2 kernel: d-con drbd: error receiving ReportState, e: -5 l: 0!
    Sep 19 01:56:06 nod2 kernel: d-con drbd: Connection closed
    Sep 19 01:56:06 nod2 kernel: d-con drbd: conn( Disconnecting -> StandAlone )
    Sep 19 01:56:06 nod2 kernel: d-con drbd: receiver terminated
    Sep 19 01:56:06 nod2 kernel: d-con drbd: Terminating drbd_r_drbd
    Sep 19 01:56:18 nod2 kernel: block drbd0: role( Primary -> Secondary )
    5、再次查看两节点的状态
    [root@nod1 ~]# drbdadm role drbd
    Primary/Unknown
    [root@nod2 ~]# drbdadm role drbd
    Primary/Unknown
    6、查看NOD1与NOD2连接状态
    [root@nod1 ~]# drbd-overview
    0:drbd/0 StandAlone Primary/Unknown UpToDate/DUnknown r----- /mnt ext4 2.0G 68M 1.9G 4%
    [root@nod2 ~]# drbd-overview
    0:drbd/0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4%
    ######由上可见,状态为StandAlone时,主备节点是不会通信的
    7、查看DRBD的服务状态
    [root@nod1 ~]# service drbd status
    drbd driver loaded OK; device status:
    version: 8.4.3 (api:1/proto:86-101)
    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
    m:res cs ro ds p mounted fstype
    0:drbd StandAlone Primary/Unknown UpToDate/DUnknown r----- ext4
    [root@nod2 ~]# service drbd status
    drbd driver loaded OK; device status:
    version: 8.4.3 (api:1/proto:86-101)
    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
    m:res cs ro ds p mounted fstype
    0:drbd WFConnection Primary/Unknown UpToDate/DUnknown C /mnt ext4
    8、在NOD1备用节点处理办法
    [root@nod1 ~]# umount /mnt/
    [root@nod1 ~]# drbdadm disconnect drbd
    drbd: Failure: (162) Invalid configuration request
    additional info from kernel:
    unknown connection
    Command ‘drbdsetup disconnect ipv4:192.168.137.225:7789 ipv4:192.168.137.222:7789’ terminated with exit code 10
    [root@nod1 ~]# drbdadm secondary drbd
    [root@nod1 ~]# drbd-overview
    0:drbd/0 StandAlone Secondary/Unknown UpToDate/DUnknown r-----
    [root@nod1 ~]# drbdadm connect --discard-my-data drbd
    ######执行完以上三步后,你查看会发现还是不可用
    [root@nod1 ~]# drbd-overview
    0:drbd/0 WFConnection Secondary/Unknown UpToDate/DUnknown C r-----
    9、需要在NOD2节点上重新建立连接资源
    [root@nod2 ~]# drbdadm connect drbd
    ######查看节点连接状态
    [root@nod2 ~]# drbd-overview
    0:drbd/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt ext4 2.0G 68M 1.9G 4%
    [root@nod1 ~]# drbd-overview
    0:drbd/0 Connected Secondary/Primary UpToDate/UpToDate C r-----
    ######由上可见已经恢复到正常运行状态

LVS原理详解(3种工作方式8种调度算法)

一、集群简介
什么是集群
计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务
为什么要使用集群

集群的特点
1)高性能performance。一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台计算机能够搞定的。这需要上千台一起来完成这个工作的。
2)价格有效性
通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百王的专用超级计算机具有更高的性价比。
3)可伸缩性
当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量。
4)高可用性
尽管部分硬件和软件发生故障,整个系统的服务必须是7*24小时运行的。
集群的优势
1)透明性
如果一部分服务器宕机了业务不受影响,一般耦合度没有那么高,依赖关系没有那么高。比如NFS服务器宕机了其他就挂载不了了,这样依赖性太强。
2)高性能
访问量增加,能够轻松扩展。
3)可管理性
整个系统可能在物理上很大,但很容易管理。
4)可编程性
在集群系统上,容易开发应用程序,门户网站会要求这个。

集群分类及不同分类的特点
计算机集群架构按照功能和结构一般分成以下几类:
1)负载均衡集群(Loadbalancingclusters)简称LBC
2)高可用性集群(High-availabilityclusters)简称HAC
3)高性能计算集群(High-perfomanceclusters)简称HPC
4)网格计算(Gridcomputing)
网络上面一般认为是有三个,负载均衡和高可用集群式我们互联网行业常用的集群架构。
(1)负载均衡集群
负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把很多客户集中访问的请求负载压力可能尽可能平均的分摊到计算机集群中处理。客户请求负载通常包括应用程度处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样计算机集群有时也被称为服务器群。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。

负载均衡集群的作用
1)分担访问流量(负载均衡)
2)保持业务的连续性(高可用)
(2)高可用性集群
一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。
类似是集群中运行着两个或两个以上的一样的节点,当某个主节点出现故障的时候,那么其他作为从 节点的节点就会接替主节点上面的任务。从节点可以接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。
高可用性集群的作用:当一个机器宕机另一台进行接管。比较常用的高可用集群开源软件有:keepalive,heardbeat。
(3)高性能计算集群
高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPCcluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。
HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。
常用集群软硬件

常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
常用商业集群硬件有:F5,Netscaler,Radware,A10等

二、LVS负载均衡集群介绍
负载均衡集群的作用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性。
1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求。

LVS介绍
LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值