前言: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/bashvip=172.18.48.48mask='255.255.255.255'dev=lo:1case $1 instart)    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  # 这个时间会基于权重的轮询访问