首页 > 代码库 > redhat高可用
redhat高可用
红帽高可用HA --> RHCS
rhcs自带高可用组建的配置
红帽自带的HA 在其镜像中默认发布了其高可用套件
HighAvailability
LoadBalancer
ResilientStorage
ScalableFileSystem
红帽的yum源默认访问的是其镜像中的server
因此想要使用高可用套件需要在其yum源上对景象中的目标作特殊表示
Server3作为一个图形的Conga 用户接口服务器
Server1和server2作为高可用集群
ricci 是 Conga的远程管理的一部分。
Luci是 Conga用户界面服务器。
yum 默认使用镜像的server
[kiosk@localhost ~]$ cd /var/www/html/rhel6.5/
[kiosk@localhost rhel6.5]$ ls
EFI Packages RELEASE-NOTES-pa-IN.html
EULA README RELEASE-NOTES-pt-BR.html
EULA_de RELEASE-NOTES-as-IN.html RELEASE-NOTES-ru-RU.html
EULA_en RELEASE-NOTES-bn-IN.html RELEASE-NOTES-si-LK.html
EULA_es RELEASE-NOTES-de-DE.html RELEASE-NOTES-ta-IN.html
EULA_fr RELEASE-NOTES-en-US.html RELEASE-NOTES-te-IN.html
EULA_it RELEASE-NOTES-es-ES.html RELEASE-NOTES-zh-CN.html
EULA_ja RELEASE-NOTES-fr-FR.html RELEASE-NOTES-zh-TW.html
EULA_ko RELEASE-NOTES-gu-IN.html repodata
EULA_pt RELEASE-NOTES-hi-IN.html ResilientStorage
EULA_zh RELEASE-NOTES-it-IT.html RPM-GPG-KEY-redhat-beta
GPL RELEASE-NOTES-ja-JP.html RPM-GPG-KEY-redhat-release
HighAvailability RELEASE-NOTES-kn-IN.html ScalableFileSystem
images RELEASE-NOTES-ko-KR.html Server
isolinux RELEASE-NOTES-ml-IN.html TRANS.TBL
LoadBalancer RELEASE-NOTES-mr-IN.html
media.repo RELEASE-NOTES-or-IN.html
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[server]
name=Red Hat Enterprise Linux server
baseurl=http://172.25.28.250/rhel6.5
gpgcheck=0
[HighAvailability]
name=Red Hat Enterprise Linux HighAvailability
baseurl=http://172.25.28.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=Red Hat Enterprise Linux LoadBalancer
baseurl=http://172.25.28.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=Red Hat Enterprise Linux ResilientStorage
baseurl=http://172.25.28.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=Red Hat Enterprise Linux ScalableFileSystem
baseurl=http://172.25.28.250/rhel6.5/ScalableFileSystem
gpgcheck=0
将yum源scp到其他高可用节点
Scp server1 server2 server3
Vim /etc/hosts
172.25.28.1 server1.example.com
172.25.28.2 server2.example.com
172.25.28.3 server3.example.com
172.25.28.4 server4.example.com
Scp server1,server2,server3,真机
[root@server1 ~]# yum install ricci -y
ricci - cluster management and configuration daemon
ricci是集群的管理和配置文件的守护进程
[root@server2 ~]# yum install ricci -y
[root@server3 ~]# yum install luci -y
luci是rhcs的web管理工具,仅仅是配置工具,集群可以脱离
需要为集群管理工具设置密码
[root@server1 ~]# echo redhat|passwd --stdin ricci
[root@server2~]# echo redhat|passwd --stdin ricci
Chkconfig --list ricci
Chkconfig ricci on//一定要开机启动。
Service ricci start
在浏览器中访问图形化的canga的用户接口服务器。
https : // IP :8084 或 https://hostname:8084
创建高可用集群,然后配置
所有的配置文件都在/etc/cluster中,
[root@server1 ~]# cd /etc/cluster/
[root@server1 cluster]# ls
cluster.conf cman-notify.d
[root@server1 cluster]# cat cluster.conf
<?xml version="1.0"?>
<cluster config_version="1" name="ginkgo_HA">
<clusternodes>
<clusternode name="server1.example.com" nodeid="1"/>
<clusternode name="server2.example.com" nodeid="2"/>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<fencedevices/>
<rm/>
</cluster>
查看集群节点状态使用clustat
[root@server1 cluster]# clustat
Cluster Status for ginkgo_HA @ Mon Feb 13 15:39:42 2017
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
server1.example.com 1 Online, Local
server2.example.com 2 Online
--------------------------adder slider------------------------------------------
为luci添加防火墙许可:
iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d
192.168.1.0/24 --dport 16851 -j ACCEPT
为ricci添加防火墙许可
iptables -I INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 -d
192.168.1.0/24 --dport 11111 -j ACCEPT
--------------------------------continue---------------------------------
HA中的fence
Fence类似一个网络电源,可以用来控制关闭各高可用节点
使用fence必须在真机中安装以下套件:
[root@localhost ~]# rpm -qa|grep fence
libxshmfence-1.2-1.el7.x86_64
fence-virtd-multicast-0.3.2-2.el7.x86_64
fence-virtd-libvirt-0.3.2-2.el7.x86_64
fence-virtd-0.3.2-2.el7.x86_64
fence-virtd-serial-0.3.2-2.el7.x86_64
安装
fence-virtd-multicast-0.3.2-2.el7.x86_64
fence-virtd-0.3.2-2.el7.x86_64
fence-virtd-libvirt-0.3.2-2.el7.x86_64
Systemctl start fence_virtd
在浏览器中添加fence device,添加名称
由于选用的fence设备为fence -virt,此种fence是通过虚拟管理器来进行管理的,所以必须通过宿主机的virt-manger来进行管理。
然后在真机中执行:
fence_virtd -c
fence_virtd - Fencing host for virtual machines
在本地/etc/cluster下生成一个key文件,如果没有,自动建立。
通过
dd if=/dev/urandom of=/etc/fence_xvm.key bs=128 count=1向密钥文件传输随机数,然后将这个key文件发送给各个节点。
使用virsh list查看当前正在运行的虚拟机,通过virsh list --uuid查看正在运行虚拟机UUID ,然后在节点中将节点添加进fence
使用fence_node servre#.example.com
终止节点
真机通过fence_virtd管理虚拟机。
如果停止失败,检测真机的服务是否开启,然后重起。
-------------------1.14配置故障切换域和全局集群资源-----------------------------
故障切换域:failover Domains
故障切换域的特征:
无限制 —允许您为在子集指定首选成员子集,但分配给这个域名的集群服务可在任意可用成员中运行。
限制 —允许您限制可运行具体集群服务的成员。如果在限制故障切换域中没有可用成员,则无法启动集
群服务(手动或者使用集群软件均不可行)。
无序 —当将一个集群服务分配给一个无序故障切换域时,则可从可用故障切换域成员中随机选择运行集
群服务的成员,没有优先顺序。
有序的 —可让您在故障切换域的成员间指定顺序。该列表顶端的成员是首选成员,接下来是列表中的第
二个成员,依此类推。
故障恢复 —允许您指定在故障切换域中的服务是否应该恢复到节点失败前最初运行的节点。配置这个特
性在作为有序故障切换域一部分节点重复失败的环境中很有帮助。在那种情况下,如果某个节点是故障
切换域中的首选节点,在可能在首选节点和其它节点间重复切换和恢复某个服务,从而不会对性能产生
严重影响。
用来管理集群的高可用节点和启动优先级以及是否重新取回服务。
重新修改点update
配置全局集群资源:Resources
首先添加一个IP ,将来通过此IP 访问个主机所添加的服务,此IPping不通,但要和所属节点IP 在同一个网段。
再启用脚本,可以使用服务自带的脚本,也可以使用自己编写的脚本
在集群中添加集群服务。
服务组:Service Group
分别是
服务名称:自定义
是否自动启动此服务:是
Run Exclusive:是否仅运行一个服务(在一个集群中,可以同时运行多个服务的高可用,如果选择此项,则只能运行一个服务。)yes
Failover Domain :失效域如果一个节点失效,按那个策略执行,和之前的配置Failover Domain 同时使用。
恢复策略:Recovery Policy 选择重新定位,relocate
恢复策略:
选择「重 启」 选项表示在重新定位该服务前系统应尝试重启失败的服务。选择「重新定位」选项表示系统应在不同节点中重启该服务。选择「禁用」 选项表示如果任意组件失败,系统就应禁用该资源组。选择「重 启 -禁用」选项表示该服务失败的位置尝试重启该服务,但如果重启失败,则将禁用服务而不是移动到集群的另一台主机中
选择完成后再添加资源,将之前的资源加入服务组中,然后即可使用
选择add resource
依次为集群服务添加服务。
再两个节点安装apache服务,添加主页
在浏览器上搜索:
资源IP (定义在Resources)
即可
如果服务没有启动,在节点上执行clusvcadm -e Apache
再节点上测试。
停掉网卡接口,
root@server2 ~]# ip link set down eth0
在另外一台节点服务器中执行clustat可以发现server2的重新启动和服务的相关变化。
echo c >/proc/sysrq-trigger服务的测试命令
可以是内核崩溃,停止服务,可以在节点和clustat上发现server的重起。
此时资源组管理器rgmangement会通知真机上的fence_virtd来对节点的fence进行断电和重起。
存储共享iscsi
在管理服务器上分配一块共享硬盘
安装iscsi服务器软件
[root@server3 ~]# yum -y install scsi-*
scsi-target-utils-1.0.24-10.el6.x86_64 already installed
[root@server3 ~]# ll /etc/tgt/targets.conf
共享硬盘:
[root@server3 ~]# vim /etc/tgt/targets.conf
38 <target iqn.2013-02.com.example:server.target1>
39 backing-store /dev/vdb
40 initiator-address 172.25.28.1
41 initiator-address 172.25.28.2 //允许访问的IP 主机。
42 </target>
161 # initiator-address 192.168.100.1
162 # initiator-address 192.168.200.5
使用命令:
tgt-admin -s
在客户端安装
[root@server2 ~]# yums iscsi-*
[root@server2 ~]#iscsiadm -m discovery -t st -p 172.25.28.3
启用发现共享硬盘
172.25.28.3:3260,1 iqn.2013-02.com.example:server.target1
[root@server2 ~]# iscsiadm -m node -l
挂载。
Fdisk -l
Fdisk -cu /dev/sda
分成一个8e的分区。
--------------------------- 本地文件系统----------------------------------------------
共享磁盘:
首先查看clvm的状态
/etc/init.d/clvm status
[root@server2 ~]# service clvmd status
clvmd (pid 1289) is running...
Clustered Volume Groups: clustervg
Active clustered Logical Volumes: clusterlv
两个节点都要检查,如果没有在运行状态,那么,需要使用lvconf --enable-cluster启动,然后再充起服务。
在/etc/lvm/lvm.conf中有关于集群的锁
# change metadata.
locking_type = 3 //个数和集群数量有关
创建lvm
pvcreate /dev/sda1
pvs 两台节点上都要查看
vgcreate clustervg /dev/sda1
vgs 两台节点上都要查看
lvcreate -L 4G -n culsterlv clustervg
lvs 两台节点上都要查看
在一个结点上对clusterlv进行格式化
mkfs.ext4 /dev/clustervg/custerlv
此时可以对lvm进行挂载但是,挂载内容不能及时同步
挂载后在其中写入共享内容index.html以便于访问。
使用集群管理器管理
添加资源
然后在service group中添加该资源,要保证该资源在IP之后,服务之前。
使用clustvcadm -d Apache 停掉一台节点的服务后,访问结果不受限制。
clusvcadm -e Apache 启动资源中的服务。
clusvcadm -r Apache -m server#.example.com将一个节点的服务转移到另外一个节点
此时,使用ip addr查看发现组IP已经发生转移。
lvm扩容:
lvextend -L +4G /dev/clustervg/clusterlv
resize2fs /dev/clustervg/clusterlv
--------------------------------------全局数据/集群文件系统--------------------------------------------
首先,将服务停掉
clusvcadm -d Apache
将本地文件系统从服务管理中移出,在资源中移除文件系统资源
然后将lvm格式化为gfs2文件系统
mkfs.gfs2 -j 3 -p lock_dlm -t ginkgo_HA:mygfs2 /dev/clustervg/clusterlv
mkfs.gfs2 -p LockProtoName -t LockTableName -j NumberJournals BlockDevice
LockProtoName
指定要使用的锁定协议名称,集群的锁定协议为 lock_dlm。
LockTableName
这个参数是用来指定集群配置中的 GFS2 文件系统。它有两部分,用冒号隔开(没有空格)如下
:ClusterName:FSName
ClusterName,用来创建 GFS2 文件系统的集群名称。
FSName,文件系统名称,长度可在 1-16 个字符之间。该名称必须与集群中所有 lock_dlm 文件
系统以及每个本地节点中的所有文件系统(lock_dlm 和 lock_nolock)不同。
Number
指定由 mkfs.gfs2 命令生成的日志数目。每个要挂载文件系统的节点都需要一个日志。对于GFS2
文件系统来说,以后可以添加更多的日志而不会增大文件系统,如 第 3.7 节 “在文件系统中添加
日志” 所述。
BlockDevice
指定逻辑卷或者物理卷。
-p LockprotoName 指定要使用的锁定协议名称,可识别的锁定协议包括:lock_dlm — 标准锁定模式,用于集群的文件系统。lock_nolock — 当 GFS2 作为本地文件系统作用时使用
(只有一个节点)
-t LocktableName 在您使用 lock_dlm 协议时用来指定锁定表格字段的唯一识别程序
挂载
-j Number 指定由 mkfs.gfs2 命令生成的日志数目。挂载文件系统的每个节点都需要一个日志。如果没有指定该选项,则会生成一个日志。对于GFS2 文件系统,您可以后添加
附加日志而不会增大文件系统。
在另一个节点挂载
此时在挂载点写入数据是同步数据。
gfs2磁盘工具
gfs2_tool -help
gfs2_tool sb [device] all
自动挂载:
两个节点写入
vim /etc/fstab
UUID=e7279a9d-c724-0719-b379-954b3719807b /var/www/html/ gfs2 _netdev 0 0
mount -a 检查挂载
写入测试页。
启动服务
clusvcadm -e Apache
可以访问到网页
使用
gfs2_tool -help
使用gfs2_tool sb /dev/clustervg/clusterlv all
查看所有信息。
gfs2_tool journals /dev/***
查看日志信息。
添加日志数量
gfs2_jadd -j 3 /dev/***
-j 增加多少条日志。
lvm扩容
物理扩容同本地文件系统
文件系统扩容是:
gfs2_grow /dev/****
redhat高可用