一。 简单介绍keepalived
keepalived提供基于linux高可用性负载均衡技术,基于VRRP协议(虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP))主要 用于主从结构提供服务 主从机器 必须安装keepalived 主机器 会默认给主机设置一个虚拟ip 同时将该虚拟ip和主机器的mac地址路由出去,当主机挂掉后 从机检测到主机不可达(互相发送心跳) 将虚拟ip收回 将虚拟ip和从机mac地址路由出去 其他机器访问的就是从机
keepalive配置解释
默认的配置文件位于 /etc/keepalived/keepalived.conf目录下
keepalive 提供了vip转移 lvs健康检查 自定义健康检查等功能
常用配置文件解释
#全局配置
global_defs {
#出现机器挂掉通知邮件配置 可以配置多个邮件地址
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
#从哪个邮箱发出
notification_email_from Alexandre.Cassen@firewall.loc
#smtp服务器
smtp_server 192.168.200.1
#smtp连接超时时间
smtp_connect_timeout 30
#路由编号 每台机器不一样 发送邮件 使用这个表示表示当前主机挂了
router_id LVS_DEVEL
}
#定义检测服务是否停止的脚本 该脚本只要返回任何非0的数字和字符串表示服务器存活 返回0表示服务器挂了
vrrp_script chk_cur_tomcat {
#自己编写该脚本 注意脚本返回0表示挂了
script "/etc/keepalived/mytomcat_check.sh"
#调用该脚本的检测时间 每 2s检查一次
interval 2
#当通过调用脚本检测失败后 vrrp_instance 配置的priority会减掉该weight 新的priority=priority-weight=95 再次失败继续减少
weight -5
#失败3次 才算失败 重连3次
fall 3
#成功两次 才算成功
rise 2
}
#配置当前ip映射到虚拟ip
vrrp_instance tomcat135 {
#表示主从部分的主机 是个表示 对应的是BACKUP
state MASTER
#虚拟ip绑定的网卡名称
interface eth0
#eth0的物理ip
mcast_src_ip 192.168.58.135
#虚拟路由编号 主从必须设置为一致
virtual_router_id 51
#优先级 优先级高的选举称为Master的机会高(1-254)
priority 100
#组播发送的间隔时间 检测心跳 两台机器配置一致
advert_int 1
#验证信息 使用密码 密码时1111 两台机器一致
authentication {
auth_type PASS
auth_pass 1111
}
#虚拟ip 给网卡绑定一个虚拟网卡 实际就是 ifconfig eth0 192.168.58.140/24 创建
virtual_ipaddress {
192.168.58.140
}
#表示诊断调用vrrp_script
#当master上的资源由于故障切换到backup上时候,那么如果想再切回来到master 就需要关闭backup的keepalived的服务才可以。
track_script {
chk_cur_tomcat
}
}
二。 实例演示
模拟场景
192.168.58.135 部署tomcat 端口80 安装keepalived
配置以上脚本 mcast_src_ip 修改为当前ip192.168.58.135
编写脚本/etc/keepalived/mytomcat_check.sh"
check_result=`ps -Cjava -f --no-heading | wc -l`
if [ $check_result -eq 1 ]
then
#0 success
exit 0
else
exit 1
fi
启动 keepalived service keepalived start
通过 ip addr 查看eth0网卡上多了一个虚拟ip 192.168.58.40
192.168.58.136 部署tomcat 端口80 安装keepalived
配置以上脚本 mcast_src_ip 修改为当前ip192.168.58.136
state BACKUP 表示从机
priority 90 比主机略少 优先级低于主机
编写脚本/etc/keepalived/mytomcat_check.sh和135一样
启动 keepalived service keepalived start
访问 http://192.168.58.140 发现访问了 135的tomcat 停止135的tomcat 发现136的eth0网卡上多了一个虚拟ip 140 访问140 进入136的tomcat
如果重新启动 135的tomcat 关闭136的tomcat 发现虚拟ip不能再次回到 主机135了 只能停止 136的keepalived才能重新切回到133
同理 也可以配置 keepalived+nginx集群