高可用服务器
- 以提高应用系统的可靠性、尽可能减少终端宕机时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,例如“故障切换”“双击热备”“多机热备”等都属于高可用群集技术
- 实现技术:keepalived、heartbeat、corosync、cman
- 高可用主要用于解决单点故障的问题
- 单点故障: 当节点发生故障时,会导致整个系统发故障,我们把这种故障叫做单点故障
Keepalived
- 专为LVS和HA设计的一款健康检查工具(官方网站), keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
- keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;check负责健康检查,包括常见的各种检查方式;vrrp模块是来实现VRRP协议的。
- 主要功能:
- 支持故障自动切换(Failover)
- 支持节点健康状态检查(Health Checking)
- 主要文件
- /usr/sbin/keepalived keepalived主程序文件
- /etc/keepalived/keepalived.conf keepalived主配置文件
- /usr/lib/systemd/system/keepalived.service keepalived服务启停脚本
- /usr/share/doc/keepalived-1.3.5/samples/ keepalived 配置的模板文件
Keepalived实现主从双机热备
实验环境
- keepalived1+httpd:192.168.10.124
- keepalived2+httpd:192.168.10.125
为两台keepalived服务器安装服务
修改keepalived master服务器配置文件
! Configuration File for keepalived global_defs { router_id HA_TEST1 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.10.200 } }
修改keepalived salve服务器配置文件
开启服务器
查看网卡信息,漂移地址已经被配置到MASTER的ens33上
为这两台keepalived服务器安装httpd服务
添加测试页并启动服务
关闭防火墙
测试
关闭master上的keepalived服务后测试
LVS+keepalived
实验环境
- lvs+keepalived server1:Centos7 192.168.10.124
- lvs+keepalived server2:Centos7 192.168.10.125
- LAMP server1:Centos7 192.168.10.10
- LAMP server2:Centos7 192.168.10.11
拓扑图
搭建LAMP环境
这里使用之前实验中搭建的两台LAMP服务(LAMP环境搭建详细流程)httpd服务器修改测试页
因为yum 安装的keepalived 1.3.5貌似无法兼容kernel3.1中的lvs,所以使用源码包重新安装keepalived(需要先将之前安装的使用卸载)
上传源码包(官网下载地址)
安装依赖和所需软件
yum install -y gcc gcc-c++ make popt-devel kernel-devel openssl-devel
解压安装包
编译安装
将启动脚本复制到/etc/init.d目录下
为两台keepalived配置文件添加如下配置
! Configuration File for keepalived global_defs { router_id HA_TEST1 #名称 } vrrp_instance VI_1 { state MASTER | BACKUP #设置服务器角色 主或从 interface ens33 #使用的网卡 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.10.200 #漂移地址 } } virtual_server 192.168.10.200 80 { delay_loop 15 lb_algo rr lb_kind DR ! persistence 60 protocol TCP real_server 192.168.10.10 80 { #RS服务器地址及端口 weight 1 TCP_CHECK{ connect_port 80 #端口号 connect_timeout 3 #超时时长(秒) retry 3 #重试次数 delay_before_retry 3 #重试前延时时长(秒) } } real_server 192.168.10.11 80 { weight 1 TCP_CHECK{ connect_port 80 connect_timeout 3 retry 3 delay_before_retry 3 } } }
安装ipvsadm工具并关闭ipvsadm服务
修改后端RS的内核参数、添加回环网卡子接并配置响应的路由规则
重启keepalived服务
查看启动的进程及生成的lvs
访问测试
注:curl命令不能在有漂移地址的keepalived服务器上进行测试
关闭主keepalived的服务,查看从服务器是否自动进行切换
后台服务依然正常响应
重新启动主keepalived服务
查看漂移地址是否重新切换到主keepalived