赞
踩
红帽套件集群
HA( 高可用,双机热备,对外只有一个主机,但是两个主机都活着 )
luci: 提供了管理 rhcs 集群的 web 界面, luci 管理集群主要是通过跟 ricci 通信来完成的。
ricci: 安装在集群的节点的接收来自 luci 管理请求的代理
##注意这个luci在生产中是专门有一台服务器的,通常是服务器架或者托管 luci 的数据中心的一台计算机中,但集群计算机也可托管 luci。这里我们为了节省资源,安装在server1上,这不会与server1做nginx服务器冲突
conga --> ricci luci
172.25.28.1 server1
172.25.28.2 server2
172.25.28.3 server3
172.25.28.4 server4
(注意NetworkManger,iptables,selinux都关闭,两个节点的时间服务同步)
1,配置yum源
server1和server4采用红帽套件yum源
- [rhel-source]
-
- name=Red Hat Enterprise Linux $releasever - $basearch - Source
-
- baseurl=http://172.25.28.250/rhel6.5
-
- enabled=1
-
- gpgcheck=1
-
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
-
- [HighAvailability]
-
- name=HighAvailability
-
- baseurl=http://172.25.28.250/rhel6.5/HighAvailability
-
- gpgcheck=0
-
- [LoadBalancer]
-
- name=LoadBalancer
-
- baseurl=http://172.25.28.250/rhel6.5/LoadBalancer
-
- gpgcheck=0
-
- [ResilientStorage]
-
- name=ResilientStorage
-
- baseurl=http://172.25.28.250/rhel6.5/ResilientStorage
-
- gpgcheck=0
-
- [ScalableFileSystem]
-
- name=HighAvailability
-
- baseurl=http://172.25.28.250/rhel6.5/ScalableFileSystem
-
- gpgcheck=0

2,安装软件
server1
yum install ricci luci luci只在一个节点安装
passwd ricci 必须要给ricci创建密码
/etc/init.d/ricci start 启动ricci
chkconfig ricci on 开机自启动ricci
chkconfig luci on 开机自启动luci
/etc/init.d/luci start 启动luci 会给一个地址
Point your web browser to https://server1:8084 (or equivalent) to access luci
date #时间服务器,时间同步
sever4
yum install -y ricci
passwd ricci #创建用户
/etc/init.d/ricci start #启动ricci
chkconfig ricci on #开机启动
date #时间差一两秒没什么关系
server1和server4,本地都做好解析
3,浏览器输入地址
用超级用户登录,普通用户权力受限
4,创建集群
Cluster Name 不要出现数字,不要超过15个字符,不区分大小写
Download Packages 这个是从yum源里面获取,支持自动升级
Enable Shared Storage Support 这个是为了支持共享存储的,为了后面的实验,选上
#######################
ps ax
1370 ? D 0:04 /usr/bin/python /usr/bin/yum -y install cman rgmanager l 这里就是调用了管理员权限,使用yum命令安装
1403 pts/0 R+ 0:00 ps ax
并且此时两个节点都开始重启
5,添加集群节点
[电脑][数据库]失效备援 (为系统备援能力的一种,当系统中其中一项设备失效而无法运作时,另一项设备即可自动接手原失效系统所执行的工作)
failover
Prioritized 权重,哪个做master,哪个做备用机,数字越小,优先级越高,1,2/10/3都行,数字无所谓
Restricted 服务器上只运行此服务
No Failback 不做切换(server1挂了,server4上,server1又好了,server1不抢master地位),这个主要是对性能差不多的服务器来说可以不选,如果server1和server4信能一样,那么就无序切换,切换浪费资源
6,添加资源
vritualip #这个vip之前不能被占用,这个也是对外公网ip
调度哪个nginx服务器,vip就会自动绑到哪个nginx服务器上
Number of Seconds to Sleep After Removing an IP Address
如果server1挂了,切换到server4的启动时间
script #这个脚本是启动服务的nginx的脚本,有可执行权限(注意,如果nginx服务是scp过去的,注意要添加用户,否则会报错,添加软连接
[root@server4 opt]# ln -s /usr/local/nginx/sbin/nginx /sbin/
[root@server4 conf]# nginx
nginx: [emerg] getpwnam("nginx") failed in /usr/local/nginx/conf/nginx.conf:2
[root@server4 conf]# useradd -M -d /usr/local/nginx/ nginx)
server1和server4都必须有
(企业6标准是放在/etc/init.d下,确保这个脚本可以调用,至于原来那个/sbin/nginx是个二进制文件,不是脚本,HA管理平台无法识别)
(脚本可以根据/etc/init.d/httpd 来改写)
注意:所有的资源在添加到管理平台之前先验证自身没有错误
7,把服务组添加到集群
添加资源时注意顺序
IP Address Script
(不要点添加子资源,不用自己再配,直接选中直接配置好的资源)
8,访问测试
启动server2,server3 httpd服务
在客户端做解析
172.25.28.100 www.westos.org
访问域名
为什么要访问域名,这里是nginx配置文件负载均衡的策略
负载均衡和高可用不能混淆,负载均衡是nginx的一个服务,高可用是是管理nginx服务的,是调度nginx服务器
9,高可用测试(这个不一定是nginx服务,其他的也可以)
停掉一个nginx,不影响httpd服务
clustat查看状态
vip也会转移到另一个nginx服务器上面
管理命令
clusvadm -d nginx禁用nginx服务
clusvadm -e nginx 开启nginx服务
nginx服务切换到server4
fence机制,双机热备
真机
安装fence软件
fence-virtd-multicast-0.3.2-5.el7.x86_64
fence-virtd-libvirt-0.3.2-5.el7.x86_64
fence-virtd-0.3.2-5.el7.x86_64
mkdir /etc/cluster
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 随机字符
fence_virtd -c 配置模式 需要把virbr0改为br0
systemctl restart fence_virtd.service
(这里还要设置开机自启动,否则两个节点连接会失败)
netstat -anulp | grep fence_virtd 查看端口号,服务是否启动
把随即字符传给server1,server4
scp fence_xvm.key root@server1:/etc/cluster/
scp fence_xvm.key root@server4:/etc/cluster/
浏览器
1,fence devices
2,nodes
点击server1添加
输入唯一标示符UUID,这是cluster识别节点的方法
server4同上
fence机制测试
[root@server1 cluster]# fence_node server4 使server4断电
fence server4 success
此时server4断电,开始重启
HA的fence测试
server1网络故障,网络停止,server1自动断电,然后重启
[root@server4 ~]# clustat server4接管
service:nginx server4 started
server4内核崩溃(echo c > /proc/sysrq-tigger)server4断电重启,server1接管
clvmd存储机制+mysql
红帽高可用性附加组件在故障切换配置中支持高可用性 LVM 卷(HA-LVM)。这与集群的逻辑卷管理器
(CLVM)启用的 active/active 配置不同,它是 LVM 的一组集群扩展,可让计算机集群管理共享存储。
应根据所部署应用程序或服务的需要使用 CLVM 或 HA-LVM。
如果应用程序是在全局可识别,并已调整为每次同时在多台机器中运行,那就应该使用 CLVM。特别是
如果您集群中一个以上的节点要求访问在活动节点间共享的存储,您就必须使用 CLVM。CLVM 允许用户
在共享存储中配置逻辑卷,方法是配置逻辑卷时锁定对物理存储的访问,并使用集群的锁定服务管理共
享存储。
如果应用程序以最佳的 active/passive(故障切换)配置运行,那么一次只有一个访问该存储的单一节点
是活动的,您就可以使用高可用逻辑卷管理代理(HA-LVM)。
大多数应用程序在 active/passive 配置中运行更佳,因为它们不是设计或者优化以便与其他事务同时运行。
如果逻辑卷是镜像的,那么选择运行一个在集群的逻辑卷中无法识别的应用程序可能导致性能下降。这是因
为集群沟通会消耗这些事务中的逻辑卷。在集群中可识别的应用程序必须可以让获得的性能比集群文件系统
和集群可识别逻辑卷损失的性能多。有些应用程序和工作负载更容易达到此目的。确定集群要求是什么,以
及在 active/active 集群优化时的额外努力是否有益才是在两种 LVM 变体间进行选择的依据。大多数用户将
会从 HA-LVM 中获得最佳 HA 效果。
HA-LVM 和 CLVM 相似,它们都可以防止 LVM 元数据及其逻辑卷崩溃;反之,如果允许多台机器执行互相
可覆盖的更改,则会发生数据和逻辑卷崩溃。HA-LVM 强制限制只能单独激活逻辑卷,即一次只能在一台机
器中激活。这就是说只能使用存储驱动器的本地(非集群)部署。避免这种形式的集群合作可提高性能。
CLVM 没有这些强制限制,用户可以随意在集群的所有机器中激活逻辑卷。这样就强制使用集群可识别存储
驱动器,即允许将集群可识别文件系统和应用程序放在顶层。
可将 HA-LVM 设置为使用两种方法之一达到其强制独家逻辑卷激活的目的。
配置clvmd
1,server2充当共享磁盘服务器,实际生产中应该专门有一个作为共享磁盘服务器
添加一个8G虚拟磁盘
fdisk -l
2,server2安装服务端软件(这和rhel7配置不一样)
yum install -y scsi-*
配置/etc/tgt/targets.conf
# Sample target with one LUN only. Defaults to allow access for all initiators:
<target iqn.2018-08.com.example:server.target1>
backing-store /dev/vdb
initiator-address 172.25.28.1 只有这两个ip才能使用共享设备
initiator-address 172.25.28.4
</target>
# Similar, but we use "direct-store" instead of "backing-store".
/etc/init.d/tgtd start 启动服务
(这里还要设置开机自启动,否则两个节点连接会失败)
tgt-admin -s 查看信息,这个路径是重点Backing store path: /dev/vdb
3,server1,server4安装客户端软件
yum install -y iscsi-*
发现设备
iscsiadm -m discovery -t st -p 172.25.28.2
172.25.28.2:3260,1 iqn.2018-08.com.example:server.target1
登录设备
iscsiadm -m node -l
fdisk -l 出现/dev/sda
4,server1上启动clvmd
这个管理软件只有server1有,只在这上面安装了套件
/etc/init.d/clvmd status
/etc/init.d/clvmd start
5,创建lvm
只需要在一个节点做,另外一个节点会同步但是另外一个节点必须要用pvs,vgs,lvs查看,同步刷新
(这里可以划分分区)
pvcreate /dev/sda 物理卷
vgcreate clustervg /dev/sda 逻辑卷 clustervg是逻辑卷名
lvcreate -L 4G -n demo clustervg 从clustervg中拿出4G创建一个叫做demo的lvm
mkfs.ext4 /dev/clustervg/demo ext4是本地文件系统,必须要格式化
clusvcadm -d nginx 关闭server3,禁用nginx,节约资源(浏览器上面删除nginx脚本和集群)
配置mysql
server1
yum install -y mysql mysql-server
server4
yum install -y mysql-server
以下是手动检查服务是否没问题,server1和server4都尝试一波
servre1
/var/lib/mysql/ #数据库目录,如果没有启动数据库,那么这里面什么都没有
mount /dev/clustervg/demo /var/lib/mysql/
ll -d /var/lib/mysql/ 挂载之后所有者和组发生了改变,都是root
chown mysql.mysql /var/lib/mysql/ 改变所有者和组
/etc/init.d/mysqld start 启动数据库,不要在数据库目录启动,否则看不到数据库文件
/etc/init.d/mysqld stop
umount /var/lib/mysql/
server4
mount /dev/clustervg/demo /var/lib/mysql/
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
umount /var/lib/mysql/
浏览器管理
Filesystem Type ext4文件系统有其局限性
这个脚本不用自己写,/etc/init/下面有
这里的Failover Domain没必要重新配置,之前的配置适用
添加资源注意顺序
VIP-->文件系统-->脚本
两个节点cluster查看
已经挂载在server1上
数据库也可以成功登入
ext4文件系统有缺陷ext4文件系统是本地文件系统,向一个节点写东西时不能立即同步到另一个节点,而且可以会发生脑裂
gfs2文件系统
clusvcadm -d mysqld 也可以在浏览器进行
浏览器删除文件系统(在service group里面点进去集群删除,然后直接删除资源里面的文件系统)
server1和server4都卸载
server1
(lvextend -L +4G /dev/clustervg/demo 扩大设备
Extending logical volume demo to 8.00 GiB
Insufficient free space: 1024 extents needed, but only 1023 available
lvextend -l +1023 /dev/clustervg/demo #1023个PE
server4 lvs刷新
resize2fs /dev/clustervg/demo 扩大文件系统
lvremove /dev/clustervg/demo 删除lvm server4 lvs刷新同步
lvcreate -L 4G -n demo clustervg)不操作
[root@server1 ~]# 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
demo clustervg -wi-a----- 4.00g
修改文件系统
mkfs.gfs2 -j 3 -p lock_dlm -t westos_ha:mygfs /dev/clustervg/demo
-j 日志数,节点数+1
-p 锁文件 (只有数据库开启时才会有,数据库stop就消失)
-t cluster name:任意名
westos_ha就是cluster name
server1和server4都挂载mount /dev/clustervg/demo /var/lib/mysql/
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 2 root root 3864 Aug 3 00:54 /var/lib/mysql/
[root@server1 ~]# chown mysql.mysql /var/lib/mysql/ #挂载之后的权限可能会发生变化
启动数据库服务
开启clusvcadm -e mysqld
[root@server1 mysql]# gfs2_tool sb /dev/clustervg/demo all
mh_magic = 0x01161970
mh_type = 1
mh_format = 100
sb_fs_format = 1801
sb_multihost_format = 1900
sb_bsize = 4096
sb_bsize_shift = 12
no_formal_ino = 2
no_addr = 23
no_formal_ino = 1
no_addr = 22
sb_lockproto = lock_dlm
sb_locktable = westos_ha:mygfs2
uuid = c41672a8-4d2b-6479-12f0-8fbb717aebfd
[root@server1 mysql]# gfs2_tool journals /dev/clustervg/demo
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
[root@server1 mysql]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.2G 17G 7% /
tmpfs 499M 32M 468M 7% /dev/shm
/dev/vda1 485M 33M 427M 8% /boot
/dev/mapper/clustervg-demo 4.0G 410M 3.7G 10% /var/lib/mysql #已经使用了410M大多是日志文件
自动挂载server1,server4
/dev/clustervg/demo /var/lib/mysql gfs2 _netdev 0 0
_netdev:开机过程中先读取此文件再启动网络,但是iscsi需要网络支持,这就造成了矛盾_netdev保证了在启动网络之后再挂载
mount -a 重新读取
[root@server1 mysql]# clustat
Cluster Status for westos_ha @ Fri Aug 3 01:22:01 2018
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1 1 Online, Local, rgmanager
server4 2 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:mysqld server1 started
[root@server1 mysql]# clusvcadm -r mysqld -m server4 #把服务迁移到servre4上
Trying to relocate service:mysqld to server4...Success
service:mysqld is now running on server4
[root@server1 mysql]# clustat
Cluster Status for westos_ha @ Fri Aug 3 01:23:19 2018
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1 1 Online, Local, rgmanager
server4 2 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:mysqld server4 started
迁移成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。