RHCS 分布式文件存储
CMAN 管理集群的工具
RGMANAGER 用来监管集群应用
GFS2 全局文件系统第2版
ISCSI 网络存储
clvm 集群逻辑卷
一、环境准备(4台CentOS,3个节点,1个共享存储)
集群环境
(1).分别修改4个主机的名称和hosts文件
hostname node1.zjn.com node2... node3... target...
[root@node1 ~]# vim /etc/hosts
192.168.4.1 node1.zjn.com node1
192.168.4.2 node2.zjn.com node2
192.168.4.3 node3.zjn.com node3
192.168.4.4 target.zjn.com target
scp /etc/hosts target(node2,node3):/etc
(2).配置各节点与跳板机ssh互相免密码验证
node1,node2,node3生成密钥传给target
target生成密钥分别传给node1,node2,node3
ssh-keygen -t rsa
ssh-copy-id target sshtarget
ssh-copy-id node1 ssh node1
(3).配置各节点时间同步
时间服务器:
node1: rpm -q ntp
vim /etc/ntp.conf
注释掉22-25行,添加
server 127.127.1.0 本地时间做标准
fudge 127.127.1.0 stratum 10 等级0-15
restrict 192.168.4.0 mask 255.255.255.0 nomodify notrap
service ntpd start
##ntpq -p 显示当前时间服务器的状态
##ntpstat 查看
其余3个客户端的操作:
vim /etc/ntp.conf
注释掉22-25行,添加
server192.168.4.1
restrict192.168.4.1 nomodify notrap noquery
ntpdate -u 192.168.4.1
service ntpd start
chkconfig ntpd on
或配置完一个客户端后,将/etc/ntp.conf传给另2个客户端
scp /etc/ntp.confnode3(target):/etc
ntpdate -u 192.168.4.1
service ntpd start
chkconfig ntpd on
共享存储机
alias a='for a in {1..3}; do' #设置一个别名,因为每次都得用到时
a ssh node$a 'ntpdate -u 192.168.4.1'; done #各节点都在时间同步
a ssh node$a 'date -s 2016-10-18'; done
a ssh node$a 'iptables -F'; done
a ssh node$a 'setenforce 0'; done
二、iscsi 安装与配置(共享存储机)
yum -y installscsi-target-utils
在各节点上安装initiator
a ssh node$a 'yum -y installiscsi-initiator-utils'; done
上面命令还不如到3个节点分别执行
vim /etc/tgt/targets.conf
<target iqn.2016-10.com.zjn:store.raid> #配置target名称
<backing-store /dev/sdb>#配置共享磁盘
vendor_id oppo #配置发行商(任意)
lun 6 #配置LUN号
</backing-store>
incominguser iscsiuseriscsiuser #配置认证的用户名和密码
initiator-address 192.168.4.0/24#配置允许的网段
</target>
<target iqn.2016-10.com.zjn:store.sdb>
<backing-store/dev/sdb>
vendor_id oppo
lun 6
</backing-store>
incominguser iscsiuseriscsiuser
initiator-address 192.168.4.0/24
</target>
service tgtd start 启动target并设置为开机自启动
chkconfig tgtd on
tgtadm -L iscsi -o show -m target 查看配置的target
配置initiator(同样的操作3个节点都配置)
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2016-10.com.zjn:node1
vim /etc/iscsi/iscsid.conf #修改下面三项 53 57 58
node.session.auth.authmethod = CHAP #开启CHAP认证
node.session.auth.username = iscsiuser #配置认证用户名
node.session.auth.password = iscsiuser #配置认证密码
各节点启动initiator并设置为开机自启动
a ssh node$a 'service iscsi start'; done
a ssh node$a 'chkconfig iscsi on'; done
在各节点上发现一下target;连接
a ssh node$a 'iscsiadm -m discovery -t st -p 192.168.4.4'; done
(st=sendtargets)
各节点登录一下target并查看一下磁盘;挂载
a ssh node$a 'iscsiadm -m node -T iqn.2016-10.com.zjn:store.raid --login';done
a ssh node$a 'fdisk -l'; done 应该能看到共享的/dev/sdb
cman与rgmanager 集群安装与配置
各节点安装cman与rgmanager
a ssh node$a 'yum -y install cman rgmanager'; done
配置集群
创建集群(节点1上操作)
ccs_tool create cluster
添加fencing设备
ccs_tool addfence meatware fence_manual 仲裁
ccs_tool lsfence 查看
配置集群节点
ccs_tool addnode -n 1 -f meatware node1.zjn.com
ccs_tool addnode -n 2 -f meatware node2.zjn.com
ccs_tool addnode -n 3 -f meatware node3.zjn.com
ccs_tool lsnode
vim /etc/cluster/cluster.conf 配置保存在此文件中,看看就行
同步配置文件到各节点
scp /etc/cluster/cluster.conf node2:/etc/cluster/
scp /etc/cluster/cluster.conf node3:/etc/cluster/
4.启动各节点集群
##a ssh node$a ‘service NetworkManager stop’;done
##a ssh node$a ‘chkconfig NetworkManager on’;done
在3个节点分别执行:
echo 'CMAN_QUORUM_TIMEOUT=0' >>/etc/sysconfig/cman
service cman start
四、cLVM 安装与配置
1.安装cLVM
a ssh node$a 'yum -y install lvm2-cluster'; done
2.启用集群LVM
a ssh node$a 'lvmconf --enable-cluster'; done
3.启动服务
a ssh node$a 'service clvmd start'; done
创建集群逻辑卷
node1:
fdisk -l
pvcreate /dev/sdb
vgcreate vg0 /dev/sdb
lvcreate -L 500M -n lv0 vg0
lvs 查看(节点2和3也可以查看到)
##5.将各节点的cman rgmanger clvmd设置为开机自启动
##[root@target ~]# a ssh node$a 'chkconfig clvmd on'; done
##[root@target ~]# a ssh node$a 'chkconfig cman on'; done
##[root@target ~]# a ssh node$a 'chkconfig rgmanager on'; done
生成集群文件系统(gfs)
gfs2 安装与配置
1.安装gfs2
a ssh node$a 'yum -y install gfs2-utils'; done
##2.查看一下帮助文件
##mkfs.gfs2 -h
##注:对于我们用到的参数进行说明
##-j 指定日志区域的个数,有几个就能够被几个节点挂载
##-J 指定日志区域的大小,默认为128MB
##-p {lock_dlm|lock_nolock} 锁,防止多个节点对同一个文件同时操作
##-t <name>: 锁表的名称,格式为clustername:locktablename
3.格式化为集群文件系统
node1:
mkfs.gfs2 -j 3 -p lock_dlm -t cluster:sharedstorage /dev/vg0/lv0
注:cluster是集群名称,sharedstorage为锁表名称
4.创建挂载目录并挂载(可挂载到数据库目录或网站目录,同步)
[root@node1 ~]# mkdir /zjn
[root@node1 ~]# mount -t gfs2 /dev/vg0/lv0 /zjn
[root@node1 ~]# ls /zjn/
5.将node2与node3进行挂载
node2:
[root@node2 ~]# mkdir /zjn
[root@node2 ~]# mount -t gfs2 /dev/vg0/lv0 /zjn
[root@node2 ~]# ls /zjn/
node3:
[root@node3 ~]# mkdir /zjn
[root@node3 ~]# mount -t gfs2 /dev/vg0/lv0 /zjn
Too many nodes mounting filesystem, no free journals
注: node2成功挂载而node3没有功功挂载,Too many nodes mountingfilesystem, no free journals,没有多于的日志空间。因为我们在格式化时只创建了2个日志文件,所以node1与node2可以挂载,而node3无法挂载
六、测试
1.查看是否能快速同步文件
node1:
[root@node1 zjn]# touch 1.txt
在节点2和3上查看