高可用集群(High Availability Cluster),简称HACluster,简单的说集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(Cluster)
。高可用集群解决的是保障用户的应用程序持续对外提供服务的能力(保护的是用户的业务程序对外不间断提供服务,把因人为/软件/硬件造成法故障对业务的影响将到最低)。
准备工作:
三台纯净的虚拟机:
(节点主机::172.25.85.6~ server1.example.com
节点主机: 172.25.85.7 ~ server2.example.com
M端: 172.25.85.8 ~ 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.85.6/7上安装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.85.8上安装luci: ##luci是集群的控制软件
yum install luci -y
rpm -q luci ##(luci-0.26.0-48.el6.x86_64)
/etc/init.d/luci start
在浏览器中输入:https://172.25.85.8:8084
##(登陆的是M端:172.25.85.8的root和密码redhat)
create new cluster
##密码是创建ricci用户的密码westos
Download Packages
##自动从yum源中下载集群套件,这两个节点会安装cman,rgmanager,modclusterd,clvmd服务,并且安装完成后还会重启
Use Locally Installed Packages ##检查是否已经安装,有新的话不更新
之后可以在节点主机172.25.85.6/7查看:
clustat ##(查看集群状态)
3.真机172.25.254.85上,配置fence:
##当一台机器出现故障时处于正常状态的机器会通过fence将其重启,关机或者释放ip等资源
配置好真机的yum源
yum search fence
yum install fence-virtd-multicast-0.3.2-2.el7.x86_64
fence-virtd-0.3.2-2.el7.x86_64
fence-virtd-libvirt-0.3.2-2.el7.x86_64
fence-virtd-serial.x86_64 0:0.3.2-2.el7
rpm -aq | grep fence #
ll /etc/fence_virt.conf
cat /etc/fence_virt.conf
fence_virtd -c
##在设置时侯用的网络接口卡选择你安装fence主机的桥接口,其余选择默认
mkdir /etc/cluster #原来没有这个目录的需要手动创建
systemctl restart fence_virtd
netstat -anulp | grep :1229
cat /etc/fence_virt.conf
cd /etc/cluster
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
## (dd 用于复制文件并对原文件的内容进行转换和格式化处理 if~代表输入文件
of~代表输出文件 bs~代表以字节为单位的块大小 count~代表被复制的块数)
systemctl restart fence_virtd
cd /etc/cluster ## (该目录下有fence_xvm.key)
scp fence_xvm.key root@172.25.85.6:/etc/cluster
scp fence_xvm.key root@172.25.85.7:/etc/cluster
virsh list ##(正在运行的虚拟机列表)
在浏览器中输入:https://172.25.85.8:8084
Fence Devices ->add
server6.example.com -> Add Fence Method to Node
-> Add Fence Device (Instance)
同样的:server7.example.com -> Add Fence Method to Node
-> Add Fence Device (Instance)
##ricci1和ricci2 分别是server6和server7的虚拟机名字;这里也可以用虚拟机的UUID。
检测:
在节点server7上:fence_node server6.example.com
##(server6.example.com 强制关机)
4.在浏览器中输入:https://172.25.85.8:8084
##数字大的优先级小
##添加故障域
##选择「 优 先的」 选框后,您可以为选择作为故障切换域成员的每个节点设置优先值,「 优 先 权 」 。 ##选择「有限」 复选框后,分配给这个故障切换域的服务只能切换到这个故障切换域中的节点。
##选择「无故障恢复」 后,如果从首选节点中恢复某个服务,则该服务不会切换到恢复它的节点中。
将ip address 后人httpd两个资源加入到Cluster
Add Service Group to Cluster ->
Add resource to service:
(Ip address)172.25.85.100/24 ->(Add Resource) httpd ##添加资源顺序
检测:
在节点主机172.25.85.6/7上进行:
yum install httpd -y ##(安装之后开启httpd)
echo server6.example.com > /var/www/html/index.html ##172.25.85.6
echo server7.example.com > /var/www/html/index.html ##172.25.85.7
server6:
clusvcadm -r apache -m server6.example.com
echo c > /proc/sysrq-trigger ##故意让系统崩溃
在一个主机上运行两个资源:
5.先给M端172.25.85.8分一块硬盘: ##8G左右
在M端安装:
yum install scsi-target-utils-1.0.24-10.el6.x86_64 -y
/etc/init.d/tgtd start
fdisk -l
vim /etc/tgt/targets.conf
<target iqn.2016-06.com.example:server.disk>
backing-store /dev/vdb ##/dev/vdb就是刚刚分出来的新硬盘
initiator-address 172.25.85.6
initiator-address 172.25.85.7
</target>
tgt-admin -s
在两个节点主机:
yum install iscsi-initiator-utils.x86_64 -y
iscsiadm -t st -m discovery -p 172.25.85.8
iscsiadm -m node -l
##共享分区就建立好了,在server6和server7上会出现两个新的磁盘/dev/sda
cat /proc/partitions ##查看分区是否共享
给其中一台节点主机共享的新磁盘分区
vgcreate clustervg /dev/sda1
lvcreate -L 2G -n lv1 clustervg
mkfs.ext4 /dev/clustervg/lv1
https://72.25.85.8:8084:
Resources -> Add
Service Groups 使apache,disable
重新添加资源,顺序:
(Ip address) 172.25.85.100/24 > (File System) webdata > (Script) httpd
之后在server6:
clusvcadm -e apache ##打开apache
检测:
可以通过关闭server6上的httpd ,来观察server7上集群的变化
df
删除建立的文件系统
先在网页中删除webdata
clusvcadm -d apache
resize2fs /dev/clustervg/lv1
lvremove /dev/clustervg/lv1
二:
1.在server6和热server7上:
yum install mysql-server -y
Failover Domains -> add
Resource -> add
打开之前建立的共享存储:
在server6上:
删除之前在/dev/sda中建立的分区,然后重新建立2个linux格式的分区:
fdisk -cu /dev/sda
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
并将分区同步到server7上
在浏览器中打开:https://server8.example.com:8084
Resources -> Add
Service Group -> Add
修改apache中的资源顺序为:(ip address)172.25.85.100/24 > webdata > httpd
再添加一个新的资源组mysql:添加资源顺序为 (ip address)172.25.85.101/24 > dbdata > mysqld
在server6上查看挂载情况
发现:/dev/sda1自动挂载到了/var/www/html
/dev/sda2自动挂载到了/var/lib/mysql
同时打开server6和server7上的mysql和httpd
clustat可以看见httpd运行在server6上,mysql运行在server7上
如果电脑关机,继续做集群需要开启的服务有:
/etc/init.d/iscsi start
/etc/init.d/tgtd start
systemctl restart fence_virtd
/etc/init.d/luci start
/etc/init.d/clvmd start