信息层实现方式(只负责把心跳,集群事务传递给上层):
Heartbeat
keepalived
ultramonkey
Corosync(OpenAIS)
Heartbeat
keepalived
ultramonkey
Corosync(OpenAIS)
资源间的关系:
位置约束:定义服务更倾向于在哪个结点上运行(资源粘性)
-inf 负无穷大
inf 正无穷大
inf和-inf遇到一块时(例如IP inf,httpd -inf),以-inf为准
inf 正无穷大
inf和-inf遇到一块时(例如IP inf,httpd -inf),以-inf为准
顺序约束:定义资源间的依赖关系,被依赖的资源要先启动
排列约束:定义资源间的互斥或者互相吸引的关系,多个资源必须运行在一个结点上,或者某些资源一定不能运行在同一个结点上
RA(Resource Agent)类型(实现服务启动、停止的服务脚本):
Heartbeat V1
LSB:符合linux标准库的脚本
OCF(Open Cluster Framework):开放集群框架(与LSB相比,能接受参数)
STONITH:互相监控运行状态,关键时刻能够实现隔离效果
Heartbeat V1
LSB:符合linux标准库的脚本
OCF(Open Cluster Framework):开放集群框架(与LSB相比,能接受参数)
STONITH:互相监控运行状态,关键时刻能够实现隔离效果
资源类型:
primitive:某个资源只能运行在一个结点上
group:一个组内的资源必须运行在一个结点上
clone:需要同时运行在多个结点上
Master-slave:主从模型
primitive:某个资源只能运行在一个结点上
group:一个组内的资源必须运行在一个结点上
clone:需要同时运行在多个结点上
Master-slave:主从模型
CRM应用程序:
Heartbeat V1
Heartbeat V2(CRM)
Heartbeat V3 + Pacemaker(资源管理器) + Cluster-glue
Heartbeat V1
Heartbeat V2(CRM)
Heartbeat V3 + Pacemaker(资源管理器) + Cluster-glue
心跳信息通过主机名进行传递的方式:
1、 mcast 组播(多播)
2 、bcast 广播
3 、ucast 单播
1、 mcast 组播(多播)
2 、bcast 广播
3 、ucast 单播
高可用集群的配置(heartbeat v1) :
配置前注意事项:
1、各结点之间最好配置好双机互信(不是必须的)
2、各结点主机时间要同步,相差间隔不能超过1s(可以使用ntp进行相关配置)
3、定义为资源的服务不能开机启动(或者不能在高可用集群服务启动之前启动)
3、定义为资源的服务不能开机启动(或者不能在高可用集群服务启动之前启动)
4、多个结点配置文件必须保持一致
5、启动或者停止服务要远程操作(ssh node 'command')
IP地址分配:
vip:192.168.0.66
node1:192.168.0.223
node2:192.168.0.226
DNS使用/etc/hosts文件进行配置
配置双机互信:
[root@rs1 ~]# ssh-keygen -t rsa -P ''
[root@rs1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@rs2
rs2上按同样方法配置双机互信
[root@rs1 ~]# date;ssh rs2 'date'查看两个结点的时间是否同步,如若不同步,需配置为同步
[root@rs2 i386]# rpm -qpi heartbeat-pils-2.1.4-10.el5.i386.rpm 安装软件包之前查看安装包信息
[root@rs2 i386]# yum -y --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
rs2上执行同样操作
[root@rs1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/(配置文件路径)
ha.cf:heartbeat主配置文件
haresources:资源管理器的配置文件
outhkeys:认证密钥(权限必须是600或者400)
[root@rs1 heartbeat-2.1.4]# cp ha.cf haresources authkeys /etc/ha.d/
[root@rs1 ha.d]# chmod 600 authkeys
[root@rs1 ha.d]# vim authkeys
修改配置文件如下:
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!
node1:192.168.0.223
node2:192.168.0.226
DNS使用/etc/hosts文件进行配置
配置双机互信:
[root@rs1 ~]# ssh-keygen -t rsa -P ''
[root@rs1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@rs2
rs2上按同样方法配置双机互信
[root@rs1 ~]# date;ssh rs2 'date'查看两个结点的时间是否同步,如若不同步,需配置为同步
[root@rs2 i386]# rpm -qpi heartbeat-pils-2.1.4-10.el5.i386.rpm 安装软件包之前查看安装包信息
[root@rs2 i386]# yum -y --nogpgcheck localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
rs2上执行同样操作
[root@rs1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/(配置文件路径)
ha.cf:heartbeat主配置文件
haresources:资源管理器的配置文件
outhkeys:认证密钥(权限必须是600或者400)
[root@rs1 heartbeat-2.1.4]# cp ha.cf haresources authkeys /etc/ha.d/
[root@rs1 ha.d]# chmod 600 authkeys
[root@rs1 ha.d]# vim authkeys
修改配置文件如下:
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!
(启用任意一种加密算法即可)
[root@rs1 ha.d]# dd if=/dev/urandom count=1 bs=512 | md5sum 生成随机数并加密
用生成的密钥把authkeys里的md5后的字符串替换掉
[root@rs1 ha.d]# vim ha.cf 编辑配置文件,根据实际需要修改相关参数和指令
[root@rs1 ha.d]# dd if=/dev/urandom count=1 bs=512 | md5sum 生成随机数并加密
用生成的密钥把authkeys里的md5后的字符串替换掉
[root@rs1 ha.d]# vim ha.cf 编辑配置文件,根据实际需要修改相关参数和指令
配置文件中部分指令(选项)的作用
logfacility local0 定义日志文件保存在messages中
# keepalive: how long between heartbeats?多长时间传递一次心跳信息
#initdead 120定义刚启动集群的时候延长假设故障时间
auto_failback on 主结点上线时服务是否主动返回
#node kathy 定义集群里都有哪些结点,此处主机名必须使用uname -n的名字
node www.gao.com 定义集群中的结点
node www2.gao.com
#ping 192.168.0.221 结点都能ping通的仲裁设备(一般为网关)
#ping_group group1 10.10.10.254 10.10.10.253指定多个ping结点
#deadping 30 ping结点故障容错时间
#compression bz2 报文传输之前按bz2方式压缩
#compression_threshold 2 压缩门槛(单位K,小于2k不压缩)
logfacility local0 定义日志文件保存在messages中
# keepalive: how long between heartbeats?多长时间传递一次心跳信息
#initdead 120定义刚启动集群的时候延长假设故障时间
auto_failback on 主结点上线时服务是否主动返回
#node kathy 定义集群里都有哪些结点,此处主机名必须使用uname -n的名字
node www.gao.com 定义集群中的结点
node www2.gao.com
#ping 192.168.0.221 结点都能ping通的仲裁设备(一般为网关)
#ping_group group1 10.10.10.254 10.10.10.253指定多个ping结点
#deadping 30 ping结点故障容错时间
#compression bz2 报文传输之前按bz2方式压缩
#compression_threshold 2 压缩门槛(单位K,小于2k不压缩)
在另外一台主机上建立文件服务器,两结点挂载文件作为网页文件
[root@www2 ~]# vim /etc/exports
/www/htdocs 192.168.0.0/24(rw)
[root@www2 ~]# useradd -r -u 48 webusers(建立web服务映射的系统用户)
[root@www2 ~]# setfacl -m u:webusers:rwx /www/htdocs(赋予该系统用户共享文件的访问权限)
在结点上挂载共享文件
[root@rs1 ~]# mount -t nfs 192.168.0.222:/www/htdocs /var/www/html
[root@rs1 ~]# umount /var/www/html/集群启动之前要卸载
[root@rs1 ha.d]# vim haresources
添加如下内容
rs1.gao.com 192.168.0.66/24/eth0/192.168.0.255 Filesystem::192.168.0.222:/www/htdocs::/var/www/html::nfs httpd
[root@www2 ~]# vim /etc/exports
/www/htdocs 192.168.0.0/24(rw)
[root@www2 ~]# useradd -r -u 48 webusers(建立web服务映射的系统用户)
[root@www2 ~]# setfacl -m u:webusers:rwx /www/htdocs(赋予该系统用户共享文件的访问权限)
在结点上挂载共享文件
[root@rs1 ~]# mount -t nfs 192.168.0.222:/www/htdocs /var/www/html
[root@rs1 ~]# umount /var/www/html/集群启动之前要卸载
[root@rs1 ha.d]# vim haresources
添加如下内容
rs1.gao.com 192.168.0.66/24/eth0/192.168.0.255 Filesystem::192.168.0.222:/www/htdocs::/var/www/html::nfs httpd
定义主结点 VIP 掩码 别名定义的网卡 该网段的广播地址 文件系统 web服务
资源接受参数:使用::隔开
[root@rs1 ha.d]# scp -p authkeys haresources ha.cf rs2:/etc/ha.d/
[root@rs1 ha.d]# service heartbeat start 启动heartbeat服务
[root@rs1 ha.d]# ssh rs2 'service heartbeat start'
[root@rs1 ha.d]# cd /usr/lib/heartbeat/(hb_standby脚本路径)
[root@rs1 heartbeat]# ./hb_standby把当前结点转换为背结点
资源接受参数:使用::隔开
[root@rs1 ha.d]# scp -p authkeys haresources ha.cf rs2:/etc/ha.d/
[root@rs1 ha.d]# service heartbeat start 启动heartbeat服务
[root@rs1 ha.d]# ssh rs2 'service heartbeat start'
[root@rs1 ha.d]# cd /usr/lib/heartbeat/(hb_standby脚本路径)
[root@rs1 heartbeat]# ./hb_standby把当前结点转换为背结点
打开浏览器访问网页,测试效果
(仅供参考)