高可用集群HA架构搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高可用集群HA架构搭建相关的知识,希望对你有一定的参考价值。

HA含义为在集群服务器架构中,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

(1)基本安装

Server1server2 High Availability的两个节点

在两个节点上配置完整的rhel6.5yum源,安装ricci,创建ricci用户,密码westos,启动并设置开机启动ricci

instructor机作为管理机(M端),安装luci,启动luci服务


web上配置

web上输入https://instructor.example.com:8084  //m端通过8084端口设置节点

输入root用户名和密码

技术分享

 

点击Nodes->create 创建集群

Cluster name yakexi_ha(自定义)

下面两行填写两个节点hostname和密码(ricci的密码)

勾选下载包、在加入集群之前重启、支持分享存储这三个选项,

点击创建,集群创建完成。

技术分享

 

点击server1.example.com,可以看到底部相关集群服务已启动,其中,

Cman:控制组管理器

Rgmanager;资源组管理器

server1

#clustat  显示两个节点都是online,表明HA架构创建成功。

 

(2)Fence服务配置

当集群中一个节点僵住处于假死状态时,服务器会向另一个节点请求数据,若僵住的节点突然正常,向服务器发送数据,两节点数据冲突,会造成服务器的数据损坏,这种现象成为脑裂。为避免这种情况,可以采用fence服务,fence可以将假死节点在主板上跳电关机,避免脑裂发生。

M端,

#yum install fence-virtd-multicast-0.3.2-2.e17.x86_64 fence-virtd-libvirt-0.3.2-2.e17.x86_64 fence-virt-0.3.2-2.e17.x86_64 

#fence_virtd -c  //创建fence

Listener module [muliticast] :默认多播监听模块,回车

Multicast IP Address [225.0.0.12]:默认组播IP,回车 

Multicast IP Port [1229]:默认多播端口为1229端口,回车

Interface [none]:输入一个网卡,如br0

key file [/etc/cluster/fence_xvm.key]:显示fence_xvm.key文件,回车

Backend module [checkpoint]: 后端模块为libvirt 回车

Libvirt url [qemu:///system]: 回车

replace /etc/fence_virt.conf with the above [y/n] :y

重启fence_virtd服务

#netstat -anulp |grep 1229

显示fence_virtd 的套结字,表明fencem端配置成功。

#dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1  //fence_xvm.key写入随机数密码

重启fence_virtd

key文件发送到两个节点的/etc/cluster/下。


web上,点击fence devices

选择fence virtmulticast mode),nameserver1.example.com.

同上将server2.example.com加到fence devices

点击nodes->server1.example.com

fence devices 中点击add fence method ,创建fence method名(如vmfence-1).

点击add fence instance 选择vmfacexvm virtual machine fencing). Domain server1uuid

同理在server2中添加server2vmfence-2

 

server1上,

#fence_node server2.example.com

显示fence server2.example.com success 表明两节点的fence服务连接成功

 

web上,点击failover domains(故障转移域) ->add 

因为接下来是验证apache服务故障转移能力,所以namewebfail(自定义),勾选优先级(安排节点优先级)、限制(服务只能在特定节点上运行)、不回错(当僵死的服务再次复活时不让它的优先级回到1)。

勾选两个节点,优先级分别为12.

然后点击上面的resources->add 选择ip address ip address 172.25.0.100,子网掩码为24,勾选monitor link ,设置当ip地址移除5秒后休眠。这样虚拟ip (vip) 配置成功。

再点add, 选择scriptnamehttpdpath/etc/init.d/httpd.(节点服务为httpd,注意 两节点都要安装httpd且主页分别为server1.example.com 和 server2.example.com)。

点击service groups->add ,

Nameapache,勾选自动启动服务和独立运行。故障转移域为webfail,恢复计划为重新安置。

这样服务组设置完成。

 

server2中,

#clustat

显示群组的apacheserver2上开启

Web上登陆172.25.0.100后界面显示server2.example.com

#clusvcadm -r apache -m server1.example.com  //切换apache服务切换到server1

注:

Clusvcadm用来管理HA服务。

1. 启动某个应用服务

可以通过如下方式启动某个节点的应用服务:

clusvcadm -e -m 

2. 关闭某个应用服务

可以通过如下方式关闭某个节点的应用服务:

clusvcadm -s -m 

3. 重启某个应用服务

可以通过如下方式重启某个节点的应用服务:

 

            clusvcadm -R -m 

             4. 切换某个服务

             可以通过如下方式将一个应用服务从一个节点切换到另一个节点:

             clusvcadm -r -m 



刷新web,显示server1.example.com

在将apache切换到server2

刷新web,显示server2.example.com

#echo c > /proc/sysrq-trigger   //破坏server2内核

刷新web,显示server1.example.com

技术分享

(3)集群共享存储

m

要有空余空间的逻辑卷。如图

技术分享

 

#yum install iscsi-initiator-utils-6.2.0.873.e16.x86_64 scsi-target-utils-1.0.24-2.e16.x86_64 -y   // 服务端tgt软件名为scsi-target-utils

#vim /etc/tgt/targets.conf     

编辑如图下

技术分享 


//将存储(/dev/vol0/demo)共享给server1server2两个节点

重启tgtd

#tgt-admin -s //显示共享存储信息,ACL为权限列表。 

注:tgt-admin是一个对Targetluns进行持久化配置的工具。它使用tgtadm命令进行Target创建、删除和显示等操作。

 

server2

安装iscsi-initiator-utils

iscsi启动并设为开机启动

#iscsiidm -t st -m discovery -p 172.25.0.251    //发现远端存储 stsata模式

#iscsiadm -m node -l    // 以集群节点登陆远端存储

对远端存储进行分区,pvvglv 。卷组名为clustervg, 逻辑卷名为lv1,并格式化为ext4.

#iscsiadm -m node -u  //登出

#iscsiadm -m node -o delete //卸载远端存储

server1上,同server2

Server2server1都登陆挂载远程存储。并都mount/mnt目录


Server1mount上创建名为clu的文件,在server2上也能看到。这是集群远程存储的同步性。


web上,resource->add

通过网页设置节点上的远端存储

选择filesystem namewebdatatypeext4,挂载点为/var/www/html ,device/dev/cluster/lv1,勾选强制不挂载,快速状态检查,当卸载失败后重启节点设备。

web 

点击webdata,删除script,再add resource to service,依次添加,httpdwebdata。节点是按照这三个顺序启动服务的。

 

(4)集群文件系统gfs2

Gfs2特性:高可用,多路冗余

在server1上

#lvcreate -L 2G -n demo clustervg

#mkfs.gfs2 -p lock_dlm -t yakexi_ha:mygfs2 -j 3 /dev/clustervg/demo  

      // 创建gfs2文件系统 -plock_dlm 锁定协议为标准锁定模式,-t 在您使用 lock_dlm 协议时用来指定锁定表格字段的一识别程序,l后接文件名加冒号加自定义文件系统名称。 -j 指定生成日志数目。

#gfs2_tool sb /dev/clustervg/demo all  // 创建超级块

挂载demo到/mnt

#gfs2_tool journals /dev/clustervg/demo  //查看日志大小

 

开机自动挂载gfs2远端文件系统

#blkid  //查看设备uuid

在fstab文件中添加

UUID=你的uuid  /var/www/html   gfs2 _netdev    0 0       

#mount -a

在server2上在fstab中直接添加,因为集群同步性,server2的远端存储配置上已同server1上一样。

也可在web上配置,

点击resource->add

选择gfs2 ,其他与webdata几乎相同。                          

 

若想添加文件日志数,可用

#gfs2_jadd -j 2 /dev/clustervg/demo                                                                                             

增大挂载文件系统

#gfs2_grow /dev/clustervg/demo

可用df -h vgs lvs等验证。 


本文出自 “linux札记” 博客,转载请与作者联系!

以上是关于高可用集群HA架构搭建的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop搭建高可用的HA集群

MySQL搭建高可用MHA集群架构

MySQL搭建高可用MHA集群架构

搭建高可用的flink JobManager HA

Linux集群:搭建高可用集群

Linux运维-集群技术进阶Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群