Java架构师—Nginx高可用HA

前言

       Keepalived简介;安装Keepalived;Keepalived实现双机主备高可用;高可用集群架构 Keepalived 双主热备。


文章目录

  • 前言
  • 一、Keepalived简介
    • 1.1 Keepalived概述
    • 1.2 虚拟路由冗余协议VRRP
    • 1.3 高可用集群架构 Keepalived 双机主备原理
  • 二、安装Keepalived
    • 2.1 下载Keepalived
    • 2.2 上传Keepalived至Linux
    • 2.3 解压
    • 2.4 配置安装
    • 2.5 配置安装目录与核心配置文件所在位置
    • 2.6 安装 keepalived
    • 2.7 修改核心配置文件
  • 三、Keepalived实现双机主备高可用
    • 3.1 配置 Keepalived - 主
    • 3.2 把Keepalived 注册为系统服务
    • 3.3 配置 Keepalived - 备
    • 3.4 Keepalived配置Nginx自动重启,实现7x24不间断服务
  • 四、高可用集群架构 Keepalived 双主热备
    • 4.1 实现keepalived双主热备


一、Keepalived简介

1.1 Keepalived概述

  • 解决单点故障
  • 组件免费
  • 可以实现高可用HA机制
  • 基于VRRP协议

可以监控主备机,主机出现问题就会切换到备用机,可配置邮件,通知管理员。

1.2 虚拟路由冗余协议VRRP

  • Virtual Router Redundancy Protocol
  • 解决内网单机故障的路由协议
  • 构建有多个路由器MASTER BACKUP
  • 虚拟IP-VIP(Virtual IP Address)

1.3 高可用集群架构 Keepalived 双机主备原理

       Keepalived双机主备原理:故障转移、故障切换,VRRP协议会定时向主机发送信号,一旦发现主机宕机,就会切换到备用机。
Java架构师—Nginx高可用HA_第1张图片
       使用高可用时,一定要保证主备的硬件配置一样。

二、安装Keepalived

2.1 下载Keepalived

       下载地址:https://www.keepalived.org/download.html

2.2 上传Keepalived至Linux

       通过共享文件或ftp工具将keepalived-2.0.18.tar.gz上传到Linux中,/home/software。

Java架构师—Nginx高可用HA_第2张图片

2.3 解压

       解压 tar -zxvf keepalived-2.0.18.tar.gz

2.4 配置安装

       解压后进入到解压出来的目录,看到会有configure,那么就可以做配置了(配置安装和Nginx一样)。

Java架构师—Nginx高可用HA_第3张图片

2.5 配置安装目录与核心配置文件所在位置

       使用configure命令配置安装目录与核心配置文件所在位置:

./configure --prefix=/usr/local/keepalived --sysconf=/etc
  • prefix:keepalived 安装的位置
  • sysconf:keepalived 核心配置文件所在位置,固定位置,改成其他位置则 keepalived 启动不了,/var/log/messages 中会报错
  1. 配置过程中可能会出现警告信息,如下所示:
    警告信息
  2. 安装 libnl/libnl-3依赖
yum -y install libnl libnl-devel
  1. 重新 configure 一下,此时OK 。

2.6 安装 keepalived

make && make install

2.7 修改核心配置文件

       进入到/etc/keepalived ,该目录下为 keepalived 核心配置文件。

cd /etc/keepalived

修改核心配置文件
       如果忘记安装配置的目录,则通过如下命令找到:

whereis keepalived

whereis keepalived
       Keepalived核心配置文件
Java架构师—Nginx高可用HA_第4张图片

三、Keepalived实现双机主备高可用

3.1 配置 Keepalived - 主

  1. 通过命令 vim keepalived.conf 打开配置文件
global_defs {
	# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
	router_id keep_128
}
vrrp_instance VI_1 {
	# 表示状态是MASTER主机还是备用机BACKUP
	state MASTER
	# 该实例绑定的网卡
	interface ens33
	# 保证主备节点一致即可
	virtual_router_id 51
	# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
	priority 100
	# 主备之间同步检查时间间隔,单位秒
	advert_int 2
	# 认证权限密码,防止非法节点进入
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	#虚拟出来的ip,可以有多个(vip)
	virtual_ipaddress {
		192.168.2.110
	}
}

       附:查看网卡名称

ip addr

Java架构师—Nginx高可用HA_第5张图片

  1. 启动Keepalived
           在sbin目录中进行启动(同Nginx),如下图:
./keepalived

Java架构师—Nginx高可用HA_第6张图片

  1. 查看进程
ps -ef|grep keepalived

在这里插入图片描述

4.查看vip
       在网卡ens33下,多了一个192.168.2.110,这个就是虚拟ip
Java架构师—Nginx高可用HA_第7张图片

3.2 把Keepalived 注册为系统服务

kill -9 进程号

       进入keepalived安装目录

cd /home/software/keepalived-2.0.18

       进入安装包目录中的 /keepalived/etc/
Java架构师—Nginx高可用HA_第8张图片
       执行以下两条 copy 命令

cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/

       刷新系统进程

systemctl daemon-reload

       使用系统命令操作 keepalived

# 启动keepalived
systemctl start keepalived
# 停止keepalived
systemctl stop keepalived
# 重启keepalived
systemctl restart keepalived

3.3 配置 Keepalived - 备

  1. 通过命令 vim keepalived.conf 打开配置文件
global_defs {
	router_id keep_129
}
vrrp_instance VI_1 {
	# 备用机设置为BACKUP
	state BACKUP
	interface ens33
	virtual_router_id 51
	# 权重低于MASTER
	priority 80
	advert_int 2
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		# 注意:主备两台的vip都是一样的,绑定到同一个vip
		192.168.2.110
	}
}
  1. 启动 Keepalived
# 启动keepalived
systemctl start keepalived
# 停止keepalived
systemctl stop keepalived
# 重启keepalived
systemctl restart keepalived
  1. 查看进程
ps -ef|grep keepalived

3.4 Keepalived配置Nginx自动重启,实现7x24不间断服务

  1. 增加Nginx重启检测脚本
vim /etc/keepalived/check_nginx_alive_or_not.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
	/usr/local/nginx/sbin/nginx
	# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
	sleep 3
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		killall keepalived
	fi
fi
  • 增加运行权限
chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
  1. 配置keepalived监听nginx脚本
vrrp_script check_nginx_alive {
	script "/etc/keepalived/check_nginx_alive_or_not.sh"
	interval 2 # 每隔两秒运行上一行脚本
	weight 10 # 如果脚本运行失败,则升级权重+10
}
  1. 在 vrrp_instance 中新增监控的脚本
track_script {
	check_nginx_alive # 追踪 nginx 脚本
}
  1. 重启Keepalived使得配置文件生效
systemctl restart keepalived

四、高可用集群架构 Keepalived 双主热备

       高可用集群架构 Keepalived 双主热备原理:
Java架构师—Nginx高可用HA_第9张图片

4.1 实现keepalived双主热备

       配置Keepalived双主热备,规则:以一个虚拟ip分组归为同一个路由。

  1. 主节点配置:
global_defs {
router_id keep_128
}
vrrp_instance VI_1 {
	state MASTER
	interface ens33
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.2.110
	}
}

vrrp_instance VI_2 {
	state BACKUP
	interface ens33
	virtual_router_id 52
	priority 80
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.2.111
	}
}
  1. 备用节点配置:
global_defs {
router_id keep_129
}
vrrp_instance VI_1 {
	state BACKUP
	interface ens33
	virtual_router_id 51
	priority 80
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.2.110
	}
}

vrrp_instance VI_2 {
	state MASTER
	interface ens33
	virtual_router_id 52
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.2.111
	}
}

参考资料:
云服务的DNS解析配置与负载均衡:http://blog.zhaojishun.cn/articles/2019/11/06/1573004619025.html


# 总结 Keepalived简介;安装Keepalived;Keepalived实现双机主备高可用;高可用集群架构 Keepalived 双主热备。

你可能感兴趣的:(Java架构师之路,java,nginx,linux,架构,服务器)