图片借鉴博客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负载均衡的配置
[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负载都配置证书的方式。