【实战】Nginx+Keepalived高可用部署,后端Tomcat

目录

一、下载Tomcat安装包

二、安装Tomcat

[三、 运行测试Tomcat是否安装成功](#三、 运行测试Tomcat是否安装成功)

四、开放8080端口

五、Tomcat服务脚本

一、环境说明:

三、安装Keepalived

3.1、主机安装配置


实战目的是为了Nginx和后端的Tomcat都可以实现高可用,防止单节点故障的情况发生。

首先我们先部署后端Tomcat服务

1 . TOMCAT

文章链接

Linux下安装Tomcat_apache-tomcat-9.0.64.tar.gz-CSDN博客文章浏览阅读2.7k次,点赞8次,收藏41次。Tomcat官网如下,我们以下载安装9.0.64版本的Tomcat为例。Apache Tomcat® - Apache Tomcat 9 Software Downloads安装Tomcat前要确保Linux已安装了JDK,Linux下安装JDK可以参考之前的文章,连接如下Linux下安装JDK8_luffylv的博客-CSDN博客_linux安装openjdk8在/opt目录下执行如下命令,即可将Tomcat安装包下载到/opt目录下。 将Tomcat安装在/opt/tomcat目录下,执行以下两个_apache-tomcat-9.0.64.tar.gzhttps://blog.csdn.net/m0_47503416/article/details/125225754?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171748631616800184140390%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171748631616800184140390&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-125225754-null-null.142

重点!:安装Tomcat前要确保Linux已安装了JDK,Linux下安装JDK可以参考之前的文章,连接如下

Linux下安装JDK8_linux 8 openjdk-CSDN博客

一、下载Tomcat安装包

在/opt目录下执行如下命令,即可将Tomcat安装包下载到/opt目录下。

wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.64/bin/apache-tomcat-9.0.64.tar.gz

二、安装Tomcat

将Tomcat安装在/opt/tomcat目录下,执行以下两个命令:

mkdir tomcat

tar -zxvf apache-tomcat-9.0.64.tar.gz -C /opt/tomcat/

三、 运行测试Tomcat是否安装成功

进入到tomcat的bin目录下可以看到,其中startup.sh是Linux下启动Tomcat的脚本文件,shutdown.sh是Linux下关闭的脚本文件

./startup.sh #开启

./shutdown.sh #关闭

通过ps -ef | grep tomcat可以看到Tomcat进程信息。

四、开放8080端口

Tomcat默认是8080端口,我们可以通过在浏览器中输入Tomcat服务器ip地址:8080访问Tomcat界面。

可以通过 ifconfig查看当前服务器的ip地址。

如果无法访问需要开通8080端口

通过如下命令查看该Tomcat服务器8080端口是否开放。

netstat -anlp | grep 8080

然后,我们再查通过以下看下该服务器防火墙状态。

systemctl status firewalld

通过上图可以看到当前防火墙是开启的。

我们再通过以下命令查看8080端口防火墙状态。

firewall-cmd --zone=public --query-port=8080/tcp

也可以通过systemctl stop firewalld命令禁用防火墙,或者通过以下命令开放防火墙的8080端口。

开放防火墙8080端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

重新加载防火墙

firewall-cmd --reload

查询防火墙8080端口状态

firewall-cmd --zone=public --query-port=8080/tcp

五、Tomcat服务脚本

每次启动关闭Tomcat都要进入到或执行命令到bin目录然后执行启动关闭脚本,十分的麻烦。我们可以通过编写Tomcat服务脚本,可以在任何路径下通过命令service tomcat start启动tomcat、service tomcat stop关闭Tomcat、service tomcat restart重启Tomcat。具体步骤如下:

1、执行vim /etc/init.d/tomcat,并将以下内容添加进脚本文件中,保存退出。

#!/bin/sh

Tomcat service script for Linux.

export JAVA_HOME=/opt/java/jdk1.8.0_121

export CATALINA_HOME=/opt/tomcat/apache-tomcat-9.0.64

case "$1" in

start)

echo "Starting Tomcat server..."

$CATALINA_HOME/bin/startup.sh

;;

stop)

echo "Stopping Tomcat server..."

$CATALINA_HOME/bin/shutdown.sh

;;

restart)

echo "Restarting Tomcat server..."

$CATALINA_HOME/bin/shutdown.sh

sleep 1

$CATALINA_HOME/bin/startup.sh

;;

*)

echo "Please use start or stop or restart as first argument"

;;

esac

2、修改脚本权限

执行如下命令,修改脚本文件权限

chmod 755 tomcat

完成上面两步后,执行tomcat服务启动命令和tomcat服务停止命令,我们可以看到即使不是在/bin目录下,或者使用startup.sh、shutdown.sh绝对路径,我们依然可以成功启动或停止Tomcat。

  1. NGINX

安装nginx环境包

yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

方案一:Nginx的源码简单安装

(1)、进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载

wget http://nginx.org/download/nginx-1.16.1.tar.gz

(2)、建议大家将下载的资源进行包管理

mkdir -p nginx/core

mv nginx-1.16.1.tar.gz nginx/core

(3)、解压缩

tar -xzf nginx-1.16.1.tar.gz

(4)、进入资源文件中,发现configure

./configure --prefix=/usr/local/nginx \

--sbin-path=/usr/local/nginx/sbin/nginx \

--modules-path=/usr/local/nginx/modules \

--conf-path=/usr/local/nginx/conf/nginx.conf \

--error-log-path=/usr/local/nginx/logs/error.log \

--http-log-path=/usr/local/nginx/logs/access.log \

--pid-path=/usr/local/nginx/logs/nginx.pid \

--lock-path=/usr/local/nginx/logs/nginx.lock

(5)、编译

make

(6)、安装

make install

(7)、运行

cd /usr/local/nginx/sbin

./nginx

(8)、在网页上访问服务器地址,看到Welcome to nginx 则成功啦

配置nginx.conf

upstream xty.com {

server 192.169.22.50:8080; # 本地tomcat服务器

#server 192.169.22.52:8080; # 备用tomcat服务器

}

配置conf.d 里的项目

server {

listen 80;

server_name xty.com;

#access_log /var/log/nginx/host.access.log main;

location / {

proxy_pass http://xty.com;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

Keepalived

一、环境说明:

操作系统:centos7

主机(master):192.169.22.50

备机(backup):192.169.22.52

VIP:192.169.22.62

2.1、主机配置VIP

2.1.1 复制当前网卡的网址配置文件,名称后增加":1";然后编辑该文件,修改name、device和ipaddr三个数据项,如下图所示。

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens33:1

vi ifcfg-ens33:1

2.1.2 查看效果命令

ip addr

按此流程在备机上添加一次。

三、安装Keepalived

3.1、主机安装配置

3.1.1 安装及编辑配置文件

yum install -y keepalived

vi keepalived.conf

修改主机参数

#检测脚本

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动

interval 2 #(检测脚本执行的间隔,单位是秒)

weight 2 #权重

}

#vrrp 实例定义部分

vrrp_instance VI_1 {

state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备

interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

virtual_router_id 66 # 虚拟路由编号,主从要一直

priority 100 # 优先级,数值越大,获取处理请求的优先级越高

advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)

#授权访问

authentication {

auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

auth_pass 1111

}

track_script {

chk_http_port #(调用检测脚本)

}

virtual_ipaddress {

192.168.16.130 # 定义虚拟ip(VIP),可多设,每行一个

}

}

修改备机参数

#检测脚本

vrrp_script chk_http_port {

script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本,检测nginx是否启动

interval 2 #(检测脚本执行的间隔)

weight 2 #权重

}

#vrrp 实例定义部分

vrrp_instance VI_1 {

state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备

interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

virtual_router_id 66 # 虚拟路由编号,主从要一直

priority 99 # 优先级,数值越大,获取处理请求的优先级越高

advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)

#授权访问

authentication {

auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

auth_pass 1111

}

track_script {

chk_http_port #(调用检测脚本)

}

virtual_ipaddress {

192.168.16.130 # 定义虚拟ip(VIP),可多设,每行一个

}

}

添加主备机脚本

#!/bin/bash

#检测nginx是否启动了

A=`ps -C nginx --no-header |wc -l`

if $A -eq 0 ;then #如果nginx没有启动就启动nginx

systemctl start nginx #重启nginx

if \`ps -C nginx --no-header \|wc -l\` -eq 0 ;then #nginx重启失败,则停掉keepalived服务,进行VIP转移

killall keepalived

fi

fi

脚本授权

chmod 775 check_nginx_pid.sh

模拟nginx故障:

修改两个服务器默认访问的Nginx的html页面作为区别。

首先访问192.168.16.130,通过vip进行访问,页面显示192.168.16.128;说明当前是主服务器提供的服务。

这个时候192.168.16.128主服务器执行命令:

systemctl stop nginx; #停止nginx

再次访问vip(192.168.16.130)发现这个时候页面显示的还是:192.168.16.128,这是脚本里面自动重启。

设置自启动

systemctl enable keepalived

systemctl enable nginx

以上我们就实现了Tomcat服务或者Nginx服务如果单节点出现异常,不影响业务正常使用。

相关推荐
大树882 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz2 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工3 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩4 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_4 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化