Keepalived群集

目录

一、Keepalived工具介绍

二、Keepalived实现原理

三、Keepalived的工作模式

四、配置实例

1. LVS + Keepalived

2.Nginx + Keepalived


一、Keepalived工具介绍

Keepalived是专为LVS和HA设计的一款健康检查工具

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)

判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新载入到群集服并且业务重新切换回master节点。

二、Keepalived实现原理

Keepalived是基于VRRP协议实现多机热备的高可用方案。

默认情况下通过优先级决定主备服务器的角色(优先级最高的为主),主服务器(MASTER)会通过ip命令在本地生成VIP,并通过VIP接受并处理客户端发送的请求消息;同时主服务器还会定时发送VRRP报文给备服务器(BACKUP)告知主服务器的存货状态。当主服务器异常时,备服务器就会接管VIP(也是通过ip命令生成VIP)继续提供服务,保证服务的高可用。

三、Keepalived的工作模式

  • 抢占模式:
    Keepalived的默认模式,MASTER节点从故障中恢复后,会将VIP从BACKUP节点中抢占过来。
  • 非抢占模式:
    MASTER节点恢复后不抢占VIP。(主备节点的state都配置为BACKUP,且都要添加nopreempt配置)

四、配置实例

1. LVS + Keepalived

对应IP:

  • LVS-Master - 192.168.2.100
  • LVS-Backup - 192.168.2.102
  • VIP - 192.168.2.188
  • Web-A - 192.168.2.103
  • Web-B - 192.168.2.104
  • Client - 192.168.2.200

①前置准备

#关闭防火墙
systemctl disable firewalld.service --now
setenforce 0

yum -y install ipvsadm keepalived    #安装keepalived

#加载ip_vs内核模块
modprobe ip_vs
cat /proc/net/ip_vs

②修改主服务器配置

cp /etc/keepalived.conf /etc/keepalived.conf.bak    #备份配置文件
vim /etc/keepalived.conf
......
global_defs {    #定义全局参数
	smtp_server 127.0.0.1    #邮件服务指向本地
	router_id LVS_01    #指定主服务器(路由器)的名称
	#vrrp_strict    #加注释,取消严格遵守VRRP协议功能,否则VIP无法被连接
}

vrrp_instance VI_1 {				#定义VRRP热备实例参数
    state MASTER    #指定热备状态,主为MASTER,备为BACKUP
    interface ens33    #指定承载vip地址的物理接口	
    virtual_router_id 10    #指定虚拟路由器的ID号,每个热备组保持一致
	#nopreempt		#如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
    priority 100    #指定优先级,数值越大优先级越高,这里设置主为100,备为90
    advert_int 1    #通告间隔秒数(心跳频率)
    authentication {    #定义认证信息,每个热备组保持一致
		auth_type PASS    #认证类型
        auth_pass abc123    指定验证密码,主备服务器保持一致
    }
    virtual_ipaddress {    #指定群集vip地址
        192.168.2.188
    }
}

virtual_server 192.168.2.188 80 {    #指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
    delay_loop 6    #健康检查的间隔时间(秒)
    lb_algo rr    #指定调度算法,轮询(rr)
    lb_kind DR    #指定群集工作模式,直接路由(DR)
    persistence_timeout 0    #连接保持时间(秒)
    protocol TCP    #应用服务采用的是 TCP协议
    real_server 192.168.2.103 80 {    #指定第一个Web节点的地址、端口
        weight 1    #节点的权重	
        TCP_CHECK {
			connect_port 80    #添加检查的目标端口
			connect_timeout 3    #添加连接超时(秒)
			nb_get_retry 3    #添加重试次数
			delay_before_retry 3    #添加重试间隔
		}
	}

	real_server 192.168.2.104 80 {    #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}

systemctl start keepalived
ip a    #查看虚拟网卡vip

③修改备服务器配置文件

与主服务器大致相同

global_defs {
	smtp_server 127.0.0.1
	router_id LVS_02    #指定备服务器(路由器)的名称
	#vrrp_strict    #加注释,取消严格遵守VRRP协议功能,否则VIP无法被连接
}

vrrp_instance VI_1 {
    state BACKUP    #指定热备状态,主为MASTER,备为BACKUP
    interface ens33
    virtual_router_id 10
    priority 90    #指定优先级,数值越大优先级越高,这里设置主为100,备为90
    advert_int 1
    authentication {
		auth_type PASS
        auth_pass abc123
    }
    virtual_ipaddress {
        192.168.2.188
    }
}

virtual_server 192.168.2.188 80 {
    delay_loop 6
    lb_kind DR
    persistence_timeout 0
    protocol TCP
    real_server 192.168.2.103 80 {
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}

	real_server 192.168.2.104 80 {
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}

systemctl start keepalived
ip a    #查看虚拟网卡vip

④LVS – DR模式构建负载均衡集群

#启动 ipvsadm 服务(主备皆如此)
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalive

⑤配置节点服务器,准备测试页面

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

#建立测试页
#192.168.80.100
echo 'this is kgc web!' > /var/www/html/index.html

#192.168.80.101
echo 'this is benet web!' > /var/www/html/index.html

⑥浏览器访问测试结果

⑦关闭主服务器的Keepalived服务,测试高可用

systemctl stop keepalived

 浏览器访问VIP地址

2.Nginx + Keepalived

对应IP:

  • Nginx-Master - 192.168.2.100
  • Nginx-Backup - 192.168.2.102
  • VIP - 192.168.2.188
  • Web-A - 192.168.2.103
  • Web-B - 192.168.2.104
  • Client - 192.168.2.200 

①编写Nginx服务监控脚本

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/bin/nginx
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
    fi
fi

②配置主服务器

global_defs {               
   router_id Nginx_01
}
vrrp_script check_nginx {
	script "/etc/keepalived/check_nginx.sh"
	interval 2
    weight -5
    fall 3
    rise 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       192.168.2.188
    }
    track_script {
    	check_nginx
    }
}

③配置备服务器

global_defs {               
   router_id Nginx_02
}
vrrp_script check_nginx {
	script "/etc/keepalived/check_nginx.sh"
	interval 2
    weight -5
    fall 3
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      192.168.2.188
    }
    track_script {
    	check_nginx
    }
}

④Nginx负载均衡配置

#主备nginx均配置四层反向代理
vim /apps/nginx/conf/nginx.conf
stream{

upstream iserver {
    server 192.168.2.103:80;
    server 192.168.2.104:80;
}

server {
        listen       80;
        proxy_pass   iserver;
        }     
   }

systemctl restart nginx

⑤负载均衡测试

使用curl命令访问VIP地址

⑥高可用测试

systemctl stop nginx    #关闭主服务器的nginx服务

使用curl命令测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值