基于centos 7安装Tomcat服务及其负载均衡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于centos 7安装Tomcat服务及其负载均衡相关的知识,希望对你有一定的参考价值。

一、案例分析

1、案例概述

通常情况下,一台Tomcat站点由于可能出现单点故障及无法应付过多的客户复杂多样的请求等问题,不能单独应用于生产环境下,所以需要使用负载均衡来解决这些问题。

nginx是一个非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。

开始准备工作,搭建下面的环境,为了简化,就不部署共享存储服务器了,环境如下:
技术图片

镜像可以到我网盘自行提取:https://pan.baidu.com/s/1YAtbAVRg7wejN3XRl28J1g
提取码:2f7f

二、案例实施

1、部署第一台Tomcat服务器

[root@centos02 ~]# java -version   <!--查看JDK是否安装,若没有,自行安装-->
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@centos02 ~]# systemctl stop firewalld    <!--关闭防火墙-->
[root@centos02 ~]# systemctl disable firewalld   <!--禁止防火墙开机自动启动-->
[root@centos02 ~]# mount /dev/cdrom /mnt/    <!--挂载Linux光盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--清除系统自带yum源-->
[root@centos02 ~]# tar zxvf /mnt/apache-tomcat-7.0.54.tar.gz -C /usr/src/   
                                  <!--解压缩tomcat软件包-->
[root@centos02 ~]# mv /usr/src/apache-tomcat-7.0.54/ /usr/local/tomcat    
                               <!--将tomcat软件包剪切到/usr/local/tomcat目录-->
[root@centos02 ~]# /usr/local/tomcat/bin/startup.sh    <!--启动tomcat服务-->

客户端配置和服务器同网段的IP地址测试访问tomcat是否正常http://192.168.100.20:8080
技术图片

2、Tomcat发布Web站点

[root@centos02 ~]# mkdir /var/www    <!--创建网站根目录-->
[root@centos02 ~]# vim /var/www/index.jsp    <!--编写网站主页测试文件-->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
        <head>
        <title>test01</title>
                </head>
        <body>
        <% out.println("www.benet.com!!!");%>
                </body>
</html>
[root@centos02 ~]# vim /usr/local/tomcat/conf/server.xml    
                                       <!--修改tomcat主配置文件发布网站-->                                                                          
<!--定位到该行,然后添加下面两行内容-->
126             <Context docBase="/var/www/" path="" reloadable="false">   
127                 </Context>     <!--docBase:web应用的文档默认目录-->
                                              <!--path=""设置默认“类”-->
                                              <!--reloadable设置监视“类”是否变化-->
[root@centos02 ~]# /usr/local/tomcat/bin/shutdown.sh   <!--关闭tomcat服务-->
[root@centos02 ~]# /usr/local/tomcat/bin/startup.sh    <!--启动tomcat服务-->

客户端访问http://192.168.100.20:8080 会发现网站主页内容已经成为了我们自行编写的内容
技术图片
至此,192.168.100.20的Tomcat就已经配置完成了,另一台Tomcat服务器192.168.100.30的配置和192.168.100.20的配置完全一样,将上面的配置在192.168.100.30服务器上配置一遍即可,(我这里就懒省事直接复制了,嘿嘿)。不过为了测试的时候可以看出负载均衡的效果,让我们可以看出每次访问的服务器都不是同一台,需要将两台tomcat服务器的网站主页内容设置称为不一样的内容。实际生产环境中,两台Tomcat访问的一定是使用同一个共享存储服务器,不管是哪台服务器向用户提供服务,用户接受到的页面一定是一样的。

3、部署第二台tomcat服务器

[root@centos03 ~]# mkdir /var/www   <!--第二台tomcat服务器上创建网站根目录-->
[root@centos02 ~]# scp /var/www/index.jsp root@192.168.100.30:/var/www/   
             <!--在第一台tomcat服务器复制网站主页测试文件到第二台tomcat服务器-->
The authenticity of host ‘192.168.100.30 (192.168.100.30)‘ can‘t be established.
ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I.
ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b.
Are you sure you want to continue connecting (yes/no)? yes   <!--输入yes-->
root@192.168.100.30‘s password:        <!--输入密码-->
index.jsp                                              100%  240    59.3KB/s   00:00    <!--上传完成-->
[root@centos03 ~]# cd /var/www/   <!--第二台tomcat服务器上查看是否复制成功-->
[root@centos03 www]# ls 
index.jsp
[root@centos02 ~]# scp -r /usr/local/tomcat/ root@192.168.100.30:/usr/local/tomcat
<!--复制tomcat服务所有配置文件到第二台服务器-->
root@192.168.100.30‘s password:   <!--输入密码-->
[root@centos03 ~]# cd /usr/local/tomcat/  <!--查看是否复制成功-->
[root@centos03 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@centos03 ~]# vim /var/www/index.jsp    
                        <!--修改第二台tomcat服务器的网站主页测试文件-->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
        <head>
        <title>test02</title>
                </head>
        <body>
        <% out.println("www.accp.com!!!");%>
                </body>
</html>
[root@centos03 ~]# /usr/local/tomcat/bin/startup.sh   <!--启动tomcat服务-->

客户端访问第二台tomcat服务器http://192.168.100.30:8080
技术图片

4、部署Nginx服务器

[root@centos01 ~]# groupadd nginx   <!--创建管理Nginx的用户-->
[root@centos01 ~]# useradd -M -s /sbin/nologin -g nginx nginx <!--创建管理Nginx的组-->
[root@centos01 ~]# mount /dev/cdrom /mnt/   <!--挂载操作系统盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--清除系统自带yum源-->
[root@centos01 ~]# yum -y install pcre-devel zlib-devel openssl-devel  
                                                   <!--安装Nginx依赖软件-->
[root@centos01 ~]# mount /dev/cdrom /mnt/   <!--切换Linux光盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# tar zxvf /mnt/nginx-1.6.0.tar.gz -C /usr/src/  <!--解压缩Nginx软件包-->
[root@centos01 ~]# cd /usr/src/nginx-1.6.0/  <!--进入nginx目录-->
[root@centos01 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx 
--group=nginx --with-http_stub_status_module --with-http_gzip_static_module 
--with-file-aio --with-http_ssl_module --with-http_flv_module <!--配置Nginx-->
[root@centos01 nginx-1.6.0]# make && make install   <!--编辑及安装Nginx-->
[root@centos01 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/  <!--优化Nginx执行命令-->
[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf   <!--修改Nginx主配置文件 -->
34     upstream tomcat_server {        <!--添加此行-->
 35                 server  192.168.100.20:8080     weight=1;   <!--添加此行-->
 <!--weight参数表示权重,权重越高,表示被分配到的概率越大。
 <!--为了测试效果明显,这里将权重设置为一样-->
 36                 server  192.168.100.30:8080     weight=1;  <!--添加此行-->
 37         }
 38     server {
 39         listen       80;    <!--监听端口号-->
 40         server_name  www.benet.com;   <!--监听域名-->
 41         charset utf-8;    <!--默认支持字符集-->
 42         location / {
 43             root   html;
 44             proxy_pass  http://tomcat_server;  
 <!--定位到该{ }中,写入该行,“http://”后面的名字要和上面添加的upstream项后面的
 名字一致,才可实现调度-->
 45             index  index.html index.htm;
 46         }
[root@centos01 ~]# nginx -t  <!--检查Nginx主配置文件是否错误-->
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@centos01 ~]# nginx   <!--启动Nginx服务-->
[root@centos01 ~]# netstat -anptu | grep nginx  <!--查看Nginx服务运行状态-->
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4186/nginx: master

5、部署DNS

[root@centos01 ~]# umount /mnt/   <!--卸载光盘-->
[root@centos01 ~]# mount /dev/cdrom /mnt/  <!--切换操作系统光盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# yum -y install bind bind-chroot bind-utils  <!--安装DNS依赖软件-->
[root@centos01 ~]# echo "" > /etc/named.conf  <!--清空主配置文件-->
[root@centos01 ~]# vim /etc/named.conf    <!--编辑主配置文件-->
options {
        listen-on       port    53      { any; };
        directory       "/var/named";
};
zone    benet.com       IN      {
        type    master;
        file    "benet.com.zone";
};
[root@centos01 ~]# named-checkconf -z /etc/named.conf <!--检查主配置文件是否错误-->
[root@centos01 ~]# vim /var/named/benet.com.zone 
                              <!--编写benet.com的正向解析区域配置文件-->
$TTL    86400
@       SOA     benet.com.      root.benet.com.(
        2019113001
        1H
        15M
        1W
        1D
)
@       NS      centos01.benet.com.
centos01 A      192.168.100.10
www      A      192.168.100.10
[root@centos01 ~]# named-checkzone benet.com /var/named/benet.com.zone  
                                <!--检查正向解析区域配置文件是否错误-->
zone benet.com/IN: loaded serial 2019113001
OK
[root@centos01 ~]# chmod +x /var/named/benet.com.zone <!--添加执行权限-->
[root@centos01 ~]# chown named:named /var/named/benet.com.zone<!--修改属主属组-->
[root@centos01 ~]# systemctl start named   <!--启动named服务-->
[root@centos01 ~]# systemctl enable named    <!--设置开机自动启动-->

客户端添加DNS地址
技术图片

客户端第一次访问www.benet.com
技术图片

刷新一下网页第二次访问将会看到如下主页内容:
技术图片
可以看到,我们访问的是Nginx服务器,真正处理访问请求的是Tomcat服务器,而且每次访问请求都是不同的Tomcat服务器来处理,效果也就显而易见了。实际工作中两个主页内容是一样的,我这里只是想让大家更好的看出效果所以设置 成为了不一样的内容。

—————— 本文至此结束,感谢阅读 ——————

以上是关于基于centos 7安装Tomcat服务及其负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

在Centos7上部署Tomcat及其负载均衡

Tomcat+nginx+Keepalived部署反向代理负载均衡高可用

CentOS 7.3 部署Tomcat + nginx 负载均衡

lnmt搭建及负载轮询

nginx配置负载均衡

初识TomCat之4——TomCat负载均衡及基于IP的Session sticky