Linux服务器双机热备详细过程
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备过程:
keepalived的工作原理是VRRP虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。
当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
两台物理服务器和一个虚拟服务器(vip):master:redhat2.6.18-53.el5192.168.8.4;backup:redhat2.6.18-53.el5192.168.8.6;vip:192.168.8.100。
节点A192.168.8.4(主节点),节点B192.168.8.6(备用节点),虚拟IP(对外提供服务的IP192.168.8.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点A网卡的MAC地址
其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点B网卡的MAC地址
其它电脑如客户端会更新自己的ARP表,对应192.168.8.100的MAC地址=节点B网卡的MAC地址。
扩展资料:
双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器执行写操作,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。
当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
Keepalived的运行原理是基于VRRP(虚拟路由冗余协议)机制,在VRRP中有两个重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是一种实体路由器设备,而虚拟路由器则是基于VRRP协议构建的虚拟路由器,是软性的虚拟概念,一组VRRP路由器协同工作,共同构造一台虚拟服务器。
VRRP协议支持一种选举机制,主要用来选出用来提供服务的路由即主控路由,其它的就是备份路由了,当主控路由失效之后,备份路由中重新选出一个主控路由(往往按照设置好的优先级别重新分配),接管主控服务,继续工作,来保证不间断的提供服务。
参考资料:
不建议用telnet连接主机,这个是非加密的控制服务,容易被获取密码或者劫持对话。
如果必须用telnet的话,这里简单介绍下如何连接。
步骤一:Windows终端开启Telnet功能
1、由于在Windows Vista之后的版本默认并没有提供Telnet功能。如果需要使用Telnet就必须打开此项功能。以Windows 7为例,首先打开控制面板。
2、然后在控制面板中打开“程序和功能”。
3、再在左上角点击“打开或关闭Windows功能”。
4、在“打开或关闭Windows功能”对话框中勾选“Telnet客户端”,点击确定,系统会自动安装。到此Windows终端的工作已经完成。
步骤二:Linux服务器开启Telnet服务
1、许多Linux系统在默认情况下是不安装Telnet服务的,如果需要使用就必须安装此项服务。安装的方法有很多,小编在这里只介绍yum安装
Telnet服务,优点是能够自动检查安装包的依赖文件不用人为干预,当然前提是系统必须联网。在提示符下输入“yum install -y
telnet-server”命令安装Telnet服务。最后出现Complete,代表安装完成。
2、使用命令“vi /etc/xinetdd/telnet”编辑Telnet的配置文件,将disable的值改成no。
3、重启启动xinetd服务,使得telnet配置生效。
4、在Linux服务器上打开Telnet协议的23端口。使用命令“vi /etc/sysconfig/iptables”添加红框内的代码,保存。
5、重新启动iptables,使得防火墙策略生效。
6、在Windows上,用“telnet IP地址”命令,再输入用户名和密码,就可以完成Linux服务器的远程登录。
RS-232:用于与调制解调器、打印机及其它PC外设之间的通信。最大电缆长度为100英尺(典型值)。
RS-422:适用于单主机(驱动器)工业环境。典型应用包括:过程自动化(化工、酿造、造纸)、工厂自动化(汽车制造、金属加工)、HVAC、安防、电机控制、运动控制等。
RS-485:适用于多主机/驱动器工业环境。其典型应用与RS-422相似,包括:过程自动化(化工、酿造、造纸)、工厂自动化(汽车制造、金属加工)、HVAC、安防、电机控制、运动控制。
我们知道串口RS232有效传输距离为15米。我们播控中使用的录像机如DVCPRO、IMX控制接口有RS232、RS422多个接口供选择,如果使用pin9则为RS422接口,视频服务器编解码口控制都是RS422接口,只是插口为RJ45不是DB9的,需要转换线缆进行转换。因此我们在控制中根据以上特性可以灵活使用,我们由于主备控制切换的需要,以及距离的考虑统一选用RS422倒换开关进行倒换,控制RS422倒换开关的为RS232控制接口,这个直接由播控机本身的COM口来控制倒换开关进行倒换,其他控制录像机、切换台、视频服务器编解码卡使用MOXA卡扩展的RS422接口进入RS422倒换开关进行倒换。
嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行,下面就由福州卓跃教育做具体步骤介绍。
第一步,建立嵌入式Linux应用开发环境。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscompiler、WindRiverTornado、MicrosoftEmbeddedVisualC等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。
第二步,交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。
第三步,交叉调试。
①硬件调试。如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口,发送调试命令和接收调试信息,完成调试过程。目前,Motorola公司提供的开发板上使用的是DBM调试端口,而ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE类似的调试效果。
②软件调试。在嵌入式Linux应用开发系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debugstub),用作调试过程中和宿主机之间的通信服务器。然后,可以在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。
我们用一条交叉网线把NPort5110 和PC机的网口连接起来,并把NPort上电。
首先,打开控制面板,网络连接。
在本地连接上点右键,选择属性。
双击进入 Internet协议(TCP/IP),点击“使用下面的IP地址”
写入 IP 地址和子网掩码,记住要和NPORT 的IP 地址在同一子网段内。如NPORT 默认IP
为192168127254,2552552550;就需要把PC 机的IP 地址设为192168127XXX,
2552552550,最后一个数字不同即可。
点击确定。
第二章:网络和串口参数配置
搜索 NPort
打开NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。
网络参数配置
双击右边空白处的NPort 设备,会出现以下界面,点击选择Network 选项卡,点击Modify
修改。可以看到以下界面:
我们可以在里面修改NPort的以下参数:
IPAddress:IP地址。
Netmask:子网掩码。
Gateway:网关。
IP Configuration:可以配置为静态IP(Static),或者为DHCP(动态IP)。
DNS Server1和2:DNS,域名解析服务器。
串口参数配置
点击 Serial选项卡,点击Modify修改,双击端口进去,可以看到以下界面:
我们可以在里面修改以下参数:
Baud Rate:波特率,NPort5000 系列只能支持标准波特率,如9600,115200bps 等。
Parity:校验。
None:无校验
Even:偶校验。
Odd:奇校验。
Space:空。
Mark:标志。
Data Bits:数据位。
Stop Bits:停止位。
Flow Control:流量控制。
None:无流量控制。
XON/XOFF:软件流控。
RTS/CTS:硬件流控。
FIFO:64bit先进先出,为了降低CPU负载,提高设备性能。可以选择Enable启用,或Disable
禁用。
Interface:可选择RS232,RS422,RS485 2线,或者RS485 4线。(NP5110 只能为RS232)
设置好后,点击OK,设置保存,设备重新启动。
第三章:操作模式设置
Real COM映射端口
打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。
双击右边的5110,选择Operating Mode选项卡,确认为Real COM模式:
点击左边的第四项:COM MAPPING,
再点击Add
点击“OK”,
点击“Apply”保存
点击“Yes”,点击“OK”。
这样,端口就映射好了。
TCP Server模式的设置(用软件)
打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此
时请确认网络防火墙已经关闭。
会搜索到我们的NPort5110,点击stop,停止搜索。如果打开防火墙,可以使用Search IP,
在下面选项框里输入NPort的IP地址,
点击 OK,就可以搜索到NPort设备。
双击右边的NP5110,切换到OperatingMode选项卡,点击Modify,双击进去。可以把模式
修改成TCP Server 模式。
里面的名词解释:
Local TCP Port:本地数据端口,指的是NP5110 的数据端口。
Command Port:NP5110 的命令端口。
Max Connection:最大连接数,也就是说同时最大可以有几台上位机采集到下面串口设备
的数据,NPort5000 系列最大是4 个,NPort6000 和CN2600 系列是8 个。
当最大连接数为2 或以上的时候,右边的选项Allow Driver Control 和Ignore Jammed IP会开
启。
Allow Driver Control:当最大连接数为2 或以上时,且此功能打开时,上位机A 需要以
4800bps打开串口,上位机B需要以9600bps打开串口,是可以的。如果此功能关闭,则波
特率需以固件中的设置一致。
Ignore Jammed IP:当最大连接数为2 或以上时,且此功能打开时,其中一台上位机A死
机,上位机B 依然可以正常接收数据。如果此功能关闭,则上位机B 也不能收到串口的数
据了。
iperf,具体要纤细直接去看文档,简单给列条测试:(TCP和UDP知只是两种传输数据的协议)。
TCP测试:
1、客户端执行:/iperf -c host -i 1 -w 1M,其中-w表示TCP window size,host需替换成服务器地址。
2、服务器执行:/iperf -s -i 1 -w 1M '这裏是指定windows如果是 iperf -s则windwos默认大小为8kbyte/s 。
扩展资料:
优势:稳定性。
Linux系统是众所周知最具稳定性的系统;事实上,以Linux系统的美国服务器用户在出现系统崩溃的反馈上比例非常少。这对于用户来说,特别是小型和中小型企业的用户特别有价值,因为服务器系统一旦崩溃对企业的业务会造成很大的影响。
与windows相比,Linux处理不运行的进程的能力远高于windows,因为正是这些进程影响了windows的稳定性的主要因素。
-linux服务器
我按下面这个配置成功了,你可以试下:
一、安装的前提条件
1确保安装了网卡并工作正常
使用命令
#ifconfig eth0
查看网卡状态,然后关闭ifdown eth0,注意一定要关闭ifdown eth0
2在系统中不要设置默认路由(网关),让ADSL拨号后自动获得
如果已经设置了默认路由,使用以下方法删除:
在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:
#/etc/rcd/initd/network restart
3已经安装了pppd软件包
如果存在文件 /usr/sbin/pppd,则说明已经安装了pppd;
如果未安装,从RedHatLinux 62安装光盘上安装ppp-2311-
4i386rpm这个软件包
二、安装PPPOE客户端软件
Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe 这个软件包。从http://wwwroaringpenguincom/pppoe/这个网站上,不仅可以下载
RedHat 62平台下的rp-pppoe的二进制软件包,而且可以下载源代码软件包。
1二进制软件包的安装:
A下载二进制软件包
http://wwwroaringpenguincom/pppoe/rp-pppoe-32-1i386rpm
B进行安装
以root执行:
#rpm -Uvh rp-pppoe-32-1i386rpm
2从源代码进行安装:
从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A下载源代码软件包
http://wwwroaringpenguincom/pppoe/rp-pppoe-32targz
B解压缩
#tar xvfz rp-pppoe-32targz
#cd rp-pppoe-32
C进行编译和安装
运行脚本
#/go
将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、配置PPPOE客户端软件
安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoeconf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:
#/usr/sbin/adsl-setup
当出现
>>> Enter your PPPoE user name :
输入ADSL帐号的用户名
当出现
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0
For Linux, it will be ethn, where 'n' is a number
(default eth0):
输入 eth0 ,这是ADSL相连的网卡的名字
当出现
>>> Enter the demand value (default no):
输入 no
当出现
>>> Enter the DNS information here:
输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
当出现
>>> Please enter your PPPoE password:
输入ADSL帐号的密码
当出现
>>> Choose a type of firewall (0-2):
输入 0 ,不使用防火墙
当出现
>>> Accept these settings and adjust configuration files (y/n)
如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。
四、启动PPPOE客户端软件
使用命令
/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现
Connected;
如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息
/usr/sbin/adsl-stop 关闭和ISP的连接
/usr/sbin/adsl-status 查看当前连接的状态
如果想在Linux系统启动时自动启动ADSL连接,输入以下命令
#chkconfig --add adsl
将在当前的运行级下加入ADSL的自启动脚本
五、测试
当连接成功后,使用命令
#ifconfig -a
在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。
使用命令
#netstat -nr
查看路由表信息,这时的默认路由应该是上面获得的IP地址。
如果没有默认路由,我们可以手动增加:
#route add default gw 上面获得的IP地址
使用命令
#nslookup wwwsinacomcn
如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器
最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
六、其它说明
1、RedHat Linux 71已经集成了rp-pppoe这个软件包,只不过版本有些低,如果你不在意版本高低,可以直接进行三后面的步骤。
2、以后要拔号上网时,只要:
ifdown eth0
ifup ppp0
/usr/sbin/adsl-start
如果问题能够再现,那么问题已经解决 80% 了。对于操作系统核心而言,如果有问题的再现方法,那么可以说是已经解决 99% 了。经常遇到的问题是系统可以正常运行一段时间,然后死机。如果不好再现问题,那么只有根据死机现场遗留的东西来进行分析了。
如果系统没有死干净,比如磁盘中断和文件系统是好的,那么也许能有日志信息保留在文件中,不过这样的好运气我是从来没有遇到过的。如果键盘中断还能响应 (按下Num Lock,可以看见键盘小灯亮灭),那么运气就算是足够好了,这时可以祭出 sysrq 大法,同时按下 Alt-Sysrq-T 获得进程系统堆栈信息,按下 Alt-Sysrq-M 获得内存分配信息,按下 Alt-Sysrq-W 获得当前寄存器信息。
linux/Documentation/sysrqtxt。另外,最好关闭终端的自动 blank 功能,这样系统死的时候至少能从屏幕上看到一些信息。设置方法是:
# echo 1 > /proc/sys/kernel/sysrq
# setterm -blank
这两个设置最好加到系统启动脚本中 (比如 /etc/rcd/rclocal),保证每次启动都能得到运行。
如果很不幸,键盘也死悄悄了,(更为不幸的是,这种情况很常见),那么也不是只有等死一个办法,这时可以用串口终端 (serial console)将系统信息发送
到另一台系统上,这样可以通过对这些信息分析来定位问题。设置方法如下:
准备工作
1 一台被监视的服务器,一台进行监视工作的PC。
2 一根串口直连线。
配置
1 在服务器上,加入一个新的 grub 项目,增加核心参数 "console=ttyS0 console=tty1",如:
kernel /boot/vmlinuz-2421-930AXsmp ro root=LABEL=/1 console=ttyS0
console=tty1
2 在服务器上,修改 /etc/sysconfig/syslog,加入 klogd 选项 "-c 7",保证更多内核信息得到输出。如:
KLOGD_OPTIONS="-x -c 7"
3 重新启动服务器
4 用串口直连线连接两台机器,测试:
1) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "echo hi > /dev/ttyS0",看在 PC 上是否有 "hi" 输出。
2) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "echo w > /proc/sysrq-trigger",看 PC 上是否有相应内核信息输出。
3) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "modprobe loop",看 PC 上是否有相应内核信息输出。
5 如果测试通过,那么在 PC 上运行:cat /dev/ttyS0 | tee /tmp/result
另外,也可以用 Windows 超级终端获得串口信息。
that’s it
此外,一些核心支持 LKCD, netdump 等调试功能,也可以一试。
剩下的,就只有靠经验和运气了,一般造成 Linux 系统死机的原因有:
系统硬件问题 (SCSI 卡,主板,RAID 卡,网卡,硬盘)
外围硬件问题 (终端切换器,网络)
软件问题
驱动 bug (去找更新的驱动试试)
核心系统 bug (去 LKML 上看看,或换个核心试试)
系统设置
0条评论