首页 > 代码库 > 集群续1

集群续1

5在集群上部署iscsi

给服务端redhat4配置一个iscsi共享

加一个磁盘

技术分享

不要选现在分配所有磁盘空间哦。添加后会出现一个vdb

给新添加的磁盘创建分区

技术分享

大小1G 类型8e

技术分享

做一个iscsi共享磁盘,并启动iscsi target服务

技术分享

技术分享

服务端[root@server9 yum.repos.d]# yum install -y scsi*

[root@server9 yum.repos.d]# /etc/init.d/tgtd start

[root@server9 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 用下面命令查看配置是否正确

技术分享

[root@server9 yum.repos.d]# /etc/init.d/tgtd restart

客户端(redhat5,6,7)发现并连接服务端的共享设备

客户端 yum install iscsi* -y

[root@server10 ~]# iscsiadm -m discovery -t sendtargets -p 172.25.38.9

[root@server10 ~]# iscsiadm -m node -l

[root@server10 ~]# fdisk -l

用服务端共享出来的sda做一个分区(仅在redhat5上做)

技术分享

技术分享

使lvm支持集群

技术分享

实际上是使:技术分享这里面的技术分享

用服务端共享出来的磁盘创建一个lvm(仅在redhat5上做)

[root@server8 yum.repos.d]# pvcreate /dev/vda

Physical volume "/dev/vda" successfully created

[root@server8 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

[root@server8 yum.repos.d]# vgcreate luu

Please enter a physical volume path

Run `vgcreate --help‘ for more information.

[root@server8 yum.repos.d]# vgcreate luu /dev/vda

Volume group "luu" successfully created

[root@server8 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

[root@server8 yum.repos.d]# lvcreate -l +1023 -n luuu luu

Logical volume "luuu" created

[root@server8 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

[root@server8 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

技术分享

关闭必要的服务

[root@redhat2 ~]# /etc/init.d/modclusterd status

modclusterd (pid 1657) is running...

[root@redhat2 ~]# /etc/init.d/modclusterd stop

Shutting down Cluster Module - cluster monitor: [ OK ]

[root@redhat2 ~]# chkconfig modclusterd off

[root@redhat2 ~]# /etc/init.d/rgmanager status

rgmanager is stopped

[root@redhat2 ~]# chkconfig rgmanager off

[root@redhat2 ~]# 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

[root@redhat2 ~]# lvm --disable-cluster

No such command. Try ‘help‘.

[root@redhat2 ~]# lvmconf --disable-cluster

[root@redhat2 ~]# /etc/init.d/clvmd reload

[root@redhat2 ~]# 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

[root@redhat2 ~]# /etc/init.d/iscsi stop

Stopping iscsi: [ OK ]

[root@redhat2 ~]# iscsiadm -m node -o delete

[root@redhat2 ~]# chkconfig iscsi off

至此,集群就全部删除了

1.恢复数据:

技术分享

之前已经把数据备份了。

现在再挂载然后恢复就好了。

[root@redhat2 ~]# mount -t gfs2 -o loop,lockproto=lock_nolock gfs2bai.img /mnt

[root@redhat2 ~]# 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

[root@redhat2 ~]# cd /mnt/

[root@redhat2 mnt]# ls

index.html

[root@redhat2 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.配置

[root@redhat1 ~]# cd /etc/ha.d/

[root@redhat1 ha.d]# ls

harc rc.d README.config resource.d shellfuncs

[root@redhat1 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

[root@redhat1 ha.d]# ls

harc rc.d README.config resource.d shellfuncs

[root@redhat1 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/

[root@redhat1 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

[root@redhat1 ha.d]# cat authkeys | grep -v ^#

auth 1

1 crc

[root@redhat1 ha.d]# cat haresources | grep -v ^#

redhat1.example.com IPaddr::172.25.11.100/24/eth0 httpd

《这里是一个浮动IP 就是ping 不通的IP,没人用的》

[root@redhat1 ha.d]# modprobe softdog

以上配置两台节点都是一样一样的。直接copy过去就行。

1.实验结果:

技术分享

可以直接在浏览器里面访问了。redhat1坏了之后,rehat2会顶上

集群续1