Heartbeat V1+NFS实现高可用apache
2016-03-12 00:00
357 查看
Heartbeat V1+NFS实现高可用apache
实验拓扑:
实验环境:
OS:CentOS-6.7-x86_64
Node1:
IP:eth0,192.168.1.4 VIP:eth0:0,192.168.1.3
Node2:
IP:eth0,192.168.1.5 VIP:eth0:0,192.168.1.3
NFS+NTP:
IP:192.168.1.6
需要资源:VIP、httpd、网页文件
实验流程:
配置高可用集群的前提:1、时间必须保持同步:使用ntp服务器
[root@node3 ~]# yum install ntp [root@node3 ~]# vim /etc/ntp.conf restrict 192.168.1.0 mask 255.255.255.0 nomodify server 127.127.1.0 fudge 127.127.1.0 stratum 1
启动服务:
[root@node3 ~]# chkconfig ntpd on [root@node3 ~]# service ntpd start
各节点添加对时任务:
[root@node1 ~]# crontab -e */5 * * * * /usr/sbin/ntpdate 192.168.1.6 &> /dev/null
2、节点必须名称互相通信:
编辑/etc/host 解析节点名称:
[root@node1 ~]# vim /etc/hosts 192.168.1.4 node1.chencer.org node1 192.168.1.5 node2.chencer.org node2
3、ssh密钥认证进行通信;
节点间ssh互信认证:
[root@node1 ~]# ssh-keygen -t rsa [root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
NFS:
提供共享网页文件:
[root@node3 ~]# mkdir -p /web/share [root@node3 ~]# echo "share.chencer.org" > /web/share/index.html [root@node3 ~]# setfacl -R -m u:apache:rwx /web/share/
安装服务,设置共享目录:
[root@node3 ~]# yum install nfs-utils [root@node3 ~]# vim /etc/exports /web/share 192.168.1.0/24(rw,async,no_root_squash)
启动服务:
[root@node3 ~]# chkconfig nfs on [root@node3 ~]# service nfs start
Node1和Node2:
安装配置nfs工具和httpd服务:
[root@node1 ~]# yum install nfs-utils httpd [root@node1 ~]# mkdir -p /web/share [root@node1 ~]# vim /etc/httpd/conf/httpd.conf DocumentRoot "/web/share"
保证httpd服务开机不自动启动:
[root@node1 ~]# chkconfig httpd off
安装heartbeat依赖的软件:
[root@node1 ~]# yum install PyXML pygtk2-devel perl-TimeDate gettext-devel libtool-ltdl libnet net-snmp-libs 注意:libnet来自于epel源;
安装heartbeat:
[root@node1 heartbeat2]# rpm -ivh heartbeat-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
查看安装heartbeat 生成文件:
[root@node1 heartbeat2]# rpm -ql heartbeat | less /etc/ha.d/ \\:配置文件目录; /usr/share/doc/heartbeat-2.1.4/authkeys \\:各节点信息传递使用的密钥; /usr/share/doc/heartbeat-2.1.4/ha.cf \\:heartbeat主配置文件模板; /usr/share/doc/heartbeat-2.1.4/haresources \\:资源配置文件模板; [root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf,haresources} /etc/ha.d/
配置heartbeat服务:
生成密钥并配置密钥文件:
[root@node1 ~]# openssl rand -hex 8 7a3b9f396970a75b [root@node1 ~]# vim /etc/ha.d/authkeys auth 1 1 md5 7a3b9f396970a75b [root@node1 ~]# chmod 600 /etc/ha.d/authkeys
/etc/ha.d/ha.cf配置文件部分参数详解:
autojoin none \\:集群中的节点不会自动加入; logfile /var/log/ha-log \\:指名heartbaet的日志存放位置; keepalive 2 \\:指定心跳使用间隔时间为2秒(即每两秒钟在eth0上发送一次广播); deadtime 30 \\:指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源; warntime 10 \\:指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务; initdead 120 \\:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍; udpport 694 \\:设置广播通信使用的端口,694为默认使用的端口号; baud 19200 \\:设置串行通信的波特率; bcast eth0 \\:Linux指明心跳使用以太网广播方式,并且是在eth0接口上进行广播; mcast eth0 225.0.0.1 694 1 0 \\:采用网卡eth0的udp多播来组织心跳,一般在备用节点不止一台时使用; ucast eth0 192.168.1.3 \\:采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址; # bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。 auto_failback on \\:用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。 # 主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点。 stonith baytech /etc/ha.d/conf/stonith.baytech \\:stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。 watchdog /dev/watchdog \\:该选项是可选配置,是通过heartbeat来监控系统的运行状态; # 使用该特性,需要在内核中载入“softdog”内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入“insmod softdog”加载该模块。然后输入“grep misc /proc/devices”(应为10),输入“cat /proc/misc |grep watchdog”(应为130)。最后,生成设备文件:“mknod /dev/watchdog c 10 130”。即可使用此功能。 node node1.chencer.org \\:主节点主机名,可以通过命令“uname –n”查看; node node2.chencer.org \\:备用节点主机名; ping 192.168.1.10 \\:选择ping的节点,ping节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接; ping_group group1 192.168.1.10 192.168.1.20 \\:类似于ping,ping一组ip地址; apiauth pingd gid=haclient uid=hacluster respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s # 该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是pingd,此进程用于检测和监控网卡状态,需要配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动pingd进程的身份。 compression bz2 compression threshold 2 # 对传输的数据进行压缩,是可选项
编辑/etc/ha.d/haresources添加节点资源:
[root@node1 ~]# vim /etc/ha.d/haresources node1 IPaddr::192.168.1.3/24/eth0 Filesystem::192.168.1.6:/web/share::/web/share::nfs OCF::httpd
将以上三个文件复制到另一节点:
[root@node1 ~]# scp -r /etc/ha.d/{authkeys,ha.cf,haresources} node2:/etc/ha.d/
启动heartbeat服务:
[root@node1 ~]# service heartbeat start;ssh node2 ‘service heartbeat start’
查看日志:
[root@node1 ~]# tail -f /var/log/ha-log
node1为主节点,查看各资源:
[root@node1 ~]# ifconfig
[root@node1 ~]# df -h
[root@node1 ~]# service httpd status httpd (pid 41038) 正在运行...
浏览器访问VIP:
node1切换为备用节点,node2为主节点:
[root@node1 ~]# cd /usr/lib64/heartbeat/ ha_propagate \\:此脚本是将heartbeat的配置文件复制给其他节点; hb_standby \\:此脚本是将当前节点切换为备节点; hb_takeover \\:此脚本是将当前节点切换为主节点; [root@node1 heartbeat]# ./hb_standby 2016/01/21_23:39:08 Going standby [all].
查看看日志:
资源已分配给node2:
[root@node2 ~]# service httpd status httpd (pid 52367) 正在运行...
web页面访问依然正常:
相关文章推荐
- 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
- Apache安装
- java.lang.NullPointerException at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmen
- apache2.2与2.4中的访问控制语句比较
- 配置apache apache服务器如何配置多站点
- Apache+Subversion+TortoiseSVN
- PD安装不同Linux并安装Apache2+PHP5+MySQL和测试SeLinux
- 详解 Windows下apache 实现 SSL
- (总结)Web性能压力测试工具之ApacheBench(ab)详解
- 安装apache和phpadmin小结
- 快速安装LAMP(Ubuntu12.04+Apache2+Mysql+PHP5.5)+安装phpmyadmin
- 单独安装apache和PHP
- Apache Commons工具集简介
- 基于虚拟主机的 apache geoip设置
- Apach配置本地仿服务器连接
- Java命令行解析:apache commons-cli
- 错误: 找不到或无法加载主类 Files\apache-activemq-5.10.0\bin\..\conf\login.config
- Apache Arrow:一个跨平台的内存数据交换格式
- eclipse中pom.xml org.apache.maven.plugins报错的解决
- apache 编译安装与做nagios前端展示