高可用群集相关
企业应用中,单台服务器承担应用存在单点故障的危险
单点故障一旦发生,企业服务将发生中断,造成极大的危害
keepalive工具
专为lvs和ha设计的一款健康检查工具
作用
支持故障自动切换failover
支持节点健康状态检查Heath checking
原理剖析
keepalive采用vrrp热备协议,实现linux服务器的多机热备功能
vrrp是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
案例讲解
keepalive可实现多机热备,每个热备组可有多台服务器
双机热备的故障切换是由虚拟IP地址的飘逸的来实现,适用于各种应用服务器
安装与启动
在lvs群集环境中应用时,也需要用到ipvsadm管理工具
配置kpa master服务器
配置目录位于/etc/keepalived/
keepalived.conf是主配置文件
global_defs{…}区段指定全局参数
vrrp_instance实例名称{。。}区段指定vrrp热备参数
注释文字以“!"开头
目录samples,提供了许多配置样例作为参考
常用的配置选项
router_id HA_TEST_R1 本路由器(服务器)的名称,主从不同
vrrp_instance 定义vrrp热备实例
state MASTER 热备状态,master表示主服务器 主从不同
interface ens33 承载vip地址的网络接口
virtual_router_id 虚拟路由器的id号,每个热备组保持一致
priority 100 优先级,数值越大优先级越高 主从不同
adver_int 1 通告间隔1秒(心跳频率)
auth_type PASS 认证类型
auth_pass 123123 密码字串
virtual_ipaddress{vip} 指定漂移地址vip 可以有多个
配置流程
准备
准备1,2,3,,4,5,6主机
5号主机提供网页ip:20.0.0.50
3,4号主机提供网页服务ip分别为20.0.0.30和20.0.0.40
1,2号分别作为主从调度器提供调度服务ip分别为20.0.0.10和20.0.0.2
配置
配置在5号主机内配置两个网页挂载在两台服务器上
mkdir /web1
mkdir /web2
echo “
web1
” > /web1/index.htmlecho “
web2
” > /web2/index.html安装nfs
yum -y install rpcbind nfs-utils
挂载
vi /etc/exports
重启服务后检查挂载情况
在3,4两台服务器上安装httpd后开启
挂载网页后尝试连接网页
3号主机
mount 20.0.0.50:/web1 /var/www/html/
编写服务器群集脚本
vi web1.sh
#!/bin/bash
#lvs dr web1
ifconfig lo:0 20.0.0.100 broadcast 20.0.0.100 netmask 255.255.255.255 up
route add -host 20.0.0.100 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null
运行脚本后查看
4号主机
mount 20.0.0.50:/web2 /var/www/html/
编写服务器群集脚本
vi web2.sh
#!/bin/bash
#lvs dr web2
ifconfig lo:0 20.0.0.100 broadcast 20.0.0.100 netmask 255.255.255.255 up
route add -host 20.0.0.100 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null
运行脚本后查看
在1,2主机上配置调度器
安装调度器软件和解压高可用软件包及其依赖软件
yum -y install ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
tar zxvf keepalived-2.0.13.tar.gz
编译功能模块
cd keepalived-2.0.13/
./configure --prefix=/
安装
make && make install
cd keepalived/
cd etc/init.d
cp keepalived /etc/init.d
cd
systemctl enable keepalived.service
编辑配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lvs_1
}
vrrp_instance vi_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
AUTH_pass 1212
}
virtual_ipaddress {
20.0.0.100
}
}
virtual_server 20.0.0.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 20.0.0.30 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 20.0.0.40 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
启动keepalived服务后查看网卡
systemctl start keepalived.service
ip addr
检查日志文件
生成了节点
vi /var/log/message
节点生效
若只在一台主机上编辑了配置文件,可将编辑好的配置文件复制scp到另一台主机里
修改配置文件中的router id、state和priority
启动服务
systemctl start keepalived.service
查看服务状态
systemctl status keepalived.service
查看ip,未生成虚拟ip,因为虚拟ip只会存在与主服务器
在客户机上访问20.0.0.100
查看调度情况
关掉主服务器的keepalived
systemctl stop keepalived.service
在另一台调度器主机上查看日志
重新在客户机上访问20.0.0.100
查看调度情况