linux的优势我想大家都知道,就是作为服务器,它非常高效稳定。然后对于一些24*7的服务器系统来说,即使系统非常稳定,也不能保证服务器时时刻刻
都在运行,比如断电,服务进程异常停止,受到攻击崩溃点情况。为了解决这些问题,现在比较流行两台或者多台服务器集群,一台作为主服务器,令一台作为备用
服务器,当主服务器的服务停止后,备用服务器立刻能够接管起主服务器的工作。
通过研究,发现linux下的这种工具很丰富。有免费的,也有收费的,比如linux-HA(http://www.linux-ha.org/
),cman(也是不错的软件,通过图形界面来管理服务器节点)。还看到一个日本人开发的集群套件,单价几百万日元,当然这是因为收费的大多数原因是他们提供技术支持。
既然如此,到底这些集群软件是怎么实现的呢?其实并不复杂。
我写个简单的脚本来示范一下集群软件的工作原理,一台服务器是否在工作,我们可以形象地解释它有没有“心跳”
#!bin/bash
#description: I have created a cluster with two computers
#One is the master with IP--192.168.0.1
#The other one is the slave with IP--192.168.0.2
#The float_ip is 192.168.0.111
while true
do
ping 192.168.0.111 -c3 #&>/dev/null
result=$?
sleep 3
if [ $result -ne 0 ]
then
wget -t3 http://192.168.0.1
-O /dev/null #&>/dev/null
[ $? -ne 0 ] && ifconfig eth0:1 192.168.0.111
fi
&& echo "Master apache service is down">>/var/log/ha.log
if [ $result -eq 0 ]
then
ifconfig eth0:0|grep $float_ip
[ $? -ne 0 ] && ifconfig eth0:1 down
fi
done
测试主机心跳点评脚本:我是以局域网中两台配置相同的机器,一台作为主服务器master(ip 192.168.0.1),令一台作
为备用服务器slave(ip 192.168.0.2,来提供httpd网站服务,网站的地址是192.168.0.111,属于master上一个浮动ip。
首先让主服务器开启网站服务,然后备用服务器关闭网站服务,运行如上脚本,然后slave会去ping master的IPI,并把
结果存入变量。光能ping通主机并不能保证网站服务还是可用的,于是我们用抓包软件抓取master的一张,若成功了,隔
三秒后再去重复以上步骤,ping不通slave就直接新建一个浮动ip,并开启httpd服务
若ping的通而抓不到包则slave也接管服务,并将master上的httpd服务当掉的消息存入日志。
当主服务器重新开机后,备用服务器应该把ip还给主服务器。于是当重新ping通master并抓包成功后,slave放弃浮动ip
并停止服务。
基本工作原理就是这样,区别在于集群软件用的相互之间测试心跳的途径不同,我用的是较为简单的icmp协议和测试服务
相结合的办法。简单实用,但是要考虑防火墙的具体配置情况,仅让192.168.0.2的icmp能通过,不让其他主机有机可趁于是
在master上配置防火墙。
iptables -I INPUT -p icmp --snat 192.168.0.2 -j accept
iptables -I INPUT -P icmp -j drop
对于基于TCP协议80端口的httpd服务也类似配置,这样就可以既实用又保证安全性了。
分享到:
相关推荐
它可以自动测试找出最佳的MTU,并完成网卡的配置工作。尤其是在用inode进行拨号上网时,经常会遇到MTU过大而导致不能正常上网的问题。可免去手动测试MTU并配置网卡的繁琐过程。
总结来说,配置Linux下的Apache负载均衡与JBoss集群,主要包括以下几个步骤:安装和配置JDK,安装和配置JBoss,设置Apache服务器,以及配置mod_jk模块和工作者属性。这种配置能够提高系统的稳定性和处理能力,是大型...
linux Autoback-xtraback.shAutoinstall ELK V1.3.sh black list.shcheck mysql_ms.shCpu Limit.sh Custom Rm.sh Daily Archive.sh Hourly Archive.sh install elasticserch.sh ...删除用户脚本.sh
inux下搭建TFT服务器和网络设备配置文件自动备份脚本
linux常用命令大全 exit命令.sh 反引号的使用.sh使用expr执行数学运算,sh使用方括号执行数学运算sh使用内联重定向计算表达式.sh使用自定义变量.sh ...显示系统变量和转义字符.sh在脚本中使用bc.sh
Linux下的RoseMirrorHA是一款高可用性(HA)解决方案,用于确保关键业务服务的连续性和可靠性。这个系统在数据库服务器上部署,确保即使在一台服务器出现故障时,服务也能通过另一台服务器无缝接管继续运行。以下是...
本文将详细介绍如何使用shell脚本来实现这一目标,主要涉及的命令包括`cat`、`grep`、`wc`以及`sysbench`。 首先,我们要了解CPU的一些基本指标,包括处理器型号(model name)和核心数(number of cores)。在...
inux平台下使用nginx与nginx-rtmp-module搭建RTMP+HLS流媒体服务器的详细操作步骤在文章(http://blog.csdn.net/liuchen1206/article/details/77771703)中有作介绍,现将资源整合成自动编译部署脚本,节约时间。...
这个文件通常位于Apache安装目录的`conf`子目录下,它是Apache服务器的主要配置文件,包含了服务器的全局设置。 首先,配置文件中的`ServerRoot`指令定义了Apache软件安装的根目录,例如`/mnt/software/apache2`。...
9. **负载均衡与集群**:对于大型网站,可能需要使用Apache的负载均衡和集群技术,学习如何配置Apache作为反向代理,实现多台服务器间的负载分发。 10. **持续学习与进阶**:推荐进一步学习Apache的高级特性,如mod...
linux是嵌入式开发中常用的系统之一,掌握其编程对我们开发嵌入式产品有重要的作用。本文档主要讲述linux下的c编程,帮你快速进入嵌入式开发领域中。
描述了LINUX环境下QT应用程序的设计,包括Linux内核的下载等
Linux下的TC(traffic control)和HTB(Hierarchical Token Bucket)流量控制是网络管理中的关键工具,主要用于优化网络带宽的分配和确保服务质量(QoS)。它们可以帮助管理员在多用户环境中控制不同类型的网络流量,避免...
Linux网络编程 TCP/IP基础知识 涵盖socket epoll 多线程
在嵌入式Linux环境下,开发一个能够遍历指定路径下的所有JPEG图片并进行解码显示的源程序是一项常见的任务,特别是在开发图形用户界面或者多媒体应用时。这个程序的核心技术包括文件遍历、JPEG文件识别、图像解码...