目录
[三、 运行测试Tomcat是否安装成功](#三、 运行测试Tomcat是否安装成功)
实战目的是为了Nginx和后端的Tomcat都可以实现高可用,防止单节点故障的情况发生。
首先我们先部署后端Tomcat服务
1 . TOMCAT
文章链接
重点!:安装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。
- NGINX
安装nginx环境包
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
方案一:Nginx的源码简单安装
(1)、进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载
(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服务如果单节点出现异常,不影响业务正常使用。