集群cluster
博客专区 > 小孩66 的博客 > 博客详情
集群cluster
小孩66 发表于3年前
集群cluster
  • 发表于 3年前
  • 阅读 31
  • 收藏 0
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

                         集群cluster

rhel6.5+Cman+RGManager+iSCSI+GFS2+cLVM 可扩展的集群共享存储


物理机192.168.2.4为管理端。selinux为disabled,火墙关闭,时间同步
两个虚拟机192.168.2.46和192.168.2.175为客户端,客户端可以有很多,客户端配置相同,火墙关掉,selinux为enforcing,时间要同步

管理端:
lftp i:/pub/gls> get dvd.repo   //下载yum源,把之前的清空
yum install -y luci
/etc/init.d/luci start     //
启动时这里会有一个链接,等虚拟机配置完毕后打开链接即可,这个网页不需要连外网的
加入两台虚拟机的解析,直接ping两台虚拟机的域名ping通即可

客户端:
lftp i:/pub/gls> get dvd.repo   //下载yum源,把之前的清空
yum install -y ricci  //ricci安装后并不成成目录,加入集群后才会生成目录

passwd ricci   //设置密码为westos,必须设置密码,这是系统版本要求
/etc/init.d/ricci start
chkconfig ricci on

浏览器:https://desktop.example.com:8084  //超户身份登录,点击Nodes,create集群,集群名字不要相同
创建集群的时候,写域名的时候一定要有解析,写ip则不需要,选择download packages,因为它会自动安装并更新软件包,选择use..则不会更新软件包;全部勾选。耗费时间比较长

如果创建后节点未能成功开启的解决办法:把集群相关服务全部开启,并设为开机自启动
/etc/cluster/cluster.conf    //集群配置文件,如果有一个集群节点开启成功,把这个文件scp给未成功的节点,并把下面的服务启动
/etc//etc/init.d/cman start   //集群核心通信服务,开启
/etc/init.d/rgmanager start
/etc/init.d/modclusterd  start   //
监控服务
/etc/init.d/clvmd start
/etc/init.d/ricci start     //
监听端口为1409

chkconfig cman on
chkconfig rgmanager on
chkconfig modclusterd on
chkconfig clvmd on  
chkconfig ricci on




(2)安装fence,fence一定在真机上配置


管理端:
rpm -qa |grep fence  //一定要有下列三个服务,没有就安装
fence-virtd-libvirt-0.2.3-15.el6.x86_64
fence-virtd-0.2.3-15.el6.x86_64
fence-virtd-multicast-0.2.3-15.el6.x86_64    //
虚拟化后台,多波方式


fence_virtd -c   //生成fence_xvm.key配置,默认存储路径为/etc/cluster/fence_xvm.key
Interface [none]: br0    //选择br0作为通信接口

Backend module [checkpoint]: libvirt 

/etc/init.d/fence_virtd start

mkdir /etc/cluster/    //
这个目录没有就创建,应该是之前不存在,需要手动创建的目录
cd /etc/cluster/
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1   //
导出/dev/urandom生成128b为1个字节的fence_xvm.key文件

scp fence_xvm.key 192.168.2.46:/etc/cluster/    //把fence_xvm.key文件同步到两个节点中
scp fence_xvm.key 192.168.2.175:/etc/cluster/
netstat -anulp| grep 1229    //udp
协议服务,端口为1229

可以在desktop46虚拟机cd /etc/cluster/--ll查看是否scp成功,应该是成功的


浏览器192.168.2.4:8084或者dektop.example.com:8084
点击Fence Device,再
add
选择
Fence Virt(Multid Mode)
name 为
vmfence

打开虚拟机点击左上方的感叹号

复制vm1的uuid为d13407df-67d9-2887-73b1-5ce308cb20ca

再点击浏览器nodes 点击页面下方的
Add Fence Method
Method Name为
vmfence1

在浏览器找到Add Fence Instance 选择vmfence...这一项

Domain栏把刚上面复制的uuid粘贴下去,ok,这里本来是填虚拟机的名字如vm1,但是名字可能相同,而且找起来也慢,uuid是唯一的,更快,而且不会错,当然uuid和之前的域名要对应起来,不能弄错

再在该页面点击server75.example.com,点击页面下方的Add Fence Mode
Method Name为
vmfence2

再把vm2的uuid为3e19bbb6-d3ef-f81f-013a-176e863ef1ec复制下来


点击Add Fence Instance 选择vmfence...这一项
Domain栏把刚上面复制的uuid粘贴下去,ok

在浏览器上找到Failover Domains然后点击add,name为webfail,Prioritized和Restricted勾选上,desktop46.example.com和server75.example.com都勾选上,并且在后面权限分别写个1,
2

在所有的机器上yum install -y httpd 不需要你开启或关闭,由集群控制


cd /etc/cluster/-->ls->cat cluster.conf

在浏览器上找到Resources,点击add,选择IP Address,选择一个没有被占用的ip如192.168.2.134(ping不通就说明没占用)填写在IP Address栏,Netmask Bits (optional)写24,其他不变

再在Resources添加选择script,Name填写httpd,Full Path to Script File填写/etc/init.d/httpd

在浏览器找到Service Groups点击add,分别填写www,都勾选,选择webfail  //如果www服务启动失败把资源管理器重启
/etc/init.d/rgmanager restart

点击该页下面的add resource选择刚刚上面该写的ip192.168.2.134再点选add resource选择httpd服务,
ok

在虚拟机终端执行
clustat

在两台虚拟机上

都执行cd /var/www/html/-->echo `hostname` < index.html

打开浏览器输入192.168.2.175或者46都会看到显示各自主机名的网页

然后你随机把某一台虚拟机的http服务关掉,再在另一台虚拟机上watch cluster,你会发现有变化,而且在浏览器上输入192.168.2.134会显示服务关掉的网页,在没有显示前注意看虚拟机上监控的变化,需要一点时间变过来。




(3)磁盘信息本地存储,文件同步,先挂载,再卸载,才能在另一服务端查看到
管理端192.168.2.4
客户端:192.168.2.218和
192.168.2.185

管理端:

yum install -y scsi* 
lvcreate -L 3G -n iscsi vol0
lvs  //
查看iscsi磁盘信息

vim /etc/tgt/targets.conf    //加入后重启不会失效
<target iqn.2014-07.com.example:server.target1>
    backing-store /dev/vol0/iscsi
    initiator-address 192.168.2.185
    initiator-address 192.168.2.218
</target>

/etc/init.d/tgtd start
tgt-admin -s
//Backing store path: /dev/vol0/iscsi  
后面显示路径即表示磁盘分享成功


客户端:
yum install -y iscsi*
iscsiadm -m discovery -t st -p 192.168.2.4   //
建立目标,192.168.2.4是管理端ip地址
iscsiadm -m node -l   //使生效
cd /var/lib/iscsi/nodes-->ls  //可以查看到生效后的信息,iscsiadm -m node -o delete删除命令

fdisk -l   //生效之后查看到多了一个磁盘/dev/sda,大小为3g

在某一个客户端如server85执行:

fdisk -cu /dev/sda
n p 1 enter enter p w

在另一个客户端server218上:
fdisk -l    //刚刚在另一个客户端创建的磁盘已经共享,可以再这台主机上查看到相同的磁盘信息/dev/sda1
cat /proc/partitions   //查看不到/dev/sda1,说明并没有真正同步


在server85上:
/etc/init.d/clvmd status   //clvmd是lvm支持集群服务,要把服务开启,一般是开启的


在server218上:
partprobe   //使磁盘真正同步
cat /proc/partitions   //查看内核分区表,看到/dev/sda1,这时磁盘已经真正同步

lvmconf --enable-cluster
vim /etc/lvm/lvm.conf       //
搜索cluster查看到默认locking_type = 3,如果不是改为3
/etc/init.d/clvmd restart
pvs   //扫描


在server85上:
vgcreate -cy clustervg /dev/sda1

在server218上:
pvs-->vgs  //扫描出现/dev/sda2和clustervg

在server85上:

vgdisplay clustervg   //Clustered为yes,支持集群
lvcreate -L 1G -n clusterlv clustervg
mkfs.ext4 /dev/clustervg/clusterlv   //
格式化

mount /dev/clustervg/clusterlv /var/www/html/
ll -dZ /var/www/html/
clusvcadm -s www     //
停掉www服务
df   //查看已经挂载成功

getenforce   //如果为强制,则执行下一步修改权限,若为disabled,则不需要修改权限
restorecon -Rv /var/www/html/-->ll -dZ /var/www/html/

cd /var/www/html/
vim index.html   //
内容为server85.example.com
umount /var/www/html/  //在//var/www/html/目录下是无法卸载的,要到其他目录下卸载


在server218上:
mount /dev/clustervg/clusterlv /var/www/html/
ll -dZ /var/www/html/   //
查看权限是否修改成功
umount /var/www/html/ -->df


浏览器:http://desktop.example.com:8084
点击Resouces,add选择Filesystem,name为webdata,type为ext4,/var/www/html/, /dev/clustervg/clusterlv,1 2 4 5勾选,递交
ok
点击Service Groups,先把httpd服务remove,然后找到下方的Add Resource,选择webdata,,再把httpd服务添加上,就是说把文件系统挂载之后再不apache服务加上去,递交
ok


在server85上:

clusvcadm -e www  //启动www集群服务,也可以在浏览器Service Groups上选择启动服务。clustat可以看到相关状态信息
// clusvcadm -r www -m server218.example.com   服务迁移命令,在server85上迁移至server218上



(4)集群网络存储同步,在一服务端任何操作,在另一服务端均能立即同步
在server85上:
clusvcadm -s www  
//
把集群服务停掉,然后在浏览器上把webdata服务remove删掉,只留下ip和scripts脚本
//把webdata删掉在于这是个ext4的文件系统,而网络存储是gfs2系统

mkfs.gfs2 -p lock_dlm -t oula:mygfs2 -j 3 /dev/clustervg/clusterlv   //-j日志 一般是节点加1份日志,-p 集群锁 -t集群名字
mount /dev/clustervg/clusterlv /var/www/html/

cd /var/www/html/
vim index.html   //
内容写server85.example.com

restorecon -Rv /var/www/html/    //selinux为enforcing时才需要修改权限,为disabled时不需要修改权限

ll -dZ /var/www/html/ 
//
修改权限后是drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ ,
未修改前权限是drwxr-xr-x. root root system_u:object_r:file_t:s0      /var/www/html/


在server218上:

mount /dev/clustervg/clusterlv  /var/www/html/ 
ll -dZ /var/www/html/    //
直接挂载,查看权限和修改后权限后一致说明之前的操作都是正确的

cd /var/www/html/ 
//
在该目录下创建或删除文件,在另一个服务端可以即时同步相应操作,比如创建文件,编辑文件内容等

umount /var/www/html/  //在两个服务端上执行这一步把。/var/www/html/卸载掉,在其他目录下卸载,在/var/www/html/目录卸载不了

blkid     //把uuid序列号复制下来
vim /etc/fstab  //写入如下信息
UUID=b77c412e-3327-6fea-0550-16784a9d7987       /var/www/html   gfs2    _netdev 0 0
//
因为是网络存储文件,所以defaults改为_netdev

mount -a   //挂载测试:再把/dev/mapper/clustervg-clusterlv挂载到/var/www/html上,df查看挂载情况

ll -dZ /var/www/html/   //权限应为drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

clusvcadm -e www  //开启www服务组

clustat  //查看状态

clusvcadm -r www -m server85.example.com
//
更改主节点为server85.example.com,在server85上watch clustat,查看www服务状态变化,ok




(5)gfs2拉伸

在server85上:
gfs2_tool sb /dev/clustervg/clusterlv all
//sb_locktable = oula:mygfs2

gfs2_tool journals /dev/clustervg/clusterlv  //
查看日志文件,如果这步执行不了,再挂载一下mount /dev/clustervg/clusterlv /var/www/html/
lvextend -L +1G /dev/clustervg/clusterlv  //lvextend -l +255 /。。拉伸单位为M时用l,为G时用
L

gfs2_grow /dev/clustervg/clusterlv  //扩展

lvs-->df -h   //查看扩展后的大小,df -h以1024M为1G,df -H以1000M为1G,算法不同

gfs2_jadd -j 2 /dev/clustervg/clusterlv  //新增日志2个,之前是3个,现在加2个就是5个

如果集群坏了,那我们挂载的/var/www/html/目录下所有数据都将丢失,但是原来目录/dev/clustervg/clusterlv/下的数据还是在的,这时候要把它取出来
lftp i:/pub> get gfs2.img  //网络存储格式的磁盘空间,里面有很多数据
gfs2_tool sb gfs2.img all  //sb_locktable = hacluster:mygfs,与之前的不一样

mount -t gfs2 -o loop,lockproto=lock_nolock gfs2.img /mnt/  //可以把/mnt/下内容scp到其他服务器上,把磁盘中数据取出来存储到其他安全服务器中,这样数据就恢复出来了
umount /mnt/   //在其他目录下卸载



(6)
再添加一台虚拟机192.168.2.128,server28.example.com,火墙和selinux刷掉,时间同步,四台主机解析做好
在server218上:scp /etc/yum.repos.d/dvd.repo 192.168.2.128:/etc/yum.repos.d/

在server128上:

yum源配置目录下只有dvd.repo一个配置文件,yum clean all
yum install -y ricci
passwd ricci   //设置密码为
westos
chkconfig ricci on
/etc/init.d/ricci start

浏览器:找到Node,选择add,写入server28.example.com,选择Download..,全部勾选,
ok
      找到Service Groups,勾选www服务
disabled


dektop管理端上:

cd /etc/cluster/
scp fence_xvm.key 192.168.2.128:/etc/cluster/

浏览器:
找到Node,点击server28.example.com,点击下方的Add Fence Method,Method name为fence3,页面跳转后点击Add Fence Instance,选择vmfence..,domain填写虚拟即复制的uuid号3707b03c-f4e8-1f19-ec28-9f38aaba445c,递交,ok;
再点击页面的Failover Domains,点击webfail,勾选server28.example.com,然后权限为2,update..ok;

server28上:

yum install -y httpd
yum install -y iscsi*

在管理端dekstop上:
tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.2.128   //将192.168.2.128临时加入iscsi,重启后将失效
tgt-admin -s   //查看节点192.168.2.128是否添加成功

vim /etc/tgt/targets.conf   //永久生效
initiator-address 192.168.2.128

/etc/init.d/tgtd restart

server28
上:
iscsiadm -m discovery -t st -p 192.168.2.4
iscsiadm  -m node -l

lvmconf --enable-cluster   //
使lvm支持集群
/etc/init.d/clvmd restart
lvs-->vgs  //clustervg
和clusterlv都添加成功

vim /etc/fstab   
UUID=b77c412e-3327-6fea-0550-16784a9d7987       /var/www/html   gfs2    _netdev 0 0

clusvcadm -e www
//
启动www服务,也可以在浏览器上把www服务start  ,如果某个服务端fence不同步,把该服务端fence_xvm -H node2重启即可

clustat  //查看集群状态









 

共有 人打赏支持
粉丝 3
博文 31
码字总数 37665
×
小孩66
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: