5在集群上部署iscsi
给服务端redhat4配置一个iscsi共享
加一个磁盘
不要选现在分配所有磁盘空间哦。添加后会出现一个vdb
给新添加的磁盘创建分区
大小1G 类型8e
做一个iscsi共享磁盘,并启动iscsi target服务
服务端[[email protected] yum.repos.d]# yum install -y scsi*
[[email protected] yum.repos.d]# /etc/init.d/tgtd start
[[email protected] yum.repos.d]# vim /etc/tgt/targets.conf
36 # Sample target with one LUN only. Defaults to allow access for all initiators:
37
38 <target iqn.2016-10.com.example:server.share>
39 backing-store /dev/vda
40 initiator-address 172.25.38.10
41 initiator-address 172.25.38.11
42 </target>
43 用下面命令查看配置是否正确
[[email protected] yum.repos.d]# /etc/init.d/tgtd restart
客户端(redhat5,6,7)发现并连接服务端的共享设备
客户端 yum install iscsi* -y
[[email protected] ~]# iscsiadm -m discovery -t sendtargets -p 172.25.38.9
[[email protected] ~]# iscsiadm -m node -l
[[email protected] ~]# fdisk -l
用服务端共享出来的sda做一个分区(仅在redhat5上做)
使lvm支持集群
实际上是使:这里面的
用服务端共享出来的磁盘创建一个lvm(仅在redhat5上做)
[[email protected] yum.repos.d]# pvcreate /dev/vda
Physical volume "/dev/vda" successfully created
[[email protected] yum.repos.d]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_server lvm2 a-- 7.51g 0
/dev/vda lvm2 a-- 4.00g 4.00g
[[email protected] yum.repos.d]# vgcreate luu
Please enter a physical volume path
Run `vgcreate --help‘ for more information.
[[email protected] yum.repos.d]# vgcreate luu /dev/vda
Volume group "luu" successfully created
[[email protected] yum.repos.d]# vgs
VG #PV #LV #SN Attr VSize VFree
luu 1 0 0 wz--n- 4.00g 4.00g
vg_server 1 2 0 wz--n- 7.51g 0
[[email protected] yum.repos.d]# lvcreate -l +1023 -n luuu luu
Logical volume "luuu" created
[[email protected] yum.repos.d]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
luuu luu -wi-a----- 4.00g
lv_root vg_server -wi-ao---- 6.71g
lv_swap vg_server -wi-ao---- 816.00m
[[email protected] yum.repos.d]# mkfs.ext4 /dev/luu/luuu
给之前的www服务添加文件系统
在任何一个加入www服务的节点上,停止www服务:
redhat2 和 redhat3 redhat4上运行了www所以,在任何一台机子上停止这个服务都行。
添加文件系统资源:
把文件系统资源添加到资源组中,也就是添加到刚才的服务中:
添加顺序是IP ADDRESS,
Filesystem ,
Script (httpd)
然后重启www服务,/dev/vgbai/lvbai 会被自动挂载到www服务正在运行的那个节点的/var/www/html上:
装了iscsi服务话,开机时一定要先启动服务端。不然客户端会一直尝试挂载远程的nfs...
上面是在selinux关了的情况下做的,很容易就把redhat1(luci端的)的/dev/vgbai/lvbai 挂载到了/var/www/html下。
如果是在selinux开着的情况下:
把www服务的文件系统换成gfs2
1.先释放以前的文件系统资源
① 停止服务:
在任意一个集群中的节点执行上面命令都行。
在Resource Groups里面把www和nfs服务的Filesystem资源都删了,然后提交
注意:要保证任何一个虚拟机的工作目录都没有在Filesystem资源的目录里面,就跟umount使要保证挂载点没有正在忙一样。
在Resource里面把文件系统资源也删除
1.创建gfs文件系统
② 把设备格式化成gfs2
ls /dev/vgbai/lvbai这一步在redhat2 3 4任何一个节点上执行都行。
-j 指定日志的份数,一般为节点数量+1
-J 指定每份日志的大小
可以看到J设置成功了
-p 锁协议名称
在redhat 2 3 4 上用blkid看到的 UUID都是一样的。
mount一下看看能否挂载:
可以看到文件系统的形式是 gfs2
顺便来创建一个文件吧:
在redhat2 redhat3 redhat4上设置开机自动挂载
扩展GFS的容量
1.扩展lv的容量
就是前面那个格式化为gfs2的lv,从500M扩展成了700M
其他节点会立马同步的:
1.扩展gfs2文件系统的容量,并增加日志数量
开始时总是报这个错误:
仔细读后,发现,gfs2扩展时,最少扩展249M. 而我只增加了200M的LVM来供他扩展。
其他虚拟机上是自动同步的,不用人工干预:
后拉添加的日志,默认是128M 6个日志公占了460多M 的空间。
后拉添加的日志,默认是128M 6个日志公占了460多M 的空间
如果gfs2down了,如何恢复里面的数据
1.停掉所有的服务:
现在运行着的服务有www
停掉这个服务:
然后leave cluster 然后delete
关闭必要的服务
[[email protected] ~]# /etc/init.d/modclusterd status
modclusterd (pid 1657) is running...
[[email protected] ~]# /etc/init.d/modclusterd stop
Shutting down Cluster Module - cluster monitor: [ OK ]
[[email protected] ~]# chkconfig modclusterd off
[[email protected] ~]# /etc/init.d/rgmanager status
rgmanager is stopped
[[email protected] ~]# chkconfig rgmanager off
[[email protected] ~]# lvs
Skipping clustered volume group vgbai
Skipping volume group vgbai
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg_foundation112 -wi-ao---- 6.71g
lv_swap vg_foundation112 -wi-ao---- 816.00m
[[email protected] ~]# lvm --disable-cluster
No such command. Try ‘help‘.
[[email protected] ~]# lvmconf --disable-cluster
[[email protected] ~]# /etc/init.d/clvmd reload
[[email protected] ~]# lvs
Skipping clustered volume group vgbai
Skipping volume group vgbai
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg_foundation112 -wi-ao---- 6.71g
lv_swap vg_foundation112 -wi-ao---- 816.00m
[[email protected] ~]# /etc/init.d/iscsi stop
Stopping iscsi: [ OK ]
[[email protected] ~]# iscsiadm -m node -o delete
[[email protected] ~]# chkconfig iscsi off
至此,集群就全部删除了
1.恢复数据:
之前已经把数据备份了。
现在再挂载然后恢复就好了。
[[email protected] ~]# mount -t gfs2 -o loop,lockproto=lock_nolock gfs2bai.img /mnt
[[email protected] ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_foundation112-lv_root 6926264 1821952 4752468 28% /
tmpfs 375032 0 375032 0% /dev/shm
/dev/vda1 495844 33455 436789 8% /boot
/dev/loop0 767824 474200 293624 62% /mnt
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ls
index.html
[[email protected] mnt]# cat index.html
this is gfs2 filesystem <看,这就是我的数据>
HEARTBEAT心跳
本部分只用两个虚拟机就好了,redhat1 redhat2 和之前做的所有工作都没有关系了。是一个全新的知识。
如果两个主机上都有http服务,在这两个主机只见建立heartbeat的话。那如果一个机子的http down掉的话,heatbeat会自动把服务迁移到另外一台主机上。
但是heatbeat 不会把down掉的主机重启,也不会,,,,(忘了),比cman的功能要弱很多。
要保证火墙是关的,selinux 是关的
1.在redhat1 redhat2上装包
把selinux 关掉
1.配置
[[email protected] ~]# cd /etc/ha.d/
[[email protected] ha.d]# ls
harc rc.d README.config resource.d shellfuncs
[[email protected] ha.d]# rpm -q heartbeat -d
/usr/share/doc/heartbeat-3.0.4/AUTHORS
/usr/share/doc/heartbeat-3.0.4/COPYING
/usr/share/doc/heartbeat-3.0.4/COPYING.LGPL
/usr/share/doc/heartbeat-3.0.4/ChangeLog
/usr/share/doc/heartbeat-3.0.4/README
/usr/share/doc/heartbeat-3.0.4/apphbd.cf
/usr/share/doc/heartbeat-3.0.4/authkeys
/usr/share/doc/heartbeat-3.0.4/ha.cf
/usr/share/doc/heartbeat-3.0.4/haresources
/usr/share/man/man1/cl_status.1.gz
/usr/share/man/man1/hb_addnode.1.gz
/usr/share/man/man1/hb_delnode.1.gz
/usr/share/man/man1/hb_standby.1.gz
/usr/share/man/man1/hb_takeover.1.gz
/usr/share/man/man5/authkeys.5.gz
/usr/share/man/man5/ha.cf.5.gz
/usr/share/man/man8/apphbd.8.gz
/usr/share/man/man8/heartbeat.8.gz
[[email protected] ha.d]# ls
harc rc.d README.config resource.d shellfuncs
[[email protected] ha.d]# cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
[[email protected] ha.d]# cat ha.cf | grep -v ^#
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth0 # Linux
auto_failback on
watchdog /dev/watchdog
node redhat1.example.com 《主节点》
node redhat2.example.com 《从节点》
ping 172.25.11.254 《自己的网关地址》
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
[[email protected] ha.d]# cat authkeys | grep -v ^#
auth 1
1 crc
[[email protected] ha.d]# cat haresources | grep -v ^#
redhat1.example.com IPaddr::172.25.11.100/24/eth0 httpd
《这里是一个浮动IP 就是ping 不通的IP,没人用的》
[[email protected] ha.d]# modprobe softdog
以上配置两台节点都是一样一样的。直接copy过去就行。
1.实验结果:
可以直接在浏览器里面访问了。redhat1坏了之后,rehat2会顶上