在集群中存在vip,httpd等资源时,我们希望vip和httpd同时运行在node1或者node2上,如果vip运行在node1上,httpd运行在node2上,此时我们将无法正常访问集群中的httpd,所以我们将vip和httpd加入到一个服务组(group)中。
1.在node1和node2中同时安装httpd
#yum install httpd -y
#systemctl enable httpd
#systemctl start httpd
2.查看集群中已经添加的资源
#pcs resource show
如下图所示,我已经添加过vip资源:
#pcs resource list 查看所有可以添加的资源
#pcs resource list | grep http 查看有没有http的资源可以添加
#pcs resource describe ocf:heartbeat:IPaddr2 查看添加过的资源ocf:heartbeat:IPaddr2的各种参数
我们此时添加一个额外的vip1练习一下:
#pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=192.168.100.200 cidr_netmask=24 op monitor interval=20s 添加一个vip1
#pcs resource show 查看添加的资源有vip和vip1
#pcs resource show vip1 查看vip1资源的详细信息
#pcs resource update vip1 ip=192.168.100.201 修改vip1资源的ip为192.168.100.201
#pcs resource delete vip1 删除资源vip1
3.创建资源httpd
#pcs resource create httpd systemd:httpd 创建一个httpd资源名字叫httpd
注意:千万不要在集群节点中手动开启和关闭集群的资源
#pcs resource show 查看集群中存在的资源
#crm_mon -1 查看资源运行在哪个节点
现在vip和httpd都运行在node2上
#pcs resource move vip node1 将vip移动到node1上运行
此时,vip在node1上运行,httpd在node2上运行,我们发现此时无法访问httpd了
这时我们创建一个服务组,让vip和httpd始终在一个组里运行(vip在node1上,httpd也在node1上)
4.将资源添加到一个服务组
什么是group?相关的一系列资源,如果放一个组里,同一个组里的资源始终会在同一节点运行
#pcs resource group list 查看存在的组
#pcs resource group add group1 vip httpd 创建一个group1组,并添加vip,httpd到group1中,此时vip,httpd的顺序就是组里的启动顺序
#pcs resource group remove group1 删除组group1
其实创建资源的时候可以直接添加到组里,如下所示:
#pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=192.168.100.200 cidr_netmask=24 --group1 创建资源vip1并添加到group1中,如此时没有group1则自动创建
#pcs resource group add group1 vip --before vip1 将vip也添加到group1中,顺序排在vip1之前
#pcs resource group add group1 httpd --after vip 将httpd也添加到group1中,顺序在vip之后
#pcs resource group remove group1 vip1 将vip1从group1中删除
#pcs resource group list
此时vip和httpd都在一个组里,我们移动vip到node1上,则httpd也跟着移动到node1上,不会出现运行在不同节点上的情况。
Apache的高可用:
1. 创建集群vip,ip为192.168.100.100 我们已经创建了
2.在node1和node2上安装httpd并设开机启动,创建为集群的资源,我们已经创建了
3.设置nfs共享存储
在宿主机上:
#mkdir /httpd
#vim /etc/exports
/httpd 192.168.100.0/24(rw,sync)
#systemctcl restart nfs
#echo "this is on node" > /httpd/index.html
在node1上
#showmount -e node 出现了如下图所示的共享文件夹就是正常
集群中添加nfs资源#pcs resource list | grep filesystem 查看filesystem的资源代理名称#pcs resource create nfs ocf:heartbeat:Filesystem params device="192.168.100.1:/httpd" directory="/var/www/html" fstype="nfs" --group group1 --before httpd
此时在宿主机中打开浏览器访问http:192.168.100.100即可显示页面,其中一台节点出现故障,另一台也正常挂载共享存储,网站依然正常访问。
Mariadb的高可用:
1.添加vip1,ip地址为192.168.100.101
#pcs resource create vip1 ocf:heartbeat:IPaddr2 ip=192.168.100.101 cidr_netmask=24 --group group2
2.在集群中添加mariadb的资源
在宿主机,node1,node2上
#yum install mariadb mariadb-server -y
#systemctl enable mariadb
#systemctl start mariadb
注意:如果mairadb启动出错,
#mysql_install_db --datadir="/var/lib/mysql" --user="mysql"
在node1和node2中
#mysql
>grant all on *.* to root@'%' identified by 'redhat';
>quit;
#pcs resource create mysql systemd:mariadb --group group2
3.在集群中添加共享存储资源
在宿主机上
#mkdir /mysql
#vim /etc/exports
/mysql 192.168.100.0/24(rw,sync,no_root_squash)
#systemctl restart nfs
#exportfs
在node1中
#pcs resource create mysql-storage Filesystem params device="192.168.100.1/mysql" directory="/var/lib/mysql" fstype="nfs" --group group2 --before mysql
此时mariadb的高可用配置完成,可以在宿主机上登录测试
#mysql -h 192.168.100.101 -uroot -predhat
>create database aa;
>show databases;
>quit;
然后转移资源到另一个节点测试,看看数据库aa是否存在。
注意,转移资源之前一定要退出数据库。
NFS的高可用:
1.添加vip2,ip地址为192.168.100.102
#pcs resource create vip2 ocf:heartbeat:IPaddr2 ip=192.168.100.102 cidr_netmask=24 --group group3
2.添加资源Filesystem,挂载一个目录,即需要共享出去的目录
在宿主机上#virt-manager 打开虚拟系统管理器
在node1和node2虚拟机上
点添加硬件,然后添加一个硬盘,总线类型为VirtIO,如下图:
然后进入系统,#fdisk -l 发现多了一个vdb设备
#fdisk /dev/vdb 创建一个2G的vdb1
#partprobe /dev/vdb
#mkfs.ext4 /dev/vdb1
#pcs resource create nfs_fs ocf:heartbeat:Filesystem device=/dev/vdb1 directory=/nfs1 fstype=ext4 --group group3
3.共享一个目录,即上面挂载的目录
#pcs resource create nfsserver ocf:heartbeat:nfsserver --group group3
#pcs resource create nfsclient ocf:heartbeat:exportfs clientspec=192.168.100.0/24 options=rw,sync,no_root_squash directory=/nfs1 fs_id=0 --group group3
此时,所有的资源运行正常,成功完成NFS的高可用,如下图:
图形界面也可以查看,如下图:
在宿主机上#showmount -e 192.168.100.103 可以验证可挂载,关闭一个节点,另一个节点可以正常提供NFS服务,说明NFS高可用成功配置。
至此Day 3的课程总结完毕。