nginx服务+tomcat实现负载均衡

在这里插入图片描述
图片借鉴博客https://www.cnblogs.com/jalja/archive/2016/12/01/6118782.html

前几篇有关tomcat的博客,我们已经搭建了HTTP以及HTTPS和jpress网站。
这篇博客实现nginx+tomcat实现负载均衡。

规划:
web01 10.0.0.7
web02 10.0.0.8 后端tomcat
web03 10.0.0.9
lb01 10.0.0.5 nginx负载均衡

第一个历程:在三台web上部署tomcat服务
①上传JDK和tomcat包

[root@test ~]# mkdir /server/tools -p
[root@test ~]# cd /server/tools/
[root@test tools]# rz -E
rz waiting to receive.
[root@test tools]# rz -E
rz waiting to receive.
[root@test tools]# ll
total 185908
-rw-r--r-- 1 root root   9128610 Mar 24 22:55 apache-tomcat-8.0.27.tar.gz
-rw-r--r-- 1 root root 181238643 Mar 24 23:03 jdk-8u60-linux-x64.tar.gz
[root@test tools]# 

②修改环境变量

[root@test application]# vim /etc/profile
[root@test application]# tail -n 5 /etc/profile

export JAVA_HOME=/application/jdk
export TOMCAT_HOME=/application/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@test application]# secure /etc/profile
bash: secure: command not found
[root@test application]# source  /etc/profile
[root@test application]# 

③创建软连接

[root@test tools]# 
[root@test tools]# mkdir /application -p
[root@test tools]# tar xf  apache-tomcat-8.0.27.tar.gz   -C /application/
[root@test tools]# tar xf  jdk-8u60-linux-x64.tar.gz   -C /application/
[root@test tools]# cd /application/
[root@test application]# ll
total 0
drwxr-xr-x 9 root root 160 Mar 25 08:07 apache-tomcat-8.0.27
drwxr-xr-x 8   10  143 255 Aug  4  2015 jdk1.8.0_60

[root@test application]# ln -s /application/jdk1.8.0_60/ /application/jdk
[root@test application]# ln -s /application/apache-tomcat-8.0.27/ /application/tomcat
[root@test application]# ll
total 0
drwxr-xr-x 9 root root 160 Mar 25 08:07 apache-tomcat-8.0.27
lrwxrwxrwx 1 root root  25 Mar 25 08:08 jdk -> /application/jdk1.8.0_60/
drwxr-xr-x 8   10  143 255 Aug  4  2015 jdk1.8.0_60
lrwxrwxrwx 1 root root  34 Mar 25 08:08 tomcat -> /application/apache-tomcat-8.0.27/
[root@test application]# 

④编写网站文件(注意在ROOT目录中添加index.jsp默认文件)

[root@web01 bin]# cat /html/blog/ROOT/index.jsp 
web01 10.0.0.7
[root@web02 bin]#  cat /html/blog/ROOT/index.jsp
web02 10.0.0.8
[root@web03 lib]#  cat /html/blog/ROOT/index.jsp
web03 10.0.0.9

⑤修改server.xml 默认的WebApps的站点目录(自定义站点目录的属主属组为root)
在这里插入图片描述

测试访问web页面是否正常
在这里插入图片描述

三台机器都是一样的操作,只有站点目录的内容不一样,做区别使用。

第二个历程:nginx负载均衡的配置

扫描二维码关注公众号,回复: 10811262 查看本文章
[root@lb01 nginx]# cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    #include /etc/nginx/conf.d/*.conf;
  upstream tomcats {
     server 10.0.0.7:8080;  
     server 10.0.0.8:8080; 
     server 10.0.0.9:8080; 
 }
    server {
    listen 80;
    server_name localhost;
    location / {
    proxy_pass  http://tomcats;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_next_upstream  error  timeout invalid_header  http_500 http_403;
  }
 }



}

nginx -t 检查配置文件是否有错误
没有错误重启nginx服务

测试访问页面,看是否有变化
在这里插入图片描述

注意这里访问时使用的端口就是80

这里只是简单的实现nginx负载,接下来实现HTTPS的nginx负载,访问jpress网站页面

接着来,根据上面的操作,我们可以实现负载均衡作用,因为我们是手写的一些用于区别是否轮询的简单页面
现在实现负载均衡jpress页面

第一个历程:将jpress代码包放入到/html/blog下

[root@web03 blog]# ll
total 20312
drwxr-xr-x 8 root root      120 Mar 25 22:46 jpress-web-newest
-rw-r--r-- 1 root root 20797013 Mar 25 03:13 jpress-web-newest.war
drwxr-xr-x 2 root root       24 Mar 25 22:40 logs
[root@web03 blog]# 

提示:三个后端web一样的做法。
此处注意:不要将jpress的压缩包删除,删除后会出现解压的代码文件也会删除。

第二个历程:创建数据库信息

[root@mariadb ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 199
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database web01;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use web01
Database changed
MariaDB [web01]> grant all on web01.* to 'web01'@'172.16.1.7' identified by 'web01';
Query OK, 0 rows affected (0.00 sec)

MariaDB [web01]> exit

此处拿一个举例,其他的两个网站的数据库信息也要创建。

第三个历程:输入uri信息进行部署初始化页面

在这里插入图片描述
三个页面都是一样的操作。

到这里就会出现一只卡着不动的情况,需要自己重启tomcat服务,手动修改uri信息进行跳转登录页面
在这里插入图片描述
我这里是写了一些用于区别web页面的信息

第四个历程:精简化uri信息
在这里插入图片描述
三个web一样的操作

精简化以后重启tomcat服务

登录测试查看
在这里插入图片描述
第五个历程:配置HTTPS方式访问

①生成证书文件

 keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore  /root/tomcat.keystore -storepass 123456 -deststoretype pkcs12 -dname "CN=(tomcat), OU=(tomcat), O=(tomcat), L=(beijing), ST=(beijing), C=(cn)"

②修改配置文件加载证书
在这里插入图片描述
③修改完以后重新启动tomcat服务
注意:这里再访问时,不要输入8080端口号了

在这里插入图片描述
直接输入https://10.0.0.9

第六个历程:设置HTTP方式访问直接跳转为HTTPS
①修改web.xml文件
在web.xml文件中后面,也就是倒数第二行里,加上如下配置:

<login-config>  
    <!-- Authorization setting for SSL -->  
    <auth-method>CLIENT-CERT</auth-method>  
    <realm-name>Client Cert Users-only Area</realm-name>  
</login-config>  
<security-constraint>  
    <!-- Authorization setting for SSL -->  
    <web-resource-collection >  
        <web-resource-name >SSL</web-resource-name>  
        <url-pattern>/*</url-pattern>  
    </web-resource-collection>  
    <user-data-constraint>  
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>  
    </user-data-constraint>  
</security-constraint> 

在这里插入图片描述

②修改server.xml文件

在这里插入图片描述
③重启tomcat服务

配置三台一样的操作

到此,三台web实现安装jpress网站,HTTPS配置、HTTP访问直接跳转为HTTPS方式访问

接下来负载均衡访问看看是否是http跳转为HTTPS

在这里插入图片描述

不成,会报错。

此时可以看出后端的节点是没有什么错误的了,就是负载均衡的配置文件上修改端口,配置证书的问题。

[root@lb01 key]# cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    #include /etc/nginx/conf.d/*.conf;
  upstream tomcats {
     server 10.0.0.7:443;  
     server 10.0.0.8:443; 
     server 10.0.0.9:443; 
 }
    server {
    listen 443 ssl;
    server_name localhost;
    #rewrite ^(.*)$ https://$host$1 permanent;
    ssl_certificate /etc/nginx/key/server.crt;
    ssl_certificate_key /etc/nginx/key/server.key;
    location / {
    proxy_pass  https://tomcats;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_next_upstream  error  timeout invalid_header  http_500 http_403;
  }
 }



}
[root@lb01 key]# 

注释掉rewrite指令是因为:暂时不实现用户访问负载均衡时输入HTTP直接跳转为HTTPS,原因就是会出现重定向次数过多的情况。

测试:这时输入的是https://10.0.0.5
还没有实现HTTP跳转为HTTPS

多刷新几次会更换页面的哦

在这里插入图片描述

配置nginx负载均衡时,我郁闷在一个地方:需不需要配置和后端tomcat一样的证书。
其实是不需要的,nginx负载上的证书再生成一个就可以了。不必和后端tomcat一样

这里实现负载HTTPS的方式是后端和nginx负载都配置证书的方式。

发布了224 篇原创文章 · 获赞 19 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42506599/article/details/105111702