文档章节

集群cluster

小孩66
 小孩66
发布于 2014/07/31 21:57
字数 3098
阅读 43
收藏 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  //查看集群状态









 

© 著作权归作者所有

共有 人打赏支持
小孩66
粉丝 2
博文 31
码字总数 37665
作品 0
西安
架构师
redis-cluster集群的命令

redis cluster命令 集群(cluster) cluster info 打印集群的信息 cluster nodes 列出集群当前已知的所有节点(node),以及这些节点的相关信息 节点(node) cluster meet <ip> <port> 将ip和por......

DemonsI
08/10
0
0
aliyun 搭建redis集群

最近搭阿里云redis集群遇到的坑https://my.oschina.net/u/3647713/blog/1941842到安装目录: cd /usr/local/下载redis: wget http://download.redis.io/releases/redis-4.0.10.tar.gz解压:t......

lovelan1314
09/08
0
0
redis-cluster研究和使用

最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 release出来后,换掉memCache 集群 一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在red...

闪电
2016/08/20
51
0
Redis ​集群迁移工具--Redis-Migrate-Tool

Redis 集群迁移工具,基于redis复制,快速,稳定。 github链接:https://github.com/vipshop/redis-migrate-tool 特点: 快速。 多线程。 基于redis复制。 实时迁移。 迁移过程中,源集群不影...

d_e_e_p_
2016/04/06
8.4K
3
redis cluster 安装部署

redis cluster 依赖环境安装 redis 集群某些功能需要依赖 ruby 运行环境,基于yum进行安装: 安装redis的ruby组件: 提示: 解决办法 重试,发现可以安装成功,之前的 ERROR 变成了 WARNING ...

walle-Liao
2016/05/02
286
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring IOC实现原理

1、BeanDefinition 对依赖翻转模式中管理对象依赖关系的数据抽象 实现依赖翻转功能的核心数据结构 依赖翻转功能都是围绕对BeanDefinition 处理完成的 有了这些BeanDefinition 基础数据结构,...

职业搬砖20年
11分钟前
0
0
Python判断变量的数据类型的两种方法

1、isinstance(变量名,类型) def varargsql(self, sql, *args): if isinstance(args, tuple): self.cursor.execute(sql, args) self.conn.commit() 2、通过与其他已......

fang_faye
12分钟前
0
0
xml 转义特殊字符

XML中共有5个特殊的字符,分别是:&<>“’。如果配置文件中的注入值包括这些特殊字符,就需要进行特别处理。有两种解决方法:其一,采用本例中的特殊标签,将包含特殊字符的字符串封装起来;...

inidcard
13分钟前
0
0
Mysql中哪些sql 不会走索引

1. 索引列参与了计算 SELECT `sname` FROM `stu` WHERE `age`+10=30; 2. 索引使用了函数运算 SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; 3. like SELECT * FROM `houdunwang` W......

ChyiHuang
22分钟前
1
0
nginx 504 Gateway Time-out

打开nginx.config: 参数介绍: #设定http服务器http{include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型#charset utf-8; #默...

lyle_luo
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部