您的位置:首页 > 运维架构 > Linux

使用keepalived实现双机热备

2015-06-29 11:13 645 查看
使用keepalived实现双机热备

通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。

一、安装必要软件
yum install openssl*
yum install gcc
gcc -v
yum install ipvsadm.x86_64
yum install popt* -y
yum install libnl* -y   #libnl套件是一个库的集合为基础的Linux内核提供的API接口
netlink协议。

二、在主备机器上安装keepalived
步骤如下:下载keepalived-1.1.15.tar.gz,然后解压安装
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure
#make

#make install

三、创建软链接
ln -s /usr/src/kernels/2.6.32-504.23.4.el6.x86_64/
/usr/src/linux #

四、设置开机自动启动服务
自动安装目录在 /usr/local 可以改  ./configure --prefix+新路径

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
service keepalived start

五、配置主配置文件
配置keepalived
配置中的state MASTER决定了节点为主节点
priority决定了优先级,比如在有多个备用节点的时候,主节点故障后优先级值大的接管
vim /etc/keepalived/keepalived.conf
global_defs {                  
     #全局变量
       router_id haweb_1         
       }
vrrp_sync_group VGM {         #vrrp组名
       group {
       VI_HA
       }
}
vrrp_script chk_http_port {    #监测httpd服务进程是否开启
     script "killall -0 httpd"
     Interval 1
}
vrrp_instance VI_HA {
      state MASTER              
  #设置主服务器   辅助SLAVE  单向不同步BACKUP
      interface eth0            
     #监测网络接口
      lvs_sync_daemon_inteface eth0
 
      virtual_router_id 22       #虚拟路由器的ID号,每个热备组保持相同
      priority 100              
     #权值大小 决定主辅
      advert_int 5              
     #心跳间隔
      authentication {          
   #本VRRP组的认证信息
          auth_type PASS        
 #VRRP认证方式,主备必须一致  
          auth_pass wangning
          }
      virtual_ipaddress {      
   #虚拟ip或接外网的ip地址
          192.168.1.28/24 dev eth0
          }

      track_script {            
      #执行这个 chk_http_port脚本
          chk_http_port
          }
}
六、测试问题
1、开启服务后,主得vip,关闭主keepalived服务,辅得vip。
2、在开启主keepalived服务,经过5秒心跳间隔,vip回主。
3、关闭主httpd服务,辅得vip,开启主httpd服务,主不得vip,主重启keepalived服务,得vip。

七、主配置文件实例
MASER
keepalived.conf 
global_defs {
       router_id haweb_1
       }
vrrp_sync_group VGM {
       group {
       VI_HA
       }

vrrp_script chk_http_port {
     script "killall -0 httpd"
     Interval 1
}

vrrp_instance VI_HA {
      state MASTER  #slave
      interface eth0
      lvs_sync_daemon_inteface eth0
      virtual_router_id 51
      priority 100  #90
      advert_int 5
      authentication {
          auth_type PASS
          auth_pass zhangbin
          }
      virtual_ipaddress {
          192.168.0.20/24 dev eth0
          }

      track_script {

          chk_http_port

          }

}
SLAVE
keepalived.conf 
global_defs {
       router_id haweb_1
       }
vrrp_sync_group VGM {
       group {
       VI_HA
       }
}
vrrp_script chk_http_port {
     script "killall -0 httpd"
     Interval 1
}
vrrp_instance VI_HA {
      state SLAVE  
      interface eth0
      lvs_sync_daemon_inteface eth0
      virtual_router_id 22
      priority 90
      advert_int 5
      authentication {
          auth_type PASS
          auth_pass 521521
          }
      virtual_ipaddress {
          192.168.1.28/24 dev eth0
          }

      track_script {
          chk_http_port
          }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息