高可用(HA)集群的搭建
--图形化搭建(针对rhel6.5)
实验环境:iptables selinux关闭,三台主机做好解析
实验主机IP:
172.25.0.251
172.25.0.2
172.25.0.3
高可用集群包括RHCS,pacemaker+lvs,heartbeat,keepalievd。
在做实验前,先了解RHCS套件,6以下才有,7就取消了。
一些服务进程的含义如下:
Luci/ricci》》web方式的集群管理(配置)工具;
Ccs》》集群配置服务,(例如更新文件)/etc/cluster/cluster.conf;
Dlm》》分布式集群锁。可以让我们并行的去做一些事。
Clvmd》》可以让我们将逻辑卷分区(lvm,pv,vg ,lv)同步到其他节点。
Cman》》统一协调集群,比如fence的管理,colosync(集群心跳引擎》》在两个节点之间)的管理。
Rgmanage》》在cman开启后生成。
所以在启动集群时,要先开启cman,再开启rgmanager,关闭集群时,正好相反。
一般大企业都有两个高可用集群一个坏掉后,通过路由切换到另一条,然后运维人员会去处理坏掉的一个集群。
第一部分:重新配置yum源。
##我们最初的域名源只有最基础的软件(如下图),也就是只有server,而没有HA,负载均衡,扩展文件系统所有的软件,所以需要重新配置yum源。
##将yum源配置成下面内容:
##刷新,repolist后发现有3819个包。
##同样server3中做相同的yum源配置,这里是将server2的复制过去:
##安装web方式的集群管理(配置)工具luci(一台),ricci(两台):
##给ricci用户修改密码:
##开启ricci(两台),并将ricci设置为开机自启:
##安装luci:
#Luci只是一个管理工具。】,可以安装在任何一台机子上,只是通过开启luci开启来得到一个网址,然后就可以在web浏览器中配置吗HA,记得这里生成的网址含有主机名,所以要做好解析,也就是安装ricci和luci的三台主机或者两台主机之间做好解析。
#用生成的网址登陆:
##点击左侧的管理集群,再点击create就可以创建一个集群:
##输入集群名字,节点名字
##确定所用浏览器的机子能ping同通节点:
##开始将节点加入集群,等待几秒钟:
##其实我们也可以用命令行,但是,图形更加快捷,对于客户来说更喜欢用图形,这个时候,我们在web端做的都会在server2,server3中有相应的进程对应。
##然后,节点就加进来了:
#此时,两个节点都已经重启。
##########以上做法常见的错误就是yum源,iptables(要求关闭),ricci,还有本地解析。
##我们做完上面的将会在/etc/cluster目录中生成cluster.conf文件:
##它的内容如下,每修改一次version就会变一次:
#server2的:
#server3的:
##以上我们只是做之前必须要做的就是在每个节点要开启RHCS集群的两个核心进程,cman,rgmanager,并且要先开启cman,再开启rgmanager,
##集群是需要以下5个服务支持的:
Cman.rgmanage,ricci,clvmd,modclusterd,所以在luci之前要将每个节点这些服务开启。
第二部分:安装fence
##fence分为内部fence(服务器厂家自带)和外部fence(价格昂贵,但是性能好)。
##查询fence包,红帽自带安装划线的三个:
##安装完要初始化,这里我们已经安装了,就只演示初始化的过程:
##监听多播模块,多播的IP和端口默认,接口写宿主机的网桥,接下来是指定多播密码文件,必须放在/etc/cluster下。后端是默认的,然后配置就完成了。
##对初始化过程中内容的解释:
#libvirt是一套免费、开源的支持Linux下主流虚拟化工具 libvirt 比较和用例模型的C函数库,其旨在为包括Xen在内的各种虚拟化工具提供一套方便、可靠的编程接口,支持与C,C++,Ruby,Python等多种主流开发语言的绑定。当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virt-install(命令行模式)等均基于libvirt开发而成。
#multicast:多播:IP多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。
##然后是重启fence,查看fence的状态,查看fence的1229端口。
##下面是我们之前做好的多播密码,在这里要将他删除,再次演示生成密码的步骤,其实就是从随机数中去128个字节:
##我们所做的修改都保存在/etc/fence_virt.conf中。
##密码要求装有fence和所有节点的密码都一样,所以我们将刚刚生成的密码复制给节点相应目录中:
##出现上述问题是因为下面的问题:
将这下面的172.25.0.2 和172.25.0.3的公钥删除。
##再拷贝就没有问题了:
##查看集群状态clustat -i的话是指定刷新时间,这样可以动态输出集群启停状态转变:
##现在是将两个节点加进来了。
##增加fence:
##我们在图形中做的都会反映到配置文件中并且是同步的,所有节点都同时改变:
##增加fence完成后的界面:
##然后选择节点2:
##增加fence设备:
##给fence起个名字:
##加入一个实例,也就是我们之前创建的fence:
##在真机中看到的虚拟机的名字:
##并且每个虚拟机都有自己的UUID,标签会变,但是UUID不会变:
##所以在这里我们最好在这里输入节点2的UUID:
##一个domain管理一个server instance。
##节点三做相同的做法,增加一个fence。
##所有的修改都加到了配置文件中:
##fence_node 主机名可以检测一下fence起作用了。节点3重启了。
# 测试fence设备配置(fence_node/fence_drac/…)
使用fence_node 命令进行fence配置测试,该命令将读取cluster.conf中关于fence设备的配置。
常用命令
/sbin/fence_node db1.fjnet114.com
/sbin/fence_node db2.fjnet114.com
针对每个不同的fence设备,redhat提供了相应的工具fence_drac、fence_ilo等,可在命令下直接加载fence设备参数进行测试。参数-o指定执行的动作,可为reboot\off\on\status等,详见man fence_drac。
如:
[root@db2 ~]# fence_drac -a 192.168.114.106 -l admin -p wlhmbst@2008 -o status
status: on
##查看集群状态:
##先显示server3不在线,然后就在线了,有问题,会重启,然后自动加入。
##增加服务:
##将发布目录改为server2/3.example。com
##创建failover domaiin:
##然后界面会如下:
##增加一个vip资源:
##资源里面有好多可以增加,下面列出部分:
##增加http服务,我们可以在里面选择apache,但是会让输入其他内容,为了方便,我们可以增加一个脚本,输入服务名称和启动时调用的文件路径。
##将刚刚增加的两个资源添加到服务中:
##然后再点击页面下面的submit,就完成了服务的增加:
##访问VIP,将会得到server2 的发布文件:
##查看ip,会发现我们将vip加入本地。
##查看端口,会发现,本地80端口已经增加到vip上
##用命令将server2搞崩溃:
##会发现fence将server2重启了:
##现在server3接管了服务:
##现在将server3 的http服务 关掉:
##再次访问会发现直接登录不进去 了:
##这是因为心跳检测的原因,并不是一有问题就会fence掉,会有几秒的等待,当fence确定server3的http服务挂掉后,它会重新启动这台的http,另一台的http会开启并继续提供http服务:
##然后将server2 的网络停掉,会发现server2重启了:
##现在server3接管了http服务(这里只是以http为例,准确的说是server3在集群中起作用):
未完待续》》》》》