Keepalived + Nginx + Tomcat 高可用负载均衡架构

时间:2023-03-08 21:17:45

环境:

1、centos7.3

2、虚拟ip:192.168.217.200

3、192.168.217.11、192.168.217.12上分别部署Nginx Keepalived Tomcat并进行配置

说明:

Nginx 是一个高性能的HTTP反向代理服务器
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免服务的单点故障
Tomcat 是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器

Keepalived + Nginx + Tomcat 的高可用负载均衡架构
如下图:为典型的Tomcat服务多实例部署的架构图
aaarticlea/jpeg;base64,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" alt="" />

(1)用户通过域名请求到DNS,由DNS解析域名后返回对应的IP地址,该IP及为Keepalived映射服务器的虚拟IP
(2)通过该虚拟IP访问到对应的负载均衡器(Nginx),这里Nginx部署两个,然后通过Keepalived来保证NG的高可用,正常情况下由Keepalived-M将虚拟IP映射转发至Nginx-M,如果Nginx-M出现故
障,此时Keepalived会切换至Keepalived-S开始工作,从而保证了NG的单点故障问题。
(3)通过Nginx负载均衡器,将请求路由到对应的Tomcat服务。

 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构
 需要准备的软件

(1)apache-tomcat-8.5.16.tar.gz
(2)nginx-1.12.2.tar.gz
(3)keepalived-1.3.9.tar.gz

服务器准备

两台服务器如:192.168.217.11,192.168.217.12

安装需要的依赖包

yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel

 安装
安装Tomcat

 1、首先确定系统环境中有JDK
2、分别在两台服务器中安装Tomcat,解压apache-tomcat-8.5.16.tar.gz及可完成安装。

安装Nginx

(1)解压安装包:tar -zxvf nginx-1.12.2.tar.gz
(2)进入到nginx-1.12.2目录:cd nginx-1.12.2
(3)编译:
a) ./configure –with-http_stub_status_module –with-http_ssl_module –prefix=/usr/local/nginx
b) sudo make && sudo make install

安装Keepalived

(1)解压安装包:tar -zxvf keepalived-1.3.9.tar.gz
(2)进入到keepalived-1.3.9目录:cd keepalived-1.3.9
(3)执行编译:
a)./configure –prefix=/usr/local/keepalived –sysconf=/etc
b)sudo make && sudo make install

 配置
分别配置两台服务器的Nginx
(1)分别修改两台服务器nginx配置文件,vi /usr/local/nginx/conf/nginx.conf
(2)内容如下:

#nginx进程数
worker_processes 1;
#单个进程最大连接数
events {
worker_connections 1024;
}
#http服务器配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#长连接超时时间,单位是秒
keepalive_timeout 65;
#upstream负载均衡配置,配置路由到tomcat的服务地址以及权重
upstream localhost{
server 192.168.10.11:8080 weight=2;
server 192.168.10.12:8080 weight=2;
}
#虚拟主机的配置
server {
#监听端口
listen 80;
#域名可以有多个,用空格隔开
server_name localhost;
location / {
root html;
index index.html index.htm;
#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 3;
#后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 30;
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 30;
proxy_pass http://localhost;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

主Keepalived配置
(1)修改11服务器的keepalived配置文件,vi /etc/keepalived/keepalived.conf
(2)内容如下:

! Configuration File for keepalived
#全局配置
global_defs {
#keepalived切换的时候,发消息到指定的email,可配置多个email
notification_email {
12345678@qq.com
455463477@qq.com
}
#通知邮件从哪个地址发出
notification_email_from smtp.intellicredit.cn
#通知邮件的smtp地址
smtp_server smtp.intellicredit.cn
#连接smtp服务器的超时时间,单位秒
smtp_connect_timeout 30
#Keepalived的机器标识,一个网络内保持唯一
router_id nginx-master
}
#执行脚本配置
vrrp_script chk_nginx {
#脚本所在路径
script "/home/check_nginx.sh"
#脚本执行间隔时间,秒
interval 2
#优先级
weight 2
}
#keepalived实例配置
vrrp_instance VI_1 {
#指定实例的初始状态,MASTER或BACKUP两种状态,并且需要大写
state MASTER
#实例绑定的网卡
interface ens33
#虚拟路由标识,是一个数字,整个VRRP内唯一,如果keepalived配置了主备,需要相同
virtual_router_id 51
#优先级,数值愈大,优先级越高
priority 100
#MASTER与BACKUP之间同步检查的时间间隔,单位为秒
advert_int 1
#通信验证
authentication {
auth_type PASS
auth_pass 123456
}
#追踪外围脚本
track_script {
#这里配置vrrp_script的名称
chk_nginx
}
#虚拟ip配置,可配置多个
virtual_ipaddress {
192.168.217.200
}
}

 备Keepalived配置
(1)修改12服务器的keepalived配置文件,vi /etc/keepalived/keepalived.conf
(2)内容如下:

! Configuration File for keepalived
#全局配置
global_defs {
#keepalived切换的时候,发消息到指定的email,可配置多个email
notification_email {
12345678@qq.com
455463477@qq.com
}
#通知邮件从哪个地址发出
notification_email_from wang@intellicredit.cn
#通知邮件的smtp地址
smtp_server smtp.intellicredit.cn
#连接smtp服务器的超时时间,单位秒
smtp_connect_timeout 30
#Keepalived的机器标识,一个网络内保持唯一
router_id nginx-master
}
#执行脚本配置
vrrp_script chk_nginx {
#脚本所在路径
script "/home/check_nginx.sh"
#脚本执行间隔时间,秒
interval 2
#优先级
weight 2
}
#keepalived实例配置
vrrp_instance VI_1 {
#指定实例的初始状态,MASTER或BACKUP两种状态,并且需要大写
state BACKUP
#实例绑定的网卡
interface ens33
#虚拟路由标识,是一个数字,整个VRRP内唯一,如果keepalived配置了主备,需要相同
virtual_router_id 51
#优先级,数值愈大,优先级越高
priority 99
#MASTER与BACKUP之间同步检查的时间间隔,单位为秒
advert_int 1
#通信验证
authentication {
auth_type PASS
auth_pass 123456
}
#追踪外围脚本
track_script {
#这里配置vrrp_script的名称
chk_nginx
}
#虚拟ip配置,可配置多个
virtual_ipaddress {
192.168.217.200
}
}

Nginx状态检查脚本创建
(1)新建Nginx的状态检查脚本:check_nginx.sh
(2)内容如下:

#!/bin/sh
NGINX=/usr/local/nginx/sbin/nginx
PORT=80
nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
#再次尝试启动NG
$NGINX
sleep 5
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && cd /usr/sbin && pkill keepalived
echo "stoped"
fi

运行测试

(1)为了更直观的查看到keepalived切换的效果,将11服务器中的nginx的upstream服务只配置11的tomcat服务地址,12服务器中的upstream服务只配置12的tomcat服务地址,这样只需要观察将11服务器中的nginx关闭看使用虚拟ip是否可以访问到12服务器的tomcat。
(2)分别启动两个服务器中的tomcat、nginx、keepalived,访问虚拟ip:192.168.217.200,可以查看到访问的是主keepalived服务器的tomcat