HA 简介+ Fence

HA(High Available),高可用集群,是减小服务中断时间为目的的服务器集群技术。是保证业务连续性的有效解决方案。集群,简单的来讲就是一组计算机。通常有两个或者两个以上的计算机组成,这些组成集群的计算机被称为节点。html

        其中由两个节点组成的集群被称为双机热备,即便用两台服务器互相备份,当其中一台服务器出现问题时,另外一台服务器立刻接管服务,来保护用户的业务程序对外不间断提供的服务,固然集群系统更能够支持两个以上的节点,提供比双机热备更多、更高级的功能,把因软件/硬件/人为形成的故障对业务的影响下降到最小程度。node

        在集群中为了防止服务器出现“脑裂”的现象,集群中通常会添加Fence设备,有的是使用服务器自己的的硬件接口称为内部Fence,有的则是外部电源设备称为外部Fence,当一台服务出现问题响应超时的时候,Fence设备会对服务器直接发出硬件管理指令,将服务器重启或关机,并向其余节点发出信号接管服务。linux

         在红帽系统中咱们经过luci和ricci来配置管理集群,其中luci安装在一台独立的计算机上或者节点上,luci只是用来经过web访问来快速的配置管理集群的,它的存在与否并不影响集群。ricci是安装在每一个节点上,它是luci与集群给节点通讯的桥梁。web

接下来是集群的配置了。
apache

主机环境: rhel6.5 iptables and selinux disablevim

实验主机
server4.example.com 172.25.9.4 luci端后端

server2.example.com 172.25.9.2 节点1服务器

server3.example.com 722.25.9.2 节点2dom

在节点端:ide

yum install ricci

给ricci用户设置密码

echo redhat | passwd --stdin ricci

开启ricci并确保ricci开机启动

/etc/init.d/ricci start
chkconfig ricci on

在luci端:

安装集群管理软件

yum install luci

开启luci

/etc/init.d/luci start

用web登陆https://server4.example.com:8084经过网页来配置其中8084端口就是luci启动的端口

luci端的主机的root用户就是luci的管理用户;其余用户登陆须要root用户受权这里为了方 便直接用root登陆

wKioL1dgHAnQmBWpAAAquYpjZ7A322.png-wh_50

建立集群

wKiom1dgGwTB-Cz2AAB-I-3JN40113.png-wh_50

建立集群成功

wKioL1dgHCXDcKAkAABgiGS2S3w242.png-wh_50

输入节点主机clustat命令也可查看到

Member Status: Quorate
Member Name ID   Status
 ------ ----   ---- ------
server2.example.com    1 Online, Local
server3.example.com    2 Online

为集群添加外部fence:

由于实验主机是虚拟机因此用物理机来模拟fence 在物理机中安装所需的软件包

yum install fence-virtd-multicast.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64

开始建立:

执行fence_virtd -c命令后按要求配置

寻找module路径默认便可:

wKioL1dgHF-RfZe5AAAXBPj-ml8287.png

监听module设为多波:

wKiom1dgG2DzQsaMAAAOD4nYcRI946.png

多波IP设为225.0.0.12:

wKioL1dgHIORmluMAAAR1ShEIvc539.png

端口设为1229:

wKiom1dgG5bicHOaAAAOSAbya-o137.png

接口为br0:

wKiom1dgG7OQ-jhFAAAKddjAuRY084.png

建立fence的key文件默认便可,要确保有/etc/cluster目录:

wKiom1dgG8zit5woAAATtg7DYp8027.png

后端module为libvirt:

wKiom1dgG92irPB0AAAPgoh6N7Y707.png

成功后会将如下信息写入/etc/fence_virt.conf

backends {
libvirt {
    uri = "qemu:///system";
}

 }

listeners {
multicast {
    port = "1229";
    family = "ipv4";
    interface = "br0";
    address = "225.0.0.12";
    key_file = "/etc/cluster/fence_xvm.key";
}

 }

fence_virtd {
module_path = "/usr/lib64/fence-virt";
backend = "libvirt";
listener = "multicast";
}

采集随即信息到刚刚生成的key文件里

dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

启动fence_virtd服务

systemctl start fence_virtd.service

将key文件传到节点的/etc/cluster目录下就能够经过luci给集群添加fence了 点击Fence Devices添加fence,有多种fence设备可供选择这里选的是Fence virt(MulticastMode ):

wKioL1dgHsfBRb9ZAAIBNTazwwo136.png-wh_50

而后点击Nodes里的节点为集群添加fence

wKioL1dgHTWCweUTAABoHluxFMg913.png-wh_50

这里选择vmfence(xvm Virtual Machine Fencing)其中Domain填写虚拟机的名字或UUID。

wKiom1dgHDPRA4FhAABn4xeNrQw017.png-wh_50

每一个节点都添加了之后测试一下:

在server2.example.com中执行fence_node server3.example.com 命令能够看到server3主机关闭重起了

配置完fence后接着配置failover:

wKiom1dgHFDBW-QeAAByqTXhBqk630.png-wh_50

#Prioritized设置优先级

#Restricted设置只在勾选节点中运行

#No Failback设置当优先级高的节点恢复时不会接管正在运行的服务

而后在Resource中添加资源这里添加虚拟ip和httpd的脚本(集群要安装httpd):

wKioL1dgHbPiCM3VAABapASoYZs596.png-wh_50

wKioL1dgHdbgaoJLAAA7f4Gh1Jc452.png-wh_50

最后设置Server Group:

wKiom1dgHM-BNiV5AAB6tShRhHc599.png-wh_50

#Automatically Start This Service设置自动开启服务

#Run Exclusive 设置当运行此服务时再也不运行其余服务

点击 Add Resource 增长Resource中的资源这里添加的是上一步配置的虚拟IP和httpd脚本

测试:

在网页输入设置的虚拟IP172.25.9.100能够看到server2主机的网页内容server2.example.com

wKioL1dgHgDwsWouAAASsITDRaI729.png-wh_50

在server2主机执行clusvcadm -r apache -m server3.example.com命令让server3主机接管服务

或者执行echo c > /proc/sysrq-trigger让server2内核崩溃,server2主机将在fence的做用下重起.

刷新172.25.9.100的页面能够看到server3的主页内容server3.example.com。

wKiom1dgHQexToTyAAATTHawi5E672.png-wh_50

集群存储:

在luci端安装iscsi服务端

yum install scsi-target-utils.x86_64

添加配置:

vim /etc/tgt/targets.conf
 <target iqn.2016-06.com.example:server.target1>
 backing-store /dev/vdb
 initiator-address 172.25.9.2
 initiator-address 172.25.9.3
 </target>
/etc/init.d/tgtd start

输入tgt-admin -s看到以下信息表示成功

wKioL1dgHjrR_HfxAAC9vXz3o5g118.png-wh_50

wKiom1dgHSjxZq9UAAC1KZw_UCw108.png-wh_50

在集群安装iscsi客户端

yum install iscsi-initiator-utils.x86_64 -y

找到服务端分享的磁盘

iscsiadm -t st -m discovery -p 172.25.9.4

连接

iscsiadm -m node -l

对磁盘进行分区并建立lvm(只需在集群的一个节点作)

fdisk -cu /dev/sda
pvcreate /dev/sda1
vgcreate clust0 /dev/sda1
lvcreate -L +2G -n lv0 clust0

磁盘能够格式化为本地系统或者集群文件系统

1.磁盘格式化为本地文件系统 mkfs.ext4 /dev/clust0/lv0

节点执行pvs,vgs,lvs。命令进行同步

最后在网页进行配置:

点击Resource添加资源:选择File System

wKioL1dgHmDTmhX-AAB4bqFoPn4099.png-wh_50

在以前的Resource Group中的apache组添加资源顺序为虚拟IP -> File System ->httpd脚本

由于server2主机的优先级高因此先挂载在server2主机,在server2主机执行

echo www.redhat.com > /var/www/html/index.html

访问虚拟ip172.25.9.100能够看到这个主页

wKiom1dgHWDgBBGkAAARmq29wzg761.png-wh_50

2.磁盘格式化为集群文件系统

lvcreate -L 2G -n demo clust0
mkfs.gfs2 -p lock_dlm -t memory:mygfs2s  -j 3 /dev/clust0/demo
gfs2_tool sb   /dev/clust0/demo all #查看demo的信息

在/etc/fstab中写入(UUID能够经过blkid查看,所用节点都作) vim /etc/fstab UUID=c705c698-7dbb-b831-2cd5-1d553660d393 /var/www/html gfs2 _netdev 0 0 mount -a

相关文章
相关标签/搜索