Nginx+Tomcat负载均衡、动静分离群集

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Nginx+Tomcat负载均衡、动静分离群集

两台Tomcat配置

1:实施准备

关闭防火墙

[root@localhost ~]# systemctl stop firewalld

 

2:查看JDK是否安装

[root@localhost ~]# java -version

openjdk version "1.8.0_102"

OpenJDK Runtime Environment (build 1.8.0_102-b14)

OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

 

3:安装配置Tomcat

[root@localhost ~]# tar zxvf apache-tomcat-8.5.30.tar.gz

[root@localhost ~]# mv apache-tomcat-8.5.30 /usr/local/tomcat8

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

[root@localhost ~]# netstat -anpt | grep 8080

tcp6       0      0 :::8080                 :::*                    LISTEN      45388/java  

 

浏览器测试Tomcat网站:127.0.0.1:8080

image.png


 

7:建立java的web站点

(1)建立web目录

[root@localhost ~]# mkdir -p /web/webapp1

 

(2)建立java测试页面

[root@localhost ~]# vi /web/webapp1/index.jsp

test web

 

(3)修改server.xml文件

[root@localhost ~]# vi /usr/local/tomcat8/conf/server.xml

在148--151行

<Host name="localhost"  appBase="webapps"

           unpackWARs="true" autoDeploy="true">

       <Context docBase="/web/webapp1" path="" reloadable="true">

       </Context>

(4)重启tomcat服务

[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

 

(5)访问网站测试

http://127.0.0.1:8080


nginx部分

[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel


[root@localhost ~]# groupadd www


[root@localhost ~]# useradd -g www www -s /bin/false [root@localhost ~]# tar xf nginx-1.12.0.tar.gz [root@localhost ~]# cd nginx-1.12.0 [root@localhost nginx-1.12.0]#

./configure --prefix=/usr/local/nginx --user=www -- group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_mo dule --with-http_flv_module


注释:

//--user=,--group= 指定运行的用户和组 //--with-file-aio 启用文件修改支持 //--with-http_stub_status_module 启用状态统计 //--with-http_gzip_static_module 启用 gzip 静态压缩 //--with-http_flv_module 启用 flv 模块,提供寻求内存使用基于时间的偏移量文件 //--with-http_ssl_module 启用 SSL 模块


[root@localhost nginx-1.12.0]# make && make install



编写脚本实现Nginx服务启动、停止、重载等操作

vim /etc/init.d/nginx

添加以下内容:


#!/bin/bash

# chkconfig: - 99 20

# description: Nginx Server Control Script

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

  $PROG

 ;;

stop)

 kill -s QUIT $(cat $PIDF)

 ;;

restart)

 $0 stop

 $0 start

 ;;

reload)

 kill -s HUP $(cat $PIDF)

 ;;

status)

 [ -f $PID ] &> /dev/null

      if [ $? -eq 0 ]

         then

         netstat  -anpt | grep nginx

      else

         echo "Nginx is not running."

       fi

 ;;

*)

 echo "Usage: $0 {start|stop|restart|reload|status}"

esac

exit 0


为脚本添加执行权限

chmod +x /etc/init.d/nginx

添加nginx为系统服务

chkconfig --add nginx

启动nginx服务

systemctl start nginx


[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

添加红色部分内容


#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

   worker_connections  1024;

}

 

 

http {

   include       mime.types;

   default_type  application/octet-stream;

   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';

 

   #access_log  logs/access.log  main;

 

   sendfile        on;

   #tcp_nopush     on;

 

   #keepalive_timeout  0;

   keepalive_timeout  65;

 

   #gzip  on;

   #

 

       upstream tomcat_server {

       server 192.168.1.10:80 weight=1;

       server 192.168.1.11:80 weight=1;

       }

 

   server {

       listen       80;

       server_name  localhost;

       #charset koi8-r;

 

       #access_log  logs/host.access.log  main;

 

       location ~ .*.jsp$ {

proxy_set_header HOST $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Client-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://tomcat_server;

}

 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {

root /usr/local/nginx/html/img;

expires 30d;

}

 


下面是编辑 Nginx 静态页面文件

[root@localhost ~]# vim /usr/local/nginx/html/index.html


<!DOCTYPE html>

<html>

<head>

<meta http-equiv="content-type" content="text/html;charset=utf-8">

<title>静态页面</title>

<style>

body {

width: 35em;

margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif;

}

</style>

</head>

<body>

<h1>静态页面</h1>

<p>这是个静态页面</p>

<img src="2.jpg"width="300"height="300">

</body>

</html>


[root@nginx ~]# mkdir /usr/local/nginx/html/img   #创建静态文件目录

[root@nginx ~]#cp /root/logo.jpg /usr/local/nginx/html/img

[root@localhost ~]# /usr/local/nginx/sbin/nginx -t   #测试配置文件

[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf   #启动nginx


查看 Nginx 服务进程

[root@localhost ~]# ps aux | grep nginx

root 13304 0.0 0.0 20492 624 ? Ss 17:59 0:00 nginx: master proc

ess /usr/local/nginx/sbin/nginx -c /usr/local/nginx/confnginx.conf

www 13305 0.0 0.1 20940 1348 ? S 17:59 0:00 nginx: worker proc

ess

root 13311 0.0 0.0 112664 972 pts/0 S+ 17:59 0:00 grep --color=auto

nginx 查看端口号及 PID 进程号。

[root@localhost ~]# netstat -anpt | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13304/nginx: master


测试静态网页

http://192.168.1.12

测试负载均衡

http://192.168.1.12/index.jsp


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
20天前
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
67 4
|
4月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
194 59
|
2月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
208 11
|
2月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
248 9
|
3月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
2月前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
211 5
|
2月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
193 3
|
3月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
174 3
|
4月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。
|
4月前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?