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

相关推荐
wn5311 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
hanniuniu132 分钟前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡
鱼饼6号16 分钟前
Prometheus 上手指南
linux·运维·centos·prometheus
Asher Gu21 分钟前
Linux系统编程入门 | 模拟实现 ls -l 命令
linux
PatrickYao042235 分钟前
记一次安装discuz时遇到的错误
服务器
c无序39 分钟前
【Linux进程控制】进程程序替换
linux
小宋10212 小时前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
m0_609000422 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
小安运维日记3 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
kejijianwen4 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle