【实战】Nginx+Keepalived高可用部署,后端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。

2. 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服务如果单节点出现异常,不影响业务正常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5G数字化转型redcap助您“轻”装上阵

RedCap(Reduced Capability)技术,也称为NR-Light,是针对5G网络的一种轻量化技术规范,旨在为具有较低性能要求的设备提供5G连接。 RedCap技术特点 低成本 降低芯片组和设备成本:RedCap通过减少终端带宽、收…

Oracle 性能诊断包收费依据

Which Data Dictionary or Dynamic Performance Views Require Purchase of the Diagnostics and / or Tuning Pack? (Doc ID 2082355.1)​编辑To Bottom In this Document Goal Solution References APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.5 …

LabVIEW人工模拟肺控制系统开发

开发了一种创新的主被动一体式人工模拟肺模型,通过LabVIEW开发的上位机软件,实现了步进电机驱动系统的精确控制和多种呼吸模式的模拟。该系统不仅能够在主动呼吸模式下精确模拟快速呼吸、平静呼吸和深度呼吸,还能在被动模式下通过PID控制实现…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十二)-无人机群在物流中的应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

Stable Diffusion 使用

目录 背景 最简单用法 进阶用法 高手用法 safetensor 一、概述 二、主要特点 背景 Stable Diffusion 开源后,确实比较火,上次介绍了下 Stable Diffusion 最简单的concept。今天继续介绍下,以Liblib 为例,介绍下如何使用参…

k8s快速部署一个网站

1)使用Deployment控制器部署镜像: kubectl create deployment web-demo --imagelizhenliang/web-demo:v1 kubectl get deployment,pods[rootk8s-matser ~]# kubectl get pods NAME READY STATUS RESTARTS A…

Centos 设置静态ip地址 远程工具Putty连接访问

1.查看本机电脑端VM中centos网络适配器设置 右键--设置---网络适配器 设置保存。 选择的VM8是自己电脑网络适配器中VM使用的网络。 2.打开“编辑”——“虚拟网络编辑器” 注意:NAT网络模式对应的虚拟网卡是VMnet8这个!需要管理员权限才能更改配置信…

mysql5.7版本字符集编码

默认character_set_databaselatin1 当你字段插入中文值的时候,会报错。 所以修改为了character_set_databaseutf8既可以。 character_set_server他的范围更大,属于服务器级别。

Win10工具:批量word转png图片

首先声明这个小工具是小编本人开发的,无任何广告,会员收费机制等,永久使用。允许公司或个人使用,不允许倒卖,否则发现后会追究法律责任,毕竟开发不易。工具是用python开发的。 功能非常单一,就…

免杀笔记 ----> 动态调用

前一段时间不是说要进行IAT表的隐藏吗,终于给我逮到时间来写了,今天就来先将最简单的一种方式 ----> 动态调用!!! 1.静态查杀 这里还是说一下我们为什么要对他进行隐藏呢??&#xff1…

跳表的简单学习

跳表(SkipList)学习 1. 什么是跳表? 基于“空间换时间”思想,通过给链表建立索引,使得链表能够实现二分查找。 跳表是可以实现二分查找的有序链表。 2. 从单链表到跳表 对于一般的单链表,在其中进行查…

自动驾驶可能解决的问题

首先是各种盲区,雷达可能检测到各种东西,而这些是视觉注意不到的 然后是每辆车可以互联互通,整体规划路线

昇思25天学习打卡营第14天 | ShuffleNet图像分类

昇思25天学习打卡营第14天 | ShuffleNet图像分类 文章目录 昇思25天学习打卡营第14天 | ShuffleNet图像分类ShuffleNetPointwise Group ConvolutionChannel ShuffleShuffleNet模块网络构建 模型训练与评估数据集训练模型评估模型预测 总结打卡 ShuffleNet ShuffleNetV1是旷世科…

基于Python+Django+MySQL的心理咨询预约系统

心理咨询预约系统 DjangoMySQL 基于PythonDjangoMySQL的心理咨询预约系统 项目主要依赖Django3.2,MySQL 支持随机验证码生成与登录验证 简介 基于PythonDjangoMySQL的心理咨询预约系统通过连接数据库获取数据,登录新增随机数字验证码验证。具体可以看…

Java二十三种设计模式-单例模式(1/23)

引言 在软件开发中,设计模式是一套被反复使用的、大家公认的、经过分类编目的代码设计经验的总结。单例模式作为其中一种创建型模式,确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的概念、实现方式、使用场景以及潜…

捷配生产总结-PCB上器件布局不好对SMTDIP的影响

在电子制造领域,PCB(印刷电路板)的设计至关重要,其中器件的布局更是影响着整个生产流程的效率和质量。特别是对于 SMT(表面贴装技术)和 DIP(双列直插式封装)这两种常见的组装工艺&am…

Dify中Jieba类的create()方法实现过程

本文主要介绍Dify中Jieba类的create()方法执行过程,重点是段(segment)的关键词的生成。 一.create方法流程概述 整个create方法的目的是为了处理一批文本,提取它们的关键词,并更新关键词表,以便于后续的关…

Redis 框架 jedis 与 lettuce 比较

【需求背景】 由于集群模式下 Spring 对 jedis 的封装,在使用批量方法 (mget、delete) 时会把任务都提交到仅有一个核心线程的 executor 中执行,在高并发场景下会造成应用内大量任务处于排队状态而得不到执行。 具体参考:https://juejin.cn…

CTF之easyupload

拿到题目发现是文件上传的漏洞&#xff0c;但是这个黑名单过滤的有点严格&#xff0c;无论是文件里还是文件后缀都不能出现php 那我们就用<?eval($_POST[a]);?>来进行绕过&#xff08;注意这里要加个GIF89a或者GIP87a进行欺骗&#xff09; 但是后缀依然不能绕过怎么办&…

江协科技51单片机学习- p27 I2C AT24C02存储器

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…