前提概念
1.Centos7和Red Hat Enterprise Linux 7 版本使用Pacemaker替换了rgmanager来进行集群资源的管理以及从节点失败中恢复。
2.pacemaker 是一种集群管理器,pcs为它的配置系统,同类的集群配置和管理工具有ccs、ricci、luci
pcs优点:用命令行来进行管理,操作简单;可以轻松初始化集群并使其开始运行;可配置集群选项;可以轻松对资源进行修改,增减,便于梳理集群资源间的关系。
环境准备
要求:centos7系统的服务器,要处于同一局域网,可相互连通,yum源可用
1.可以用kvm 创建四台虚拟的centos7系统的服务器。如果不确定系统版本,可用查看命令
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2.关闭防火墙iptables或添加防火墙规则,因为防火墙会在实验过程中,阻挡程序,如果是实验建议关闭防火墙(任选)
参与操作的服务器皆如此
systemctl stop iptables;systemctl disable iptables
-----------------------------------------------------------------------------------------------------------------------------------------------------------
sed -ri '/SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
firewall-cmd --permanent --add-service=high-availabilitty
firewall-cmd --reload
firewall-cmd --permanent --list-all
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
---------------------------------------------------------------------------------------------------------------------------------------------------------------
3.为了操作,便于观察,可以更改主机名和添加解析【可选】
vim /etc/hostname 改主机名,每台皆如此
vim /etc/hosts 添加解析
scp /etc/hosts AAA:/etc/hosts 将解析推送到所有服务器
4.建立时间同步(每台皆如此)
yum -y install ntp
ntpdate cn.pool.ntp.org
5.建立多机互信(任选一台)
ssh-keygen -f /root/.ssh/id_rsa -N " " 创建密钥
mv /root/.ssh/{id_rsa.pub,authorized_keys} 改变密钥文件名,authorized_keys为固定格式,可被系统识别
scp -r /root/.ssh AAA:/root/ 推送密钥
date;ssh AAA "date" ;ssh BBB "date";ssh CCC "date" 检测时间同步
时间相同即成功同步
一、安装ISCSI,建立块的共享
1.提取任意一台作为ISCSI的服务端
(添加一块硬盘,不需要做lvm,目的是为了将块设备共享出去,相比于文件共享其空间更大,可由用户进行格式化)
yum -y install targetcli 安装服务端
2. 其他服务器安装客户端
yum -y install scsi-target-utils
3.ISCS 的服务端操作
targetcli 进入iscsi操作命令
cd backstores/block
create san1 /dev/vdb
cd /iscsi
create iqn.2018-01.com.dada:san1 iqn 有固定文件格式 开头iqn、时间、域、一般写公司名(任意):任意
cd iqn.2018-01.com.dada:san1/tpg1/luns
create /backstores/block/san1
cd ..
tpg1> set attribute demo_mode_write_protect=0
set attribute generate_node_acls=1
set attribute cache_dynamic_acls=1
cd /
saveconfig ( 保存 ) clearconfig confirm=True (重置命令)
exit 退出
成功 结果如下,块设备已被共享出去
4.ISCSI客户端操作: 【注意:IP 为ISCSI服务端的ip地址,此文中简写】
iscsiadm --mode discoverydb --type sendtargets --portal IP --discover 发现块设备,此IP 为ISCSI服务端的ip地址
iscsiadm --mode node --targetname iqn.2018-01.com.abc:targetone --portal IP -l 登录块设备
iscsiadm --mode node --targetname iqn.2018-01.com.abc:targetone --portal IP -u 登出块设备,在不需要时登出
{sda即为服务端共享出的块设备,在服务端被自动命名为sda}
二、创建集群corosync
Corosync用于高可用环境中提供通讯服务,位于高可用集群架构中的底层,为各节点之间提供心跳信息传递
1.在每台ISCSI的服务端执行:
yum -y install pcs pacemaker corosync fencen-agents-all 必备软件
systemctl start pcsd;systemctl enable pcsd 开启pcsmaker集群资源管理工具,并设为开机自启
对每台设置相同的密码,默认用户hacluster
2.此时每台服务都为集群的节点,在其中的一个节点,进行验证
pcs cluster auth AAA BBB CCC AAA之类为各节点的主机名
输入用户名 hacluster
密码 为各节点给hacluster设置的密码
再次验证,无需输入,Already节点设置成功
3. 在任意节点操作:
pcs cluster setup --start --name you_cluster \ --name后给集群起任意名字
> AAA BBB CCC 创建了一个名为you_cluster 的包含节点AAA、BBB、CCC的集群
pcs cluster enable --all 将集群设为开机自启
pcs cluster status 查看集群状态 Online 为正常使用
4.如果没有Fence,建议禁用STONITH
pcs property set stonith-enabled=false
正常集群Quorum(规定)需要半数以上的票数,如果是双节点的集群
pcs property set no-quorum-policy=ignore
crm_verify -L -V 检验集群是否正常,无输出即为正常
三、添加各种资源
pcs resource delete 资源名 删除资源
pcs resource show 查看资源 pcs status
1.添加虚拟ip资源
pcs resource create WebVip ocf:heartbeat:IPaddr2 \ IPaddr2 为pacemker 的heartbeat模块的一部分
ip=192.168.122.100 \ 此ip为虚拟ip ,避免与真实ip冲突
cidr_netmask=24 \ 设定掩码
--group WebGroup 将此资源添加到WebGroup资源组
pcs status 查看
出现 Resource Group: WebGroup
WebVip (ocf::heartbeat:IPaddr2): Started AAA
为资源添加成功,started 为资源正常使用,stop资源停用
2.创建LVM资源
(1)任选一个节点创建lvm逻辑卷
pvcreate /dev/sda
vgcreate vghttp /dev/sda
lvcreate -L 10G -n lvhttp vghttp
mkfs.xfs /dev/vghttp/lvhttp
(2)所有节点操作
lvmconf --enable-halvm --services --startstopservices 开启功能
vim /etc/lvm/lvm.conf 更改LVM配置
volume_list = [ "cl" ] 设定所有非集群使用的vg,cl为vg名
dracut -H -f /boot/initramfs-$(uname -r),img $(uname -r) 启用配置
reboot 对节点进行重启
lvscan 发现/dev/vghttp/lvhttp 状态为inactive 为成功
(3)创建资源
pcs resource create WebLvm ocf:heartbeat:LVM \ WebLvm为自定义resource name
volgrpname=vghttp \ vghttp为真实的vg名
exclusive=true
--group WebGroup 将此资源添加到WebGroup资源组
3.apache配置
(1)各节点
yum -y install httpd wget 【注意:http不可这时启动】
============================================
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
============================================
可将更改后的文件发送到各节点
4.创建文件系统资源
pcs resource create WebFs ocf:heartbeat:Filesystem \
device="/dev/vghttp/lvhttp" \ 指定块设备设备
directory="/var/www/html" \ 指定挂载文件
fstype="xfs" \ 指定格式
--group WebGroup 指定资源组
5.创建apache资源
pcs resource create Website apache \
configfile="/etc/httpd/conf/httpd.conf" \ 指定配置文件
statusurl="http://127.0.0.1/server-status" \ 指定监视url
--group WebGroup 指定资源组
四、测试
关闭资源所在节点,资源移动