HA
实验环境
server1 172.25.23.1 ricci ( 集群配置 ) 客户端
server2 172.25.23.2 ricci 客户端
server3 172.25.23.3 luci ( 管理集群 ) 服务端
注意 iptables selinux 关掉
三台机器全部加上解析
Rhel6.5
###############################################
一安装软件
1.配置yum源 server1 server2 server3
[root@server1 ~]# cat /etc/yum.repos.d/rhel-source.repo
[Server]
name=localserver
baseurl=http://172.25.23.23/rhel
gpgcheck=0
[HighAvailability]------ 高可用
name=localserver
baseurl=http://172.25.23.23/rhel/HighAvailability
gpgcheck=0
[LoadBalancer]------ 负载均衡
name=localserver
baseurl=http://172.25.23.23/rhel/LoadBalancer
gpgcheck=0
[ResilientStorage]------ 存储
name=localserver
baseurl=http://172.25.23.23/rhel/ResilientStorage
gpgcheck=0
[ScalableFileSystem]------ 大型文件系统
name=localserver
baseurl=http://172.25.23.23/rhel/ScalableFileSystem
gpgcheck=0
[root@server1 ~]# yum repolist ----- 列出可用的包
--> 可查看到有3819可用
2.安装软件
server1 server2
[root@server1 ~]# yum list ricci
[root@server1 ~]# yum install ricci -y
[root@server1 ~]# chkconfig ricci on
[root@server1 ~]# id ricci
[root@server1 ~]# echo westos | passwd --stdin ricci
[root@server1 ~]# /etc/init.d/ricci start
server3
[root@server3 ~]# yum install luci -y
[root@server3 ~]# /etc/init.d/luci start
二创建集群
1.在浏览器中打开 https://172.25.23.3:8084
密码为172.25.23.3的密码
2.创建集群
集群名字不可超过15个字符其他选项如图所示
3.创建成功后会生成相应的配置文件/etc/cluster/cluster.conf
三创建fense
1.fence_xvm.key
在物理机上(物理机中有虚拟机管理器物理机控制虚拟机可以让虚拟机强制断电有force off , shutdown ...)
[root@foundation23 ~]# yum search fence
[root@foundation23 ~]# yum install fence-virtd-libvirt.x86_64 -y
[root@foundation23 ~]# yum install fence-virtd.x86_64 -y
[root@foundation23 ~]# yum install fence-virtd-multicast.x86_64 -y
[root@foundation23 ~]# systemctl start fence_virtd
[root@foundation23 ~]# netstat -antlpe | grep fence_virtd
# 查不到因为fence_virtd是udp通信
[root@foundation23 ~]# netstat -anulpe | grep fence_virtd
# 可看到端口是1229
[root@foundation23 ~]# fence_virtd -c (主要修改br0)
Module search path [/usr/lib64/fence-virt] ...
Listener module [multicast]...
Multicast IP Address [225.0.0.12]...
Multicast IP Port [1229]...
Interface [br0]
Key File [/etc/cluster/fence_xvm.key]
Backend module [libvirt]
Replace /etc/fence_virt.conf with the above [y/N]? y
[root@foundation23 ~]# mkdir -p /etc/cluster
[root@foundation23~]# dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
# fence_xvm.key是截取的不是自动生成
[root@foundation23 ~]# scp fence_xvm.key [email protected]:/etc/cluster/
[root@foundation23 ~]# scp fence_xvm.key [email protected]:/etc/cluster/
[root@foundation23 ~]# systemctl restart fence_virtd.service
2.在浏览器中打开图形界面https://172.25.23.3:8084
(1) Fence Devices -> Add -> Fence virt (Multicast Mode) -> Name=vmfence
Fence类型虚拟型fence
(2) 做映射
Domain 可以是base1也可以是base1的UUIDUUID唯一性最好
(3) server2同上
3.测试
[root@server1 ~]# clustat
[root@server1 ~]# fence_node server2.example.com
# 杀死server2即断电重启
[root@server1 ~]# clustat
# server2启动之后恢复正常再次加入到集群中
四添加http服务
1.server1 server2
[root@server1 ~]# yum install httpd -y
2.server3的图形界面
(1) 添加Failover Domains
Restricted:是否在失败转移域成员中启用服务故障切换限制
No failback:主节点故障备节点会自动接管相关业务当主节点恢复正常不恢复到主节点
(2) 添加Resources
IP设为未使用 (未被占用) 的IP ,VIP
(3) 添加Service Groups
Add Resource 先加IP再加httpd ( 加的顺序就是启动的顺序 )
3.测试 访问 172.25.23.100
(1) 会先访问server1的 (优先级高 ) server1的服务挂掉之后 会自动访问 server2 , 并且系统会将server1的httpd 重启将server1再次加入集群
/etc/init.d/httpd stop
Server1的服务挂掉可以是 /etc/init.d/httpd stop, /etc/init.d/network stop ......
(2)
[root@server1 ~]# clusvcadm -r apache -m server2.example.com
将httpd服务转移到server2
(3)
server1 echo c > /proc/sysrq-trigger ------ 使内核崩掉
server1 崩掉后fence机制force重启
五存储分离 部署iscsci
server3 中 建立存储分离的服务端
server 1 , server2 中为存储分离的客户端
1.server3
(1) 先新建一个新的磁盘
(2) 新的磁盘创建分区
[root@server3 ~]# fdisk /dev/vda
....
[root@server3 ~]# partx -d /dev/vda
[root@server3 ~]# partx -a /dev/vda
(3) 分享出新的分区
[root@server3 ~]# yum install scsi-target-utils.x86_64 -y
[root@server3 ~]# vim /etc/tgt/targets.conf
....
backing-store /dev/vda1
initiator-address 172.25.23.1
initiator-address 172.25.23.2
....
[root@server3 ~]# /etc/init.d/tgtd start
[root@server3 ~]# tgt-admin -s 查看是否配置好
2. server1 server2连接共享设备
[root@server1 ~]# yum install iscsi-* -y
[root@server1 ~]# iscsiadm -m discovery -t st -p 172.25.23.3
[root@server1 ~]# iscsiadm -m node -l
# server2同时进行
[root@server1 ~]# fdisk -l
[root@server1 ~]# fdisk /dev/sdb
.... ( 注意修改标签为8e )
[root@server1 ~]# cat /proc/partitions
[root@server1 ~]# partprobe
[root@server1 ~]# pvcreate /dev/sdb1
[root@server1 ~]# vgcreate clustervg /dev/sdb1
[root@server1 ~]# lvcreate -L 2G -n data1 clustervg
[root@server1 ~]# mkfs.ext4 /dev/clustervg/data1
3.将新建的加入到集群中 (先将服务disabled 并且注意先后顺序)
[root@server1 ~]# clusvcadm -d apache
访问https://172.25.23.3:8084
-> 添加resources
-> 修改Service Groups
先加IP Addr 再 Filesystem 最后httpd (scripts)
4.测试
(1) [root@server1 ~]# echo hello > /var/www/html/index.html
(2) 访问172.25.23.100 显示的界面一直是hello。若server1挂掉server2接管 仍为原先的访问界面hello。
5.若建立的集群是关于mysql 服务的则挂载点是mysql的存储目录
cat /etc/my.cnf 查看mysql 的存储目录
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
...
在挂载前先将mysql里面的文件备份一份
六gfs2 文件系统
分布式集群管理同时挂载时 可支持同时读写 拉神扩容
1.停止服务将集群中的Filesystem删除
[root@server1 ~]# clusvcadm -d apache
在Service Groups中将Filesystem remove
2.创建gfs2的文件系统
[root@server1 ~]# mkfs.gfs2 -p lock_dlm -t cluster_wj:mygfs2 -j 3 /dev/clustervg/data1
-j 指定日志的份数一般为节点数量+1
-p锁协议名
-t 集群名
[root@server1 ~]# gfs2_tool sb /dev/clustervg/data1 all
[root@server1 ~]# mount /dev/clustervg/data1 /mnt
[root@server2 ~]# mount /dev/clustervg/data1 /mnt
# 在/mnt里面修改数据两边会同步
[root@server1 ~]# gfs2_tool journals /dev/clustervg/data1
[root@server1 ~]# df -h
[root@server1 ~]# blkid
[root@server1 ~]# vim /etc/fstab
注意若是mysql服务则在挂载后需要
chown mysql.mysql /var/lib/mysql/
[root@server1 ~]# clustat
[root@server1 ~]# clusvcadm -e mysql
3.扩展gfs2的容量
[root@server1 ~]# lvextend -L +2G /dev/clustervg/data1
# 有可能容量不够可以减小扩展的容量
[root@server1 ~]# gfs2_grow /dev/clustervg/data1
# 同步
4.增加日志数量
[root@server1 ~]# gfs2_jadd -j 3 /dev/clustervg/data1
七集群的删除
1.停止相关服务
clusvcadm -d httpd #停止服务
2.如果有挂载还要先卸载相应的挂载
如umount /mnt编辑/etc/fstab的挂载项
3.删除
(1)如上选中全部节点点击Leave Cluster出现如下界面
(2)然后选中节点点击Delete进行删除
delete主要完成两部分
A.删除主配置文件 /etc/cluster/cluster.conf
B.关闭相应的启动项 cman ramanager clvmd modclusterd
查看所有的相关服务是否全部停止没停的手动停止
只有modclusterd需要手动进行关闭以及停止开机自启动项
4.存储的退出
Ricci节点的主机都需要退出
[root@server1 ~]# iscsiadm -m node -u
[root@server1 ~]# iscsiadm -m node -o delete
[root@server1 ~]# fdisk -l
[root@server1 ~]# /etc/init.d/ricci stop
[root@server1 ~]# chkconfig ricci off