muri 发表于 2018-12-29 10:00:33

简单实现keepalived

  前言: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_fromkeepalived@localhost# 邮箱
smtp_server 127.0.0.1    # smtp服务
smtp_connect_timeout 30# 延时
router_idxdg1 # 路由标识
vrrp_mcast_group4224.100.100.48# 组播地址
}
vrrp_instance VI_1 {
state MASTER# 主模式
interface eth0# 监听的网卡
virtual_router_id99# 虚拟路由标识
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.10080 {# 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.20080 { # 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的地址是否配置成功
  ipa
  5. 客户机   curl172.18.48.48# 这个时间会基于权重的轮询访问



页: [1]
查看完整版本: 简单实现keepalived