#区别kvm qemu libvirtd virt-manager virsh
#kvm : 底层虚拟化
#qemu : 用来虚拟化外围设备的,如IO设备(top命令可以看到虚拟机的进程都是qemu-kvm)
#libvirtd : 虚拟化接口,用来管理底层虚拟化的(down掉不影响虚拟机工作,只是virt-manager看不到虚拟机)
####rhcs套件(红帽的高可用)####
1.开2台虚拟机,配置yum源,添加高可用,负载均衡,存储,文件系统(后面给HA添加存储等)
#关闭firewalld和selinux
#各个主机上添加本地解析
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.0.250/rhel6.5/x86_64/dvd/ScalableFileSystem
gpgcheck=0
2.在所有HA节点上安装ricci,这里用server2同时做管理节点和HA节点
#luci是web界面的管理工具
1)server2:
yum install -y ricci luci
2)server5:
yum install -y ricci
3)安装完后会产生ricci用户,给ricci用户设置密码:redhat
passwd ricci
4)两节点开启ricci,luci并设置开机启动
/etc/init.d/ricci start
/etc/init.d/luci start
chkconfig ricci on
chkconfig luci on
5)登陆
https://172.25.0.2:8084
root
redhat
添加server2,server5到集群 ##注意解析问题
6)查看是否添加成功
cat /etc/cluster/cluster.conf
#查看集群状态
[root@server2 ~]# clustat
Cluster Status for westos_ha @ Sat Nov 17 11:00:01 2018
Member Status: Quorate
Member Name ID Status
server2 1 Online, Local
server5 2 Online
#########################################################
cman分布式集群管理器
rgmanager资源代理,负责资源接管
modclusterd集群状态监控
clvmd集群化逻辑卷,共享存储
##########################################################
7)添加fence
Fence Device --> Add --> Fence virt(Multicast Mode) --> vmfence
8)安装fence软件包(在物理机上)
yum search fence
fence-virtd.x86_64
fence-virtd-libvirt.x86_64
fence-virtd-multicast.x86_64
9)配置fence
fence_virtd -c # vim /etc/fence_virt.conf 可查看配置文件
Interface [virbr0]: br0##设备选择br0,其他用默认
#生成fence_xvm.key
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
10)把fence_xvm.key分发到HA节点,通过这个key来管理节点
scp fence_xvm.key root@server2:/etc/cluster/
scp fence_xvm.key root@server5:/etc/cluster/
11)web界面为节点配置fence
Node --> server2 --> Add Fence Method --> vmfence-1 --> Add Fence Instance -->vmfence(xvm Virtual Machine Fencing) --> Domain(填写server2的UUID)
server5同上
12)启动fence并测试
systemctl start fence_virtd.service
[root@server2 cluster]# fence_node server5##server5被重启
fence server5 success
##netstat -antulp | grep 1229##udp 1229端口
13)添加失败回切和优先级
Failover --> Add --> webfail --> Prioritized(对服务故障转移到的节点进行排序) --> Restricted(服务只能在指定的节点上运行) --> No Failback(当服务再次可用时,不要将其发送回优先级为1的节点)(此选项选中,failover的主机在再次正常时会按优先级大小回切,否则不会)
#server2优先级为1,server5优先级为10,数字越小,优先级越高
14)添加vip资源
#Resources --> Add --> IP Address
172.25.0.100
24
Monitor Link(选中) 监控链接
Number of … 5 删除IP地址后休眠的秒数
#再添加服务
#Resources --> Add --> Script
Name : httpd
Full Path to Script File : /etc/init.d/httpd
两个节点都安装并启动httpd,写默认发布页面
15)添加服务组到集群
Service Groups --> Add
Service Name : apache
Automatically Start This Service : 选中 自动启动此服务
Run Exclusive : 运行独占(先选中)
Failover Domain : webfail
Recovery Policy 恢复策略 回复政策 修复原则
relocate
n. 浮动vt. 重新安置;迁移vi. 重新安置;迁移新址
#然后添加资源
Add Resource --> 172.25.0.100/24 --> Script ##添加IP和启动脚本
3.测试访问
172.25.0.100#默认访问到server2
4.使server2脑裂,测试fence
echo c > /proc/sysrq-trigger
fence成功,脑裂之后server2自动重启,启动之后httpd又恢复到server2提供服务,因为没有选择 No Failback
5.给集群附加存储设备
#1.再开一台虚拟机用来作iscsi共享存储,server3
server3上安装服务端:
yum install -y scsi-*
HA节点上安装客户端:
yum install -y iscsi-*
#2.配置存储
server3上:
vim /etc/tgt/targets.conf
38
启动:
/etc/init.d/tgtd start
tgt-admin -s##查看存储信息
ps ax##看到有2个tgtd进程(此处学生有问题先看进程,如果有4个,就是错误的)
在HA节点上发现共享存储:
[root@server2 ~]# iscsiadm -m discovery -t st -p 172.25.0.3
Starting iscsid: [ OK ]
172.25.0.3:3260,1 iqn.2018-11.com.example:server.target1
[root@server2 ~]# iscsiadm -m node -l##挂载存储
fdisk -cu /dev/sdb##只分一个区,方便在分区表被破坏的时候恢复
存储分享 iscsi:
集群管理机:
yum install scsi-target-utils.x86_64 0:1.0.24-10.el6 -y
vim /etc/tgt/targets.conf
vim /etc/lvm/lvm.conf
462 locking_type = 3
[root@server2 html]# /etc/init.d/clvmd status
clvmd (pid 1235) is running…
Clustered Volume Groups: cluster_vg
Active clustered Logical Volumes: demo
//ext4是本地文件系统(不能同布)//
挂载:
前提:/etc/init.d/clvmd status (is running)
locking_type = 3
1.两台集群虚拟机
dd2:
pvcreate /dev/sdb1
vgcreate dangdang /dev/sdb1
lvcreate -L 4G -n dd dangdang
dd3:
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 19.51g 0
/dev/sdb1 lvm2 a-- 8.00g 8.00g
vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz–n- 19.51g 0
dangdang 1 0 0 wz–nc 8.00g 8.00g
lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 18.54g
lv_swap VolGroup -wi-ao---- 992.00m
dd dangdang -wi-a----- 4.00g
dd2:
mkfs.ext4 /dev/dangdang/dd
mount /dev/dangdang/dd /mnt (两台虚拟机同时挂载 eg:其中一台 在/mnt 里面cp /etc/passwd 如不卸载再挂载 则另一台机器上看不到 因为 ext4是本地文件系统(不能同步 (不支持同时写入)))
cd /mnt
vim index.html
umount /dev/dangdang/dd
图形化操作:先加存储 再加服务
设备、FS标签或UUID Device, FS Label, or UUID
力卸载 Force Unmount
使用快速状态检查 Use Quick Status Checks
如果卸载失败,则重新引导主机节点 Reboot Host Node if Unmount Fails
// clusvcadm -d apache (是关闭apache服务 两台机器上都没有这个服务了 告诉集群 我不用这个服务了 是集群的命令 与载web界面上操作是一样的)
clusvcadm -r apache -m dd3.example.com (把服务转移到dd3.example.com)
/etc/init.d/httpd stop (停掉虚拟机上的服务 测试用 系统停掉服务)
多节点同时挂载写入(gfs2:共享文件系统)
mkfs.gfs2 -p lock_dlm -j 2 -t westos_ha:mygfs2 /dev/dangdang/dd
kfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:
2
-b BlockSize:指定文件系统块大小,最小为512,默认为4096;
-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;
-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;
-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;
-t LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群文件系统;此外,同一个集群内,每个文件系统的名称必须惟一;
测试:dd2: mount /dev/dangdang/dd /mnt
cd /mnt
cp /etc/passwd
dd3: mount /dev/dangdang/dd /mnt
3.vim /etc/fstab (两台都做)
/dev/dangdang/dd /var/www/html gfs2 _netdev(网络设备) 0 0
mount -a
删除管理网页 Service Group 里面的filesystem 再删除 Resources里面的 webdate
4.clusvcadm -e apache
挂载跟着服务走 不用自己挂载 服务也不用自己开
gfs2_tool sb /dev/dangdang/dd all
gfs2_tool journals /dev/dangdang/dd (有几个挂载点就有几份日志)
gfs2_jadd -j 3 /dev/dangdang/dd
支持扩大,也支持缩减,但缩减有风险 (底层是lvm)
lvextend -L +1G /dev/dangdang/dd (扩大磁盘空间)
gfs2_grow /dev/dangdang/dd (扩大文件系统)
9.表名必须和集群名一样 (不是一个名字挂载不上去)
mkfs.gfs2 -p lock_dlm -j 3 -t westos_dd:mygfs2 /dev/dangdang/dd
gfs2_tool sb /dev/dangdang/dd table 集群名:mygfs2
#演示
dd if=/dev/sdb of=mbr bs=512 count=1##备份mbr
dd if=/dev/zero of=/dev/sdb bs=512 count=1##破坏mbr
‘dd命令不经过文件系统,是从底层设备(bios)直接写入’
重启之后,/proc/partitions下看不到刚分的sdb1
mount /dev/sdb /mnt##挂载会报错,因为分区表没了
dd if=mbr of=/dev/sdb##恢复mbr
fdisk -cu /dev/sdb##进去之后,再w保存退出,就可以正常挂载,也可以看到之前保存的内容
‘也可以不分区,这样就没有分区表,也不用担心这个问题,删除/dev/sdb1,不分区做后面的实验’
#iscsi只能单点写入,不然数据不同步
6.附加后端数据库
#两个HA节点都安装数据库
yum install -y mysql-server
mount /dev/sdb /var/lib/mysql##把mysql的数据存放在共享设备上
chown mysql.mysql /var/lib/mysql##让mysql对这个目录可写
umount /var/lib/mysql
7.在web上添加数据库和后端存储
1)disabled掉apache,取消运行独占
2)添加Resource
#1.File System
dbdata
ext4
/var/lib/mysql
/dev/sdb
Force Umount
Use Quick Status Checks
Reboot Host Node if Unmount Fails
#2.Script
mysqld
/etc/init.d/mysqld
#3.IP Address
172.25.0.200
24
3)添加Failover Domain
dbfail
Prioritized
Restricted
server2 : 优先级 10
server5 : 优先级 1
4)添加Service Groups
Add
Service Name : sql
Automatically Start This Service
Failover Domain : dbfail
Add Resource:
Filesystem --> IP Address --> Script
#命令方式启动apache
[root@server5 ~]# clusvcadm -e apache
Local machine trying to enable service:apache…Success
service:apache is now running on server5