前言:Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

准备工作:

 yum install keepalived httpd

 iptable -F

 setenforce 0

实验:高可用的ipvs集群示例

vim  /etc/keepalived/keepalived.conf  

! Configuration File for keepalived 
global_defs {
    notification_email { 
    root@localhost   # 邮箱
  } 
  notification_email_from  keepalived@localhost  # 邮箱
  smtp_server 127.0.0.1    # smtp服务
  smtp_connect_timeout 30  # 延时
  router_id  xdg1 # 路由标识
  vrrp_mcast_group4  224.100.100.48  # 组播地址 
}
vrrp_instance VI_1 {  
  state MASTER  # 主模式
  interface eth0  # 监听的网卡
  virtual_router_id  99  # 虚拟路由标识
  priority 100  # 优先级
  advert_int 1  # 通行间隔时间 1s
  authentication {  # 预共享密钥认证
    auth_type PASS 
    auth_pass 1111
  } 
  virtual_ipaddress {  # 虚拟的ip地址
    172.16.0.10/16 dev eth0
  } 
}
virtual_server 172.18.48.48 80 {   # vip的地址、端口
  delay_loop 3 # 健康检查时间间隔
  lb_algo wrr  # 基于权重的轮询模式 
  lb_kind DR   # lvs-dr模式
  protocol TCP  # 基于TCP协议
  sorry_server 127.0.0.1 80  # 全都出错时,返回本地的页面
  real_server 172.18.48.100  80 {  # RS服务器1
    weight 1    # 权重
    HTTP_GET {  # 基于HTTP_GET的检测
      url { 
       path / # 要监控的URL
       status_code 200 # 检测为健康状态的响应码
      } 
    connect_timeout 1   # 连接请求的超时时长 
    nb_get_retry 3  # 重试次数 
    delay_before_retry 1  # 重试之前的延迟时长
    } 
  }
  real_server 172.18.48.200  80 { # RS服务器2
    weight 1 
    HTTP_GET { 
      url { 
       path / 
       status_code 200
      } 
    connect_timeout 1 
    nb_get_retry 3 
    delay_before_retry 1
    } 
  }
}

在RS服务器还要配置VIP地址,因为是LVS_DR模式基于IP地址的访问,所以要配置相应的VIP

vim   lvs_dr_rs.sh

#!/bin/bash
vip=172.18.48.48
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask broadcast $vip up
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

注意事项:

 1.查看系统所的服务是否开启

 2.tcpdump -i eth0 -nn host 224.100.100.48  # 查看网卡接口是否接收组播的数据信息

 3.配置完成之后重新启动服务

    service keepalived restart

    service httpd restart

 4.重启之后,查看VIP的地址是否配置成功 

    ip  a

 5. 客户机   curl  172.18.48.48  # 这个时间会基于权重的轮询访问