高可用集群(High Availability Cluster),简称HACluster,简单的说集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(Cluster)。高可用集群解决的是保障用户的应用程序持续对外提供服务的能力(保护的是用户的业务程序对外不间断提供服务,把因人为/软件/硬件造成法故障对业务的影响将到最低)。
准备工作:
三台纯净的虚拟机:
(节点主机::172.25.31.1 -server1.example.com
节点主机: 172.25.31.2 - server2.example.com
M端: 172.25.31.3 - server3.example.com )
1.三台虚拟机做同样的操作:
配置yum源:
cd /etc/yum.repos.d/
vim dvd.repo ##(让yum 源指向自己的真机,删除多于的仓库)
yum repolist
vim /etc/hosts ##(将打开的三台主机进行地址解析,在自己的真机上也进行地址解析)
chkconfig iptables off
/etc/init.d/iptables stop
两台节点主机的时间要同步。
2.在节点主机172.25.31.1/2上安装ricci: ##ricci属于集群组件的节点组件之一,作用是与集 群管理套件luci进行通讯,可称之为主控端或者M端
yum install ricci -y
echo westos | passwd --stdin ricci ##给两个节点主机的ricci用户设置密码westos
chkconfig ricci on ## 设置开机自启动
/etc/init.d/ricci start
M端172.25.31.3上安装luci: ##luci是集群的控制软件
yum install luci -y
rpm -q luci ##(luci-0.26.0-48.el6.x86_64)
/etc/init.d/luci start
在浏览器中输入:https://server3.example.com:8084 ##(登陆的是M端:172.25.31.3的root 和密码redhat,普通用户需要经过root授权才能登陆)
create new cluster
Download Packages ##自动从yum源中下载集群套件,这两个节点会安装 cman,rgmanager,modclusterd,clvmd服务,并且安装完成后还会重启
Use Locally Installed Packages ##检查是否已经安装,有新的话不更新
之后可以在节点主机172.25.31.1/2查看:
clustat ##(查看集群状态)
3.在集群外,物理机172.25.254.31上,配置fence: ##当一台机器出现故障时处于正常状态的机器 会通过fence将其重启,关机或者释放ip等资源
配置物理机的yum源
yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64
fence-virtd-multicast.x86_64
ll /etc/fence_virt.conf
## module设置为多播,多播ip为225.0.0.12,创建fence的key文件
cat /etc/fence_virt.conf ##fence的配置信息写入这个文件中
mkdir /etc/cluster #原来没有这个目录的需要手动创建
systemctl restart fence_virtd
netstat -anulp | grep :1229
cd /etc/cluster
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
##生成电源key(dd 用于复制文件并对原文件的内容进行转换和格式化处理 if-代表输入文件
of-代表输出文件 bs-代表以字节为单位的块大小 count-代表被复制的块数)
systemctl restart fence_virtd
cd /etc/cluster ## (该目录下有fence_xvm.key)
scp fence_xvm.key root@172.25.31.1:/etc/cluster
scp fence_xvm.key root@172.25.31.2:/etc/cluster
在浏览器中输入:https://172.25.31.4:8084
Fence Devices ->add
server1.example.com -> Add Fence Method to Node ##集群给节点添加fence
-> Add Fence Device (Instance) ##Domain添加的是节点主机的uuid或者主机名称
同样的节点主机server2.example.com也进行同样的操作。
检测:
在server1.example.com:
fence_node server2.example.com ##(server2.example.com 强制关机后重新启动)
配置failover:
Failover Domains -> Add
##prioritized为故障切换域成员的每个节点设置优先值
##restricted分配给这个故障切换域的服务只能切换到这个故障切换域中的节点
##no failback,如果从首选节点中恢复某个服务,则该服务不会切换到恢复它的节点中。
Add Service Group to Cluster -> ##添加故障域
Add Service Group to Cluster->Add
##run exclusive 当运行apache时不再运行其他服务
##Add Resource增加的是IP address和scripts
检测:
在节点主机172.25.31.1/2上进行:
yum install httpd -y ##(安装之后开启httpd)
echo server1.example.com > /var/www/html/index.html ##172.25.31.1
echo server2.example.com > /var/www/html/index.html ##172.25.31.2
在浏览器中输入:172.25.31.131可以出现:server1.example.com
在172.25.31.1上进行:
clusvcadm -r apache -m server2.example.com ##server3接管服务
echo c > /proc/sysrq-trigger ##故意让server2的系统崩溃,之后server1重启
在浏览器中刷新:出现server2.example.com
4.给M端172.25.21.3分一块硬盘: ##8G左右
fdisk -l ##查看是否有新的硬盘/dev/vdb
vim /etc/tgt/targets.conf
<target iqn.2016-06.com.example:server.disk>
backing-store /dev/vdb ##/dev/vdb就是刚刚分出来的新硬盘
initiator-address 172.25.31.1
initiator-address 172.25.31.2
</target>
tgt-admin -s
在两个节点主机安装:
yum install iscsi-initiator-utils.x86_64 -y
在M端安装:
yum install scsi-target-utils-1.0.24-10.el6.x86_64 -y
/etc/init.d/tgtd start
在172.25.31.1/2上进行:
iscsiadm -t st -m discobery -p 172.25.31.3
iscsiadm -m node -l
在172.25.31.1上进行:
fdisk -cu /dev/sda ##对磁盘分区,lvm
pvcreate /dev/sda1
vgcreate clustervg /dev/sda1 ##clustervg是逻辑卷组的名称
lvcreate -L 2G -n lv1 clustervg
##磁盘分区,创建逻辑卷组等操作,会共享给节点主机172.25.31.2
将172.25.31.1上磁盘格式化为ext4:
mkfs.exte /dev/clustervg/lv1
在浏览器中:https://server3.example.com
Resource -> Add
在Add Service Group to Cluster中添加资源顺序是:IP address ,File System,Script
在172.25.31.1上进行:
echo www.westos.org > /var/www/html/index.html
在浏览器中输入:172.25.31.131,出现:www.westos.org
格式化为gfs2: ##集群式文件系统
先删除之前创建的lv1:
lvextend -L 2G /deb/clustervg/lv1
resize2fs /dev/clustervg/lv1
lvremove /dev/clustervg/lv1
lvcreate -L 2G -n demo clustervg
mkfs.gfs2 -p lock_dlm -t memory:mygfs2s -j 3 /dev/clustervg/demo
gfs2_tool sb /dev/clustervg/demo all