动手搭建centos下用heartbeat实现双机热备
- 格式:pdf
- 大小:125.86 KB
- 文档页数:2
双机热备+负载均衡线上方案双机热备+负载均衡线上方案(Heartbeat+DRBD+NFS+Keepalived+Lnmp)gotop对于网站服务器来说,可靠性之重要不用我多说,但要想做到可靠性一般需要昂贵的设备,这里最主要是就是数据同步用的共享磁盘了,磁盘柜+磁盘一共下来是20多万,这对于追求最高性价比的双机负载热备方案来说是极其不靠谱的,尤其是中小型企业,私有企业,一般经理是不会考虑这么高的成本的。
我们通常做都是四台服务器+一个磁盘柜子+千兆交换机,那么这个成本下来将近30万了,而且这个方案有个弊端就是存储依然存在单点故障,除非使用双控制+双电源+双主板设计的磁盘柜,但这种成本实在太高。
那是否有更为廉价的双机方案呢,很明显开源软件帮我们解决了成本问题!!!用Heartbeat+DRBD+NFS+Keepalived+Lnmp 等开源软件实现双机负载热备架构只需要两台服务器+一台全千兆交换机,这个成本是极其低廉的,我们做运维了就是要用技术来压榨硬件性能,用最低的成本实现最高的效能,不然天天谈论的性能优化有何用?堆叠硬件不是更好?那不是我们的目的,下面我们来看看这两台服务器的双机热备+负载均衡是如何实现并且稳定运行的。
这个方案是我给一个论坛做的,论坛15分钟在线8000人,以前放在IIS里面,并发连接6000-7000左右,我给设计的双机热备方案如下图:图一2011-10-1211:43:32上传下载附件(62.41KB)注意:第三台服务器可要可不要,我这里他由于成本问题,并没有采用第三台服务器,而是一共只有两台系统环境配置一,硬件配置:节点一(centosa):做主负载点,和主数据库压力负载点,必须高性能高稳定高I/O配置如下:CPU:双CPU(4核+4核)5405级别内存:8G组三通道DDR3ECC内存硬盘:1块1TB普通硬盘+2块300GSAS15K(15000转)硬盘网卡:2块千兆网卡节点二(centosb):做分担负载和备服务器,稳定第一CPU:双CPU(4核+4核)5405内存:8G组三通道DDR3ECC内存硬盘:1块1TB普通硬盘+3块300GSAS15K(15000转)硬盘网卡:2块千兆网卡注意:网卡极力建议用四块,这个架构对网络I/O要求极高,我这里只有两块,没办法,机房做不到,如果你是百兆交换机,拜托,你一定要用四块网卡二,操作系统配置1),所有服务器的操作系统版本:操作系统版本:CentOS5.764位操作系统官方下载地址:/centos/5/isos/x86_64/2),每台服务器的安装要求:节点一:分区:一共三块硬盘,不用组RAID第一块硬盘:系统占用一块,分区情况如下:/boot200MB/40GBswap交换分区8GB/data第一块硬盘的所有剩余空间第二块硬盘:不要分区,留给我自己分区第三块硬盘:不要分区,留给我自己分区系统安装安装规范最小化安装,字符界面安装去掉所有组件,只需要一个内核节点二:分区:一共三块硬盘,不用组RAID第一块硬盘:系统占用一块,分区情况如下:/boot500MB/40GBswap交换分区16GB/data第一块硬盘的所有剩余空间第二块硬盘:不要分区,留给我自己分区第三块硬盘:不要分区,留给我自己分区系统安装要求最小化安装,字符界面安装去掉所有组件,只需要一个内核三,交换机配置:注意:有条件最好用两台交换机,内网一台,外网一台如果只有一台交换机,划分两个VLAN,一个外网使用,一个内网使用四,目录规划用途/usr/local/src/lnmp:用来存放源码工具等等/data:用来存放所有数据和NFS以及DRBD的挂载/data/shell:用来存放所有管理脚本/data/mysql:用来挂载DRBD的mysql资源,以供mysql存放数据库/data/wwwnfs:用来挂载DRBD生成的www资源,以供两个节点挂载到各个节点的/data/www目录,以供论坛等程序数据使用/data/www:用来挂载NFS资源,用来存放论坛(网站)等程序数据双机热备+负载均衡具体配置一,先建立用户和目录吧:useradd-s/sbin/nologinwwwuseradd-s/sbin/nologinmysqlmkdir-p/dat a/mysqlmkdir-p/data/wwwmkdir-p/data/wwwnfsmkdir-p/data/shell 二,架构详解如果用LVS做均衡器拓扑图如下:图二2011-10-1212:18:52上传下载附件(158.59KB)如果用Nginx做均衡器拓扑图如下:图三2011-10-1212:27:51上传下载附件(184.31KB)我们这里用NGINX做均衡器,因此我用图三来拓扑,来讲讲这个拓扑的工作原理内网:1,DRBD网络存储创建出两个资源,一个mysql给mysql数据库同步用,一个www给web(论坛)数据NFS共享挂载用,虚拟出两个虚拟IP,一个是192.168.1.100,用来连接数据库,一个是192.168.1.200,用来给节点挂载NFS注意:NFS底下挂载了三次:DRBD挂载一次,文件系统挂载一次,客户端挂载一次2,Heartbeat来实现DRBD 的HA,同时虚拟出两个内网IP,并管理NFS,MySQL的启动和关闭外网:1,两个节点都用Nginx做均衡器,通过内网调度负载两个节点,实现内部均衡2,DNS配置双IP对应一个域名的方式来实现DNS轮询,实现外网均衡3,Keepalived使用双主(master)配置虚拟出两个虚拟IP:节点一12.12.12.100和节点二12.12.12.200,同时共外网访问,两个节点互为主从关系,当某个节点挂掉的时候,另外一个节点将同时是两个资源的master,同时拥有两个虚拟IP,实现资源转移我们知道DNS的缺点就是生效慢,分配资源不合理,理论上有可能把所有的请求都发送给同一节点,导致均衡不合理导致所有资源不可用,这里我们由于有了NGINX内部负载,就不怕DNS轮询不均衡了,因为NGINX 内部有严谨的调度方式,不管那台请求有多少,在内部都能实现理想的调度,这样就能把DNS负载均衡和NGINX完美结合,是硬件资源得到合理的利用,然后利用keepalive保证了每个节点的可靠性,几乎完美!三,LNMP架构配置两台服务器的一样配置这个我请看我发的这个帖子:注意一:这里MYSQL都不要初始化,不要启动!后面有专门的配置的注意二:nginx所有端口都改成8080,因为一会还要安装nginx来做均衡器并对外提供服务,所以不要用默认的80四,安装配置NFS兵马未动粮草先行,NFS是网站存放数据实现数据同步的基础,我们先安装上吧1,安装:服务器端要安装:nfs-utils:NFS主程序portmap:RPC 主程序客户端要安装:nfs-utils:NFS主程序portmap:RPC主程序由于我们这里一共只用了两台服务器,所以,这里客户端和服务器段是同一台机器,这点要注意了两个节点同时安装:1.yum-yinstallportmapnfs-utils复制代码2,配置:生存共享目录vi/etc/exports输入:1./data/wwwnfs192.168.1.0/24(rw,sync,anonuid=501,anongid=501)复制代码注意:/data/wwwnfs:就是给两个节点挂载的目录,所有网站程序都放在这里,实现论坛程序等数据的共享(同步)anonuid=501,anongid=501:这个表示客户端上任何用户进入到挂载目录都以uid=501和gid=501身份,我这里这个代表的是www用户3,启动:serviceportmapstartservicenfsstart切忌,必须先启动portmapchkconfig--level0123456nfsoffchkconfig--level0123456port mapon注意:portmap服务器必须常驻,且不收heartbeat管理;而nfs这必须要用heartbeat来管理他的启动和关闭,所以这里要关闭nfs开机自动启动同时要启动锁机制,因为同时有两个节点要使用同一份数据,所以需要有总裁,这个尤其是在NFS给mysql 用的时候是必须要用的,对于论坛或网站,要看情况,如果存在对同一文件同时修改的时候必须要启动NFS锁机制,如果没有这种情况,那么建议不要启动,启动了会降低NFS的性能:/sbin/rpc.lockdecho“/sbin/rpc.lockd“/etc/rc.local4,建立NFS的管理脚本有人奇怪了,nfs用RPM安装的,应该直接用servicenfsstart/stop即可啊,维护还要建立脚本呢,这里由于NFS 的启动关闭权要交给heartbeat处理,而默认/etc/init.d/nfs这个启动脚本在heartbeat处理的时候有问题,所以这里自己建立了一个vinfs输入:1.#!/bin/bash2.3.NFSD=/etc/rc.d/init.d/nfs4.NFSDPID=`/sbin/pidofn fsd`5.case$1in6.start)7.$NFS Dstart;8.;;9.stop)10.$NFSDstop;11.if[“$NFSDPID“!=““];then12.forNFSPIDin$NFSDPID13.do/bin/kill-9$ NFSPID;14.done15.fi16.;;17.*)18.echo“Syntaxincorrect.Youneedon eof{start|stop}“19.;;20.esac复制代码wq保存退出chmod+xnfsOK,NFS服务器端配置完毕。
双机热备安装部署方案(heartbeat 3.x +pacemaker)by——商胜前言双击热备用一句通俗易懂的话来说就是避免服务器因临时故障而导致服务中断的一种备份技术,这也就是所谓的高可用性。
本文主要是用heartbeat来针对resin下的服务做服务热备。
例如,在resin下现有三个服务server1 、server2 、server3 以及访问这三个服务的虚拟ip——vip:10.3.255.36 。
现在的需求是要保证这三个服务的高可用性,即当三个服务中的任何一个宕掉了以后,heartbeat首先要做的是判断这些服务是否有故障的,如果存在有故障的服务,heartbeat首先会在本机重启该故障服务,一旦该服务无法启动,则停止本机的server1、server2 、server3,切换虚拟ip到从机并在从机上启动这三个服务。
一.测试环境搭建测试环境说明:操作系统:Red Hat Enterprise Linux Server release 5.4 (Tikanga) 64位操作系统Heartbeat版本:heartbeat-3.0.3-2 附录中有heartbeat简介以及版本说明操作系统配置主服务器备用服务器主机名HB_Node01 HB_Node02Ip Eth0: 10.3.43.99Eth1: 192.168.254.12 Eth0: 10.3.43.99Eth1: 192.168.254.12vip 10.3.43.101(由heartbeat中生成)添加用户、用户组添加用户:hacluster useradd -M hacluster添加用户组:haclient groupadd haclient并且hacluster 属于用户组haclient usermod -G haclient hacluster主机名配置方式:设置主机名[root@localhost ~]# hostname HB_Node01[root@localhost ~]# vi /etc/hosts[root@localhost ~]# vi /etc/sysconfig/networkIp配置方式配置ip[root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 [root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1(这里给出的是命令行配置方式,也可以进入图形界面进行配置)注意的问题:配置外网ip时配置默认网关,但在配置heartbeat1之间通信的ip时网关不要配置,因为这里再配置网关则会覆盖之前配置的默认网关导致通信异常。
系统环境:************************************************************两台服务器都装了 CentOS-5.2-x86_64 系统,安装了 Squid 服务。
Virtual IP : 192.168.30.20Squid1+Real Server 1 :网卡地址 (eth0):192.168.30.12Squid2+Real Server 2 :网卡地址 (eth0):192.168.30.13************************************************************软件列表:keepalived/software/keepalived-1.1.17.tar.gz openssl-develyum install openssl-devel***************************************************************配置:配置基于高可用 keepalived, 确定 LVS 使用 DR 模式1. 安装配置 keepalived1.1 安装# yum install openssl-devel ;安装 keepalived 依赖软件#ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux ;建立内核链接,编译 keepalived 支持 lvs 时需要#tar zxvf keepalived-1.1.17.tar.gz#cd keepalived-1.1.17#./configure --prefix=/usr --sysconf=/etcKeepalived configuration------------------------Keepalived version : 1.1.17Compiler : gccCompiler flags : -g -O2Extra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : Yes ; 注意编译时一定要支持 lvsIPVS sync daemon support : YesUse VRRP Framework : YesUse LinkWatch : NoUse Debug flags : No#make#make install1.2 编辑 keepalived 配置文件#Vi /etc/keepalived/keepalived.confglobal_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址如果有多个VIP,继续换行填写}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo rr #lvs 算法lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}1.3 BACKUP 服务器同上配置,先安装 lvs 再按装 keepalived, 仍后配置 /etc/keepalived/keepalived.conf ,只需将红色标示的部分改一下即可 .global_defs {notification_email {test@}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUPinterface eth0 # HA 监测网络接口virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 2 # VRRP Multicast 广播周期秒数authentication {auth_type PASS #VRRP 认证方式auth_pass 1111 #VRRP 口令字}virtual_ipaddress {192.168.30.20 # VRRP HA 虚拟地址}}virtual_server 192.168.30.20 80 {delay_loop 2 # 每隔 6 秒查询 realserver 状态lb_algo rr #lvs 算法lb_kind DR # Direct Routepersistence_timeout 50 # 同一IP 的连接60 秒内被分配到同一台realserver protocol TCP # 用 TCP 协议检查 realserver 状态real_server 192.168.30.12 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.30.13 80 {weight 3 #(权重)TCP_CHECK {connect_timeout 10 #(10秒无响应超时)nb_get_retry 3delay_before_retry 3connect_port 80}}}2. 配置虚地址 : vi /etc/sysconfig/network-scripts/ifcfg-lo 添加DEVICE=lo:0IPADDR=192.168.30.20NETMASK=255.255.255.255ONBOOT=yesNAME=loopback3. 关闭 RealServer 的 ARP ,或者编辑 /etc/sysctl.conf, 修改系统变量net.ipv4.conf.eth0.arp_ignore=1net.ipv4.conf.eth0.arp_announce=1net.ipv4.ip_forward = 1#sysctl –p :使配置生效4. 启动 keepalived 服务#service httpd start#/etc/init.d/keepalived start查看keepalived的安装位置:# find / -name keepalived将keepalived作为服务添加到chkconfig中,并设置开机启动# chkconfig --add keepalived# chkconfig --level 35 keepalived on# chkconfig --list keepalivedkeepalived 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭“各等级”包括2、3、4、5等级等级0表示:表示关机等级1表示:单用户模式等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式等级6表示:重新启动5. 测试 lvs 服务是否正常5.1 通过浏览器访问http://192.168.30.20是否正常多次刷新浏览器,在主 LVS 上看连接数变化5.2 停止主 LVS 上的 keepalived 看看备份 keepalived 是否正常接管服务注:realserver如果为windows主机的话需要安装microsoft loopback,设置IP为VIP 确认之后搜索注册表,关键字"VIP"把搜到结果的每项里面的subnet mask都改成255.255.255.255然后重启即可。
有两台服务器如何做双机热备双机热备是一种常见的服务器配置方式,可以提高系统的可用性和容错性。
通过配置两台服务器,当其中一台服务器出现故障时,另一台服务器可以立即接管工作,确保系统的连续性和稳定性。
本文将介绍如何进行双机热备配置,以及配置过程中需要注意的问题。
一、双机热备的基本原理双机热备的基本原理是将两台服务器配置为主备关系。
其中一台服务器作为主服务器(Master),负责处理用户请求和业务逻辑;另一台服务器作为备服务器(Backup),处于待命状态,等待接管主服务器的工作。
主备服务器之间通过网络进行通信,保持数据的同步和一致性。
二、双机热备的配置步骤1. 确定主备服务器的角色和IP地址:首先需要确定哪台服务器将担任主服务器,以及每台服务器的IP地址。
主服务器通常配置为具备更高性能的服务器,而备服务器则配置为相对较低性能的服务器。
2. 安装并配置操作系统:在两台服务器上安装并配置相同版本的操作系统,确保操作系统的版本和配置相同,以保证数据的一致性。
常见的操作系统包括Windows Server和Linux等。
3. 安装并配置数据库和应用程序:根据实际需求,在主备服务器上安装并配置相同版本的数据库和应用程序。
数据库和应用程序的版本、配置和数据结构需要保持一致,以确保数据的同步和一致性。
4. 配置网络和通信:配置主备服务器之间的网络和通信,确保主备服务器可以相互通信并进行数据同步。
可以使用局域网(LAN)或广域网(WAN)进行通信,常见的网络通信协议包括TCP/IP等。
5. 配置双机热备软件:选择并安装适用于双机热备的软件,常见的软件包括Heartbeat、Keepalived和Pacemaker等。
这些软件可以监控主服务器的运行状态,一旦主服务器发生故障,备服务器可以立即接管。
6. 测试和验证:在配置完成后,进行测试和验证,确保主备服务器能够正常工作。
可以模拟主服务器宕机的情况,观察备服务器是否能够顺利接管,并能够继续处理用户请求和业务逻辑。
当前大多网站采用Linux +MYSQL+APACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。
对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。
最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。
MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,给出一个简单实用的方案借鉴。
本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群,同时使用Heartbeat也可以实现简单的web集群。
二、实现原理通过Linux HA 软件heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。
通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。
所需硬件:安装有双网卡的配置大致相同的服务器或工作机两台一条交叉网线(用于双机对连的心跳线)Linux HA 软件heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm包软件主页:[url]/[/url]Mysql软件软件主页:[url]/[/url]安装步骤:1、安装MYSQL#cd /opt#useradd mysql -d /usr/local/mysql -s /sbin/nologin#tar -zxvf mysql-5.1.29-rc.tar.gz#cd mysql-5.1.29-rc# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=gbk--with-collation=gbk_chinese_ci --with-extra-charsets=all--with-pthread --enable-thread-safe-client --enable-assembler--without-isam --without-innodb --without-ndb-debug --with-mysqli #make && make install#/usr/local/mysql/bin/mysql_install_db //初始化数据库#chown -R mysql.mysql /usr/local/mysql/ //设置目录宿主#cp /usr/local/mysql/share/mysql/f /etc/f //复制配置文件#cp support-files/mysql.server /etc/rc.d/init.d/mysqld //设置启动文件#chmod 700 /etc/rc.d/init.d/mysqld#/usr/local/mysql/bin/mysqld_safe --user=mysql &#/etc/rc.d/init.d/mysqld start在启动mysql时报错查看日志发现以下错误:将/etc/f文件中的skip-federated注释掉即可#chkconfig --add mysqld#chkconfig --level 2345 mysqld on#ln -s /usr/local/mysql/bin/mysql /sbin/mysql#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin#mysqladmin –u root password 1q2w3e //设置root 密码#配置库文件搜索路径#echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf#ldconfig#添加/usr/local/mysql/bin到环境变量PATH中#export PATH=$PATH:/usr/local/mysql/binmysqlB也按以上的方式进行安装2、mysqlA设置设置同步数据库:在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:#mysql –u root –p1q2w3emysql> create table data(name VARCHAR(20), address VARCHAR(50), phoneVARCHAR(20));mysql>insert into data(name,address,phone) values('jhone','beijing','138000000'); mysql>select * from data;设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.2' IDENTIFIED BY 'qawsed';(授与从10.0.0.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.2 IDENTIFIED BY 'qawsed';) mysql>flush privileges;修改配置文件:停止mysql服务[root@mysqlA opt]#service mysqld stop建立用于更新日志的目录,并给于mysql的权限[root@mysqlA opt]# mkdir /var/log/mysql[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/更改Mysql配置文件/etc/f[root@mysqlA opt]# vi /etc/fserver-id=1 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.2 //指定主服务器IPmaster-user=backup //指定在主服务器上可以同步的帐号master-password=qawsed //指定帐号对应的密码master-connect-retry=60 //断点重试间隔为60秒replicate-do-db=test //表示同步test数据库binlog-ignore-db=mysql //不同步mysql数据库把test进行备份[root@mysqlA opt]# service mysqld start //先启动mysql[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql[root@mysqlA opt]#scp test.sql root@10.0.0.2:/opt //(将test.sql 复制到mysqlB的/opt目录下)至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB设置mysqlB设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.1' IDENTIFIED BY 'qawsed';(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.1 IDENTIFIED BY 'qawsed';) mysql>flush privileges;修改配置文件:停止mysql服务[root@mysqlA opt]#service mysqld stop建立用于更新日志的目录,并给于mysql的权限[root@mysqlA opt]# mkdir /var/log/mysql[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/更改Mysql配置文件/etc/f[root@mysqlA opt]# vi /etc/fserver-id=2 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.1 //指定主服务器IPmaster-user=backup //指定在主服务器上可以同步的帐号master-password=qawsed //指定帐号对应的密码master-connect-retry=60 //断点重试间隔为60秒replicate-do-db=test //表示同步test数据库binlog-ignore-db=mysql //不同步mysql数据库还原从mysqlA备份过的test.sql#service mysqld start# mysql -u root -p1q2w3e test <test.sql重启两边的mysql服务查询配置Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.在Mysql中可通过以下命令来查看主从状态show master status 查看master状态show slave status 查看slave状态show processlist G 查看当前进程stop slave 暂时停止slave进程start slave 开始slave进程在primary服务器上MySQL命令符下输入:mysql>show master status;mysql>show slave status\G;如果出现以错误:解决办法:在/etc/f 的[mysqld]下面加上replicate-same-server-id 参数到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上安装配置heartbeat:Heartbeat下载地址如下:[url]/repositories/server:/ha-clusterin g:/lha-2.1/CentOS_5/i386/[/url]下载对应的版本,在此我的系统是centos 5.2rpm -ivh libnet-1.1.2.1-2.1.i386.rpmrpm -ivh heartbeat-pils-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-stonith-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-devel-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-ldirectord-2.1.4-2.1.i386.rpmrpm -ivh ipvsadm-1.24-8.1.i386.rpm配置HA的各配置文件:复制配置文件[root@mysqlA opt]# cp/usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/[root@mysqlA opt]# cp/usr/share/doc/packages/heartbeat/haresources /etc/ha.d/[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/配置心跳的加密方式:authkeys[root@mysqlA opt]#vi /etc/ha.d/authkeys#如果使用双机对联线(双绞线),可以配置如下:auth 11 crc#存盘退出,然后[root@mysqlA opt]#chmod 600 authkeys配置心跳的监控:haresources[root@mysqlA opt]#vi /etc/ha.d/haresources#各主机这部分应完全相同。
Heartbeat双机互备可行方案一、文档说明本文档,设计了heartbeat提供对外的VIP(虚拟IP),当主服务器down机后,从服务器通过心跳检测到主服务器down机后,会启动本机的heartbeat服务,VIP将会自己转移到从服务器,当主服务器处理好后,通过从心跳监测,自动把VIP移回到主服务器。
二、网络拓朴Matesr Slave注释:公网接入:主从服务器通过公网通信心跳连线:主从服务器通过专用网络通信,专用网络可用以太网的交叉线连接,也可用串口连接监测。
VIP:集群通过VIP与公网通信,主从通过公网网卡上邦定虚拟地址(VIP)实现。
三、Heartbeat工作原理Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
(一)用户与主服务器正常通信(二)主从服务器通过心跳专线监测彼此是否正常(三)如果主服务器的公网失效或服务器DOWN机,从服务器通过心跳监测后,启动设定服务并接管主服务器对外的网络资源(VIP)(四)用户与从服务器通信(从机在几秒或几十秒内接管主服务器)(五)主服务器恢复后(重起或修复等)可以重新接管网络资源。
四、安装配置及调试Heartbeat集群(一)安装前环境设定两台主机硬件环境(不必完全一致)(二)安装前网络环境设定node1: 主机名:Master ( HAM )eth0: 10.0.0.5 //对外通信IP地址eth1: 172.16.0.5 //心跳使用地址node2: 主机名:Slave ( HAS )eth0: 10.0.0.6 //对外通信IP地址eth1: 172.16.0.6 //心跳使用地址VIP:10.0.0.7 //集群对外提供服务的地址,浮动IP注意要检查以下几个文件:/etc/hosts/etc/host.conf/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1#vi /etc/hostsnode1与node2的hosts内容相同如下(hosts文件的修改必需在heartbeat安装前):127.0.0.1 localhost.localdomain localhost10.0.0.5 Master172.16.0.5 HAM172.16.0.6 HAS10.0.0.6 Slave#cat /etc/host.conforder hosts,bind#cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=Master //主机名GATEWAY="10.0.0.1" //网关GATEWAY="eth0" //网关使用网卡ONBOOT=YES //启动时加载FORWARD_IPV4="yes" //只允许IPV4#cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=10.0.0.5NETMASK=255.0.0.0GATEWAY=10.0.0.1TYPE=Ethernet#cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesIPADDR=172.16.0.5NETMASK=255.255.0.0TYPE=Ethernet[node1] 与[node2] 在上面的配置中,除了/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1要各自修改外,其他一致。
Heartbeat配置安装手册一、实验目的利用heartbeat搭建双服务器热备份高可用群集。
二、实验环境两台linux服务器,双网卡。
server1: eth0:10.0.0.1 (作为心跳线)eth1:192.168.253.129server2:eth0:10.0.0.2(作为心跳线)eth1:192.168.253.130虚拟IP : 192.168.253.200三、修改/etc/hosts文件1、在server1上加入以下内容:10.0.0.1 server110.0.0.2 server22、在server2上加入以下内容:10.0.0.2 server210.0.0.1 server1注:保证uname –n 的返回结果分别为server1与server2。
四、安装heartbeat之前请先安装libnet(两台服务器都安装)#tar -zxvf libnet.tar.gz#cd libnet#./configure#make && make install五、安装heartbeat(两台服务器都安装)1、两个node分别创建heartbeat相关的用户和组#groupadd haclient#useradd -g haclient hacluster2、安装heartbeat#tar -zxvf heartbeat-2.1.3.tar.gz#cd heartbeat-2.1.3#./ConfigureMe configure#make && make install3、复制配置文件#cp doc/ha.cf /etc/ha.d/#cp doc/authkeys /etc/ha.d/#cp doc/haresources /etc/ha.d/4、编辑/etc/ha.d/ha.cf1、server1上面[root@server1 ~]# cat /etc/ha.d/ha.cf | grep -v '#'logfile /var/log/ha-loglogfacility local0keepalive 2deadtime 20warntime 5initdead 120udpport 694ucast eth0 10.0.0.2auto_failback onnode server1node server2ping 192.168.253.254hopfudge 1deadping 302、server2上面[root@server2 ~]# cat /etc/ha.d/ha.cf | grep -v '#'logfile /var/log/ha-loglogfacility local0keepalive 2deadtime 20warntime 5initdead 120udpport 694ucast eth0 10.0.0.1auto_failback onnode server1node server2ping 192.168.253.254hopfudge 1deadping 305、编辑/etc/ha.d/authkeys(两台服务器一样)1、开放以下两项[root@server1 ~]# cat /etc/ha.d/authkeys | grep -v '#'auth 11 crc2、更改authkeys权限#chmod 600 /etc/ha.d/authkeys6、编辑/etc/ha.d/haresources,加入以下内容(两台服务器一样)[root@server1 ~]# cat /etc/ha.d/haresources | grep -v '#'server1 IPaddr::192.168.253.200/24/eth1 mysqld 注:mysqld为mysql的运行脚本六、启动heartbeat#/etc/init.d/heartbeat start 或者#service heartbeat start 启动两台服务器上的heartbeat。
Nginx+keepalived+heartbeat双机热备份配置手册正文目录1 双机热备简介 (3)2 双机热备安装与配置 (4)2.1 安装环境和软件版本说明 (4)2.2 系统安装 (4)2.3 JDK环境安装配置 (4)2.4 MYSQL安装配置 (6)2.4.1 基本安装配置 (6)2.4.2 数据库双机互备 (7)2.5 反向代理服务器NGINX的安装配置 (9)2.6 KEEPALIVED安装配置 (13)2.7 HEARTBEAT的安装配置 (15)2.8 APACHE-TOMCAT安装配置 (18)3 CENTOS下安装配置的改动 (20)3.1 NGINX (20)3.2 KEEPALIVED (23)3.3 HEARTBEAT (26)3.4 添加SHELL脚本 (29)1 双机热备简介双机热备及负载均衡配置图如下所示2 双机热备安装与配置2.1 安装环境和软件版本说明系统:Linux Ubuntu 10.10JDK环境:jdk-6u31-linux-i586方向代理服务器Nginx:nginx-0.7.67探测服务器状态软件Keepalived:keepalived-1.1.17Web服务器:Apache-tomcat:apache-tomcat-6.0.35数据库MySQL:mysql-5.1.612.2 系统安装2.3 JDK环境安装配置1 、安装jdk 程序最新版本jdk: jdk-6u31-linux-i586.bin进入usr 目录: cd /usr在当前目录创建目录java : mkdir java将jdk 安装文件复制到java 目录下:cp /usr/software/ jdk-6u31-linux-i586.bin /usr/java给安装程序赋予权限:chmod +x jdk-6u31-linux-i586.bin 执行安装命令:./ jdk-6u31-linux-i586.bin安装成功后,在java 目录下会出现jdk1.6.0_31 的目录。
两台主机的eht1使用双机对联线直接连接。
分区方式:Filesystem 容量挂载点/dev/sda2 9.7G //dev/sda6 45G /Datas/dev/sda1 99M /bootnone2.0G /dev/shm/dev/sda3 9.7G /opt另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。
操作系统:CentOS5.4 i386【二】安装前网络环境设定:======================================================== node1: 主机名:servers201 ( HA01 )eth0: 192.168.10.201 //对外IP地址eth1: 10.0.0.201 //HA心跳使用地址node2: 主机名:servers202 ( HA02 )eth0: 192.168.10.202 //对外IP地址eth1: 10.0.0.202 //HA心跳使用地址特别注意要检查以下几个文件:/etc/hosts/etc/host.conf/etc/resolv.conf/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1/etc/nsswitch.conf#vi /etc/hostsnode1的hosts内容如下:127.0.0.1 localhost.localdomain localhost192.168.10.201 servers201 HA0110.0.0.201 HA0110.0.0.202 HA02192.168.10.202 server202node2的hosts内容如下:127.0.0.1 localhost.localdomain localhost192.168.10.202 servers202 HA0210.0.0.202 HA0210.0.0.201 HA01192.168.10.201 server201#cat /etc/host.conforder hosts,bind#cat /etc/resolv.confnameserver 61.139.2.69 //DNS地址#cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=servers201 //主机名GATEWAY="192.168.10.1" //网关GATEWAY="eth0" //网关使用网卡ONBOOT=YES //启动时加载FORWARD_IPV4="yes" //只允许IPV4#cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.10.201NETMASK=255.255.255.0GATEWAY=192.168.10.1TYPE=EthernetIPV6INIT=no#cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneIPADDR=10.0.0.201NETMASK=255.255.255.0TYPE=Ethernet[node1] 与[node2] 在上面的配置中,除了/etc/hosts/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1要各自修改外,其他一致。
动手搭建centos下用heartbeat实现
双机热备
#和从服务器名称不能相同
ip:10.0.0.211
心跳地址:100.0.0.211 #提供给心跳服务使用的,用来检控服务器运行状态
备份服务器:
系统:centos
主机名称: #和主服务器名称不能相同
ip:10.0.0.212
心跳地址:100.0.0.212 #提供给心跳服务使用的,用来检控服务器运行状态
注:每太服务器需要有两块网卡;心跳地址是心跳服务用来检控服务器运行状态使用的,心跳地址随意写,只要符合规范就行,网关、子网掩码不用写,用在两块网卡之间的通信只有ip就够了,并且和其它ip不会冲突。
服务器配置完毕后需要设置以下文件:
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0 # 主网卡
/etc/sysconfig/network-scripts/ifcfg-eth1 # 心跳检测的网卡
sev1与sev2主机下/etc/hosts内容的配置相同:
1 # Do not remove the following line, or various programs
文章来源于:/article-22845-1.html。