一 环境准备
二 拓扑结构
三 前提条件
四 安装相关软件
五 配置heartbeat
六 测试web集群
七 问题汇总
八 共享存储
一 环境准备
操作系统
centos 6.4 x86_64 最小化安装
如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X
YUM 安装 Vim man ntp “development tools” “server platform development” “desktop platform development”
配置 epel YUM 源
关闭 防火墙 selinux
二 拓扑结构
三 前提条件(两个节点都有配置)
1 节点之间主机名可以互相解析
web1 ,web2
[[email protected] ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.200.132 web1.daphne.com web1 192.168.200.133 web2.daphne.com web2
2 节点之间时间同步
[[email protected] ~]# ntpdate ntp.api.bz
3 节点之间配置SSH互信
[[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘ [[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected] [[email protected] ~]# ssh web2 [[email protected] ~]#
[[email protected] ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘ [[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected] [[email protected] ~]# ssh web1 [[email protected] ~]#
四 安装相关软件
1 heartbeat 组件说明
- heartbeat 核心组件
- heartbeat-gui 图形管理接口
- heartbeat-ldirectord 为lvs高可用提供规则自动生成及后端realserver健康状态检查组件
- heartbeat-pils 装载库插件接口
- heartbeat-stonith
2 安装heartbeat
heartbeat-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm
heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
yum install PyXML libnet pygtk2-libglade net-snmp-libs yum install libtool-ltd( 注 要从源库安装 ,不可以epel) lyum install libnet rpm -ivh heartbeat-*
3 安装httpd
[[email protected] ~]# yum install httpd [[email protected] ~]# cd /var/www/html/ [[email protected] html]# vim index.html web1 [[email protected] ~]# service httpd start
测试
测试完毕 关闭服务 使其开机不要启动
[[email protected] ~]# serivce httpd off [[email protected] ~]# chkconfig httpd of [[email protected] ~]# chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
以上操作在两个节点都要做
五 配置heartbeat
1配置文件说明
[[email protected] ~]# cd /etc/ha.d/ [[email protected] ha.d]# ls authkeys harc rc.d resource.d ha.cf haresources README.config shellfuncs
说明 安装好的heartbeat 默认没有配置文件,但提供了配置文件样本
[[email protected] ha.d]# cd /usr/share/doc/heartbeat-2.1.4/ [[email protected] heartbeat-2.1.4]# ls apphbd.cf faqntips.html haresources Requirements.html authkeys faqntips.txt hb_report.html Requirements.txt AUTHORS GettingStarted.html hb_report.txt rsync.html ChangeLog GettingStarted.txt heartbeat_api.html rsync.txt COPYING ha.cf heartbeat_api.txt startstop COPYING.LGPL HardwareGuide.html logd.cf DirectoryMap.txt HardwareGuide.txt README
我们需要 authkeys ha.cf haresources 三个配置文件
[[email protected] heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/
2 配置authkeys
[[email protected] ha.d]# openssl rand -hex 8 >> authkeys [[email protected] ha.d]# vim authkeys auth 2 #1 crc #2 sha1 HI! #3 md5 Hello! 2 sha1 7c0f241959ee845d [[email protected] ha.d]# chmod 600 authkeys
3 配置ha.cf文件
[[email protected] ha.d]# vim ha.cf
修改心跳信息的传播方式 可以采用 组播 广播 单播
bcast eth0
配置集群中的节点数
node web1.daphne.com node web2.daphne.com
4 配置haresources
[[email protected] ha.d]# vim haresources web1.daphne.com 192.168.200.10/24/eth0 httpd
5 复制以上三个文件到web2上
[[email protected] ha.d]# scp authkeys ha.cf haresources web2:/etc/ha.d/
6 启动web1与web2
先启动备份节点
[[email protected] ~]# service heartbeat start [[email protected] ~]# service heartbeat start
六 测试web集群
查看IP
[[email protected] ha.d]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:7D:C1:D7 inet addr:192.168.200.132 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe7d:c1d7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9069 errors:0 dropped:0 overruns:0 frame:0 TX packets:9159 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1707993 (1.6 MiB) TX bytes:1846141 (1.7 MiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:7D:C1:D7 inet addr:192.168.200.10 Bcast:192.168.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
故障演示
关闭web1上的heartbeat
[[email protected] ~]# service heartbeat stop Stopping High-Availability services: Done.
查看web2上的IP
ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:61:E4:6B inet addr:192.168.200.133 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe61:e46b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8230 errors:0 dropped:0 overruns:0 frame:0 TX packets:8164 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1698974 (1.6 MiB) TX bytes:1680369 (1.6 MiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:61:E4:6B inet addr:192.168.200.10 Bcast:192.168.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
测试
七 问题汇总
节点间的文件同步
1Rsync+Inotify组合方案来解决节点之间的同步问题
2共享存储方案
八 共享存储
1 配置NFS服务器
[[email protected] ~]# yum install nfs* [[email protected] ~]# mkdir -pv /web/html/ [[email protected] ~]# vim /web/html/index.html [[email protected] ~]# vim /etc/exports /web/html/ 192.168.200.0/24(rw,async) [[email protected] ~]# service rpcbind start [[email protected] ~]# service nfs start
节点测试 挂载
web1
[[email protected] ~]# mount -t nfs 192.168.200.138:/web/html /mnt [[email protected] ~]# cd /mnt [[email protected] mnt]# ls index.html [[email protected] ~]# umount /mnt
修改haresource文件
[[email protected] ha.d]# vim /etc/ha.d/haresources web1.daphne.com 192.168.200.10/24/eth0 Filesystem::192.168.200.138:/web/html::/var/www/html::nfs httpd
同步haresource配置文件
[[email protected] ha.d]# cd /etc/ha.d/ [[email protected] ha.d]# scp haresources web2:/etc/ha.d/
重启heartbeat
[[email protected] ~]# service heartbeat restart [[email protected] ~]# service heartbeat restart
测试web服务
heartbeat httpd nfs 实现高可用web集群