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

相关推荐
匹马夕阳15 分钟前
容器化平台Docker初识
运维·docker·容器
互联网资讯17 分钟前
抖音生活服务商系统源码怎么搭建?
大数据·运维·人工智能·生活
-指短琴长-27 分钟前
Linux从0到1——线程同步和互斥【互斥量/条件变量/信号量/PC模型】
linux·运维·服务器
梦呓010427 分钟前
platform_msi使用
linux
A charmer34 分钟前
畅游 Linux 开发天地:yum 与 vim 详解
linux·运维·服务器
写代码的学渣35 分钟前
TCP/IP原理
服务器·网络·tcp/ip
白了个白i1 小时前
多个方向说下nginx和apache的区别
运维·nginx·apache
jiejianyun8571 小时前
上门回收小程序如何搭建?有个小程序收破烂也要高端?
服务器·小程序·apache
whoami-41 小时前
重发布和路由策略实验
服务器·网络协议·计算机网络
TIANGEKUAJING1 小时前
为什么推荐企业租赁IT设备?
运维·网络·it租赁·it设备租赁·企业it设备租赁