共计 10302 个字符,预计需要花费 26 分钟才能阅读完成。
简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的 集群是,用户从来不会意识到集群系统底层的节点,在他 / 她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统 的节点。
通 过特殊的软件将若干服务器连接在一起并提供故障切换功能的实体我们称之为高可用集群。可用性是指系统的 uptime,在 7x24x365 的工作环境 中,99% 的可用性指在一年中可以有 87 小时 36 分钟的 DOWN 机时间,通常在关键服务中这种一天多的故障时间是无法接受的,所以提出了前面提到的错误恢 复概念,以满足 99.999% 的高可用性需求。
这里我们先说一下几个概念:
1、服务(Service),是HA集群中提供的资源,包括 Float IP,共享的存储,apache 等等。
2、成员服务器(Member Server)也叫节点(Node),是 HA 中实际运行服务提供资源的服务器。
3、失效域(Failover Domain),是 HA 中提供资源的服务器的集合,当内部某个成员出现故障时,可以将服务切换到其他正常的成员服务器上。在 HA 中一个失效域一般包含 2 台成员服务器(未应用虚拟技术)。
4、心跳(HeartBeat)是 HA 中监控成员服务器状态的方法,一般心跳是通过网线和串口线来传输的。
5、单一故障点(Single Point Of Failuer,SPOF)是指一个系统的这样的一个部件,当它失效或者停止运行,将导致整个系统不能工作。在 HA 中通常使用双电源,多网卡,双交换机等来避免 SPOF。
6、仲裁(Quorum)是 HA 中为了准确的判断服务器及其提供的服务是否正常而采用的在共享磁盘中保存成员服务器信息的方法。共享的状态信息包括群集是否活 跃。服务状态信息包括服务是否在运行以及哪个成员正在运行该服务。每个成员都检查这些信息来保证其它成员处于最新状态。在一个只有两个成员的群集中,每个 成员都定期把一个时间戳和群集状态信息写入位于共享磁盘贮存区的两个共享群集分区上。要保证正确的群集操作,如果某成员无法在启动时写入主共享群集分区和 屏蔽共享群集分区,它将不会被允许加入群集。此外,如果某群集成员不更新其时间戳,或者到系统的 ”heartbeats”(心跳)失败了,该成员就会从群 集中删除。
7、Fence 设备,Fence 设备的作用时在一个节点出现问题时, 另一个节点通过 fence 设备把出现问题的节点重新启动,这样做到了非人工的干预和防止出 现问题的节点访问共享存储,造成文件系统的冲突,关于 Fence 设备, 有外置的比如 APC 的电源管理器. 很多服务器都是内置的,只不过不同厂家的叫法不 同而已。比如 HP 的称为 iLo,IBM 的称为 BMC,Dell 的称为 DRAC。
LUCI——RHCS(RedHat Cluster Suite)提供了多种集群配置和管理工具,常用的有基于 GUI 的 system-config-cluster、Conga 等,也提供了基于命令行的管理工具。system-config-cluster 是一个用于创建集群和配置集群节点的图形化管理工具,它有集群节点配置和集群管理两个部分组成,分别用于创建 集群节点配置文件和维护节点运行状态。一般用在 RHCS 早期的版本中。Conga 是一种新的基于网络的集群配置工具,与 system-config- cluster 不同的是,Conga 是通过 web 方式来配置和管理集群节点的。Conga 有两部分组成,分别是 luci 和 ricci,luci 安装在一独 立的计算机上(即服务器),用于配置和管理集群,ricci 安装在每个集群节点上,Luci 通过 ricci 和集群中的每个节点进行通信。
一、HA 的搭建
实验环境:RHEL6.5 iptables and selinux disabled
三台主机:IP hostname
192.168.2.60(服务器)server60.example.com
192.168.2.167(node1) server67.example.com
192.168.2.168(node2) server68.example.com
分别修改两节点的 /etc/hosts
192.168.2.167 server67.example.com
192.168.2.168 server68.example.com
关闭火墙 #iptables -F
#service iptables save
关闭 selinux #setenforce 0
同步两台主机的系统时间
#yum install ntpdate
#ntpdate 192.168.2.60
在两台节点主机上分别安装 ricci
#yum install ricci
启动 ricci 服务
#service ricci start
设置为开机自启动
#chkconfig ricci on
为 ricci 设置密码
#passwd ricci
重启服务器的 luci
#service luci restart
Stop luci… [OK]
Start luci… [OK]
Point your web browser to https://server60.example.com:8084 (or equivalent) to access luci
web 访问 https://server60.example.com:8084/cluster/
进入网页编辑
先用 root 登录
再用本地用户登录
再用 root 登录时点击右上角 Admin,为普通用户 lee 授权
这时候就可以创建集群
这时,两节点主机将会重启。这就是为什么把 ricci 服务设置为开机自启动且将 iptables 关闭的原因。
创建完成会自动在节点上写入文件 /etc/cluster/cluster.conf
<?xml version=”2.0″?>
<cluster config_version=”1″ name=”leeypp”>
<clusternodes>
<clusternode name=”server67.example.com” nodeid=”1″/>
<clusternode name=”server68.example.com” nodeid=”2″/>
</clusternodes>
<cman expected_votes=”1″ two_node=”1″/>
<fencedevices/>
<rm/>
</cluster>
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-08/121707p2.htm
二、fence device 隔离设备
用 kvm 虚拟机来做这个隔离设备
实验环境:RHEL6 selinux and iptables disabled
主机:KVM 虚拟机
hostname ip kvm domain name
node1 192.168.2.137 vm1
node2 192.168.2.138 vm2
192.168.2.60 服务器
#yum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast -y
# fence_virtd -c 设置隔离设备
Module search path [/usr/lib64/fence-virt]:
Available backends:
libvirt 0.1
Available listeners:
multicast 1.0
Listener modules are responsible for accepting requests
from fencing clients.
Listener module [multicast]:
The multicast listener module is designed for use environments
where the guests and hosts may communicate over a network using
multicast.
The multicast address is the address that a client will use to
send fencing requests to fence_virtd.
Multicast IP Address [225.0.0.12]:
Using ipv4 as family.
Multicast IP Port [1229]:
Setting a preferred interface causes fence_virtd to listen only
on that interface. Normally, it listens on all interfaces.
In environments where the virtual machines are using the host
machine as a gateway, this *must* be set (typically to virbr0).
Set to‘none‘for no interface.
Interface [none]: br0
The key file is the shared key information which is used to
authenticate fencing requests. The contents of this file must
be distributed to each physical host and virtual machine within
a cluster.
Key File [/etc/cluster/fence_xvm.key]:
Backend modules are responsible for routing requests to
the appropriate hypervisor or management layer.
Backend module [libvirt]:
The libvirt backend module is designed for single desktops or
servers. Do not use in environments where virtual machines
may be migrated between hosts.
Libvirt URI [qemu:///system]:
Configuration complete.
=== Begin Configuration ===
backends {
libvirt {
uri = “qemu:///system”;
}
}
listeners {
multicast {
key_file = “/etc/cluster/fence_xvm.key”;
interface = “br0”;
port = “1229”;
address = “225.0.0.12”;
family = “ipv4”;
}
}
fence_virtd {
backend = “libvirt”;
listener = “multicast”;
module_path = “/usr/lib64/fence-virt”;
}
=== End Configuration ===
Replace /etc/fence_virt.conf with the above [y/N]? y
注: 以上设置除“Interface”处填写虚拟机通信接口外, 其他选项均可回车保持默认。
#dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
#scp /etc/cluster/fence_xvm.key 192.168.2.138:/etc/cluster(该目录默认是不存在的,可用 mkdir 来创建)
#scp /etc/cluster/fence_xvm.key 192.168.2.137:/etc/cluster
#service fence_virtd start
#chkconfig fence_virtd on
# netstat -anulp |grep fence
udp 0 0 0.0.0.0:1229 0.0.0.0:* 7519/fence_virtd
#cd /etc/cluster
查看是否存在 fence_virtd 文件
现在在网页管理上添加隔离设备
在 domain 后添加 server37 主机的 uuid
在 domain 后添加 server38 主机的 uuid
#fence_xvm -H vm1 看看是否可以操作你的虚拟机,如果成功,vm1 将会重启。
且另一个节点会热接管
设置两节点的下列服务为开机自启动:
#chkconfig cman on
#chkconfig rgmanager on
#chkconfig modclusterd on
#chkconfig clvmd on
设置故障转移域(failover domains)
添加资源(resourses)
(该 IP 不为其他主机所用)
添加成功之后
添加服务组(Server Groups)
在节点上执行的命令
#clusvcadm -d www 关闭此服务组
#clustat 查看节点和服务的状态
#clusvcadm -e www 开启此服务组
刚刚添加了 apache 服务,所以要在每个节点上安装 apache 服务
#yum install -y httpd
为了区分两台内容可以重新编辑一下默认访问主页
#cd /var/www/html/
#echo `hostname` > index.html
ok 现在可以在 web 网页上访问
http://192.168.2.111 就有主机名
刚刚添加的那个 ip 服务,它是一个浮动 ip
192.168.2.111 就可以看到你做的那个优先级高的再接管服务
如果将这个节点上的 http 关掉,那么那个优先级低的候补立马接管
如果 ifconfig eth0 down 是这个节点的网可关掉,它会尝试恢复,如果恢复不了,就会被集群 forceoff,然后重启当替补,如果优先级高的话,那么它就会立即接管给集群管理加存储服务
简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的 集群是,用户从来不会意识到集群系统底层的节点,在他 / 她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统 的节点。
通 过特殊的软件将若干服务器连接在一起并提供故障切换功能的实体我们称之为高可用集群。可用性是指系统的 uptime,在 7x24x365 的工作环境 中,99% 的可用性指在一年中可以有 87 小时 36 分钟的 DOWN 机时间,通常在关键服务中这种一天多的故障时间是无法接受的,所以提出了前面提到的错误恢 复概念,以满足 99.999% 的高可用性需求。
这里我们先说一下几个概念:
1、服务(Service),是HA集群中提供的资源,包括 Float IP,共享的存储,apache 等等。
2、成员服务器(Member Server)也叫节点(Node),是 HA 中实际运行服务提供资源的服务器。
3、失效域(Failover Domain),是 HA 中提供资源的服务器的集合,当内部某个成员出现故障时,可以将服务切换到其他正常的成员服务器上。在 HA 中一个失效域一般包含 2 台成员服务器(未应用虚拟技术)。
4、心跳(HeartBeat)是 HA 中监控成员服务器状态的方法,一般心跳是通过网线和串口线来传输的。
5、单一故障点(Single Point Of Failuer,SPOF)是指一个系统的这样的一个部件,当它失效或者停止运行,将导致整个系统不能工作。在 HA 中通常使用双电源,多网卡,双交换机等来避免 SPOF。
6、仲裁(Quorum)是 HA 中为了准确的判断服务器及其提供的服务是否正常而采用的在共享磁盘中保存成员服务器信息的方法。共享的状态信息包括群集是否活 跃。服务状态信息包括服务是否在运行以及哪个成员正在运行该服务。每个成员都检查这些信息来保证其它成员处于最新状态。在一个只有两个成员的群集中,每个 成员都定期把一个时间戳和群集状态信息写入位于共享磁盘贮存区的两个共享群集分区上。要保证正确的群集操作,如果某成员无法在启动时写入主共享群集分区和 屏蔽共享群集分区,它将不会被允许加入群集。此外,如果某群集成员不更新其时间戳,或者到系统的 ”heartbeats”(心跳)失败了,该成员就会从群 集中删除。
7、Fence 设备,Fence 设备的作用时在一个节点出现问题时, 另一个节点通过 fence 设备把出现问题的节点重新启动,这样做到了非人工的干预和防止出 现问题的节点访问共享存储,造成文件系统的冲突,关于 Fence 设备, 有外置的比如 APC 的电源管理器. 很多服务器都是内置的,只不过不同厂家的叫法不 同而已。比如 HP 的称为 iLo,IBM 的称为 BMC,Dell 的称为 DRAC。
LUCI——RHCS(RedHat Cluster Suite)提供了多种集群配置和管理工具,常用的有基于 GUI 的 system-config-cluster、Conga 等,也提供了基于命令行的管理工具。system-config-cluster 是一个用于创建集群和配置集群节点的图形化管理工具,它有集群节点配置和集群管理两个部分组成,分别用于创建 集群节点配置文件和维护节点运行状态。一般用在 RHCS 早期的版本中。Conga 是一种新的基于网络的集群配置工具,与 system-config- cluster 不同的是,Conga 是通过 web 方式来配置和管理集群节点的。Conga 有两部分组成,分别是 luci 和 ricci,luci 安装在一独 立的计算机上(即服务器),用于配置和管理集群,ricci 安装在每个集群节点上,Luci 通过 ricci 和集群中的每个节点进行通信。
一、HA 的搭建
实验环境:RHEL6.5 iptables and selinux disabled
三台主机:IP hostname
192.168.2.60(服务器)server60.example.com
192.168.2.167(node1) server67.example.com
192.168.2.168(node2) server68.example.com
分别修改两节点的 /etc/hosts
192.168.2.167 server67.example.com
192.168.2.168 server68.example.com
关闭火墙 #iptables -F
#service iptables save
关闭 selinux #setenforce 0
同步两台主机的系统时间
#yum install ntpdate
#ntpdate 192.168.2.60
在两台节点主机上分别安装 ricci
#yum install ricci
启动 ricci 服务
#service ricci start
设置为开机自启动
#chkconfig ricci on
为 ricci 设置密码
#passwd ricci
重启服务器的 luci
#service luci restart
Stop luci… [OK]
Start luci… [OK]
Point your web browser to https://server60.example.com:8084 (or equivalent) to access luci
web 访问 https://server60.example.com:8084/cluster/
进入网页编辑
先用 root 登录
再用本地用户登录
再用 root 登录时点击右上角 Admin,为普通用户 lee 授权
这时候就可以创建集群
这时,两节点主机将会重启。这就是为什么把 ricci 服务设置为开机自启动且将 iptables 关闭的原因。
创建完成会自动在节点上写入文件 /etc/cluster/cluster.conf
<?xml version=”2.0″?>
<cluster config_version=”1″ name=”leeypp”>
<clusternodes>
<clusternode name=”server67.example.com” nodeid=”1″/>
<clusternode name=”server68.example.com” nodeid=”2″/>
</clusternodes>
<cman expected_votes=”1″ two_node=”1″/>
<fencedevices/>
<rm/>
</cluster>
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-08/121707p2.htm
三、给集群管理加存储服务
1.ext4 文件系统
192.168.0.237(节点)server67.example.com
192.168.0.248(节点)server68.example.com
192.168.0.60(服务器)server60.example.com
在一个存储服务器上共享一块硬盘,作为存储(在实验中,就直接在集群管理的那台服务器上共享一块硬盘)
#yum install scsi-*
#vgs
#lvcreate -L 1G -n iscsi cinder-volumes
#lvs
#vim /etc/tgt/targets.conf
#/etc/init.d/tgtd start
#chkconfig tgtd on
#tgt-admin -s
# 在节点上要可以发现这个共享的存储设备,在两个节点上都执行
#yum install iscsi-initiator-utils
#iscsiadm -m discovery -t st -p 192.168.0.60
#iscsiadm -m node -l 激活设备
#fdisk -l /dev/sda
现在在两个节点上给此设备做 分区和格式化 (做本地文件系统 ext4)
#fdisk -cu /dev/sda
#mkfs.ext4 /dev/sda1
在 web 管理界面上添加存储设备资源和资源组
再去资源组 (Server Groups) 添加此资源
ok 现在操作服务组
#clustat
#clusvcadm -d www
现在将此设备先挂载到 /var/www/html 下
启动服务
#clusvcadm -e www
#clustat 查看服务是否启动成功
#clusvcadm -r www -m server38.example.com
#clustat 这是会发现 www 运行在 server38 主机上
2. 设备的分区和格式化 (即网络文件系统 gfs2)
clusvcadm -d www 先停掉服务组
删掉服务组里(servies groups)的文件系统(filesystem)资源,再到资源里删掉(delete)存储设备资源
fdisk -cu /dev/sda 把它做成 LVM 形式
这时在另一节点主机上运行 pvs 就可以看到刚创建的
pvcreate /dev/sda1
lvmconf –enble-cluster 在 /etc/lvm/lvm.conf 做更改,使它可以支持集群
重启服务 /etc/init.d/clvmd restart
在另一节点主机上运行 lvs,可以看见同步到的 gfs2demo
格式化为 gfs2 的格式 - t 跟更集群的名字:后是标签
两节点主机都进行挂载
# mount /dev/clustervg/gfs2demo /var/www/html
设置为开机自动挂载 直接写入 /etc/fstab 文件,在所有节点都做这个操作
查看系统设备信息
vim /etc/fstab
现在 mount -a 刷此文件,同时挂载
cd /var/www/html
vim index.html 写东西来进行 web 测试
web 访问集群
192.168.0.111 可以看到 index.html 文件里写入的内容
ok 现在开启服务组
clusvcadm -e www
clusvcadm -d www 先停掉服务组
在 web 管理上面添加
在 /etc/fstab 中注释掉 gfs2 设备的挂载,解挂
现在在资源加存储设备资源,集群管控添加服务组
ok 现在开启服务组
clusvcadm -e www
现在哪个节点工作,那个节点挂载
前提:clusvcadm -d www 删掉原来的存储设备
lvs
vgs
vgremove clustervg
lvs
pvs
pvremove /dev/sda1
iscsiadm -m node -u
iscsiadm -m node -o delete
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121707.htm