一般状况下,一台Tomcat站点因为可能出现单点故障及没法应付过多的客户复杂多样的请求等问题,不能单独应用于生产环境下,因此须要使用负载均衡来解决这些问题。html
Nginx是一个很是优秀的http服务器软件,它可以支持高达50000个并发链接数的响应,拥有强大的静态资源处理能力,运行稳定,而且内存、CPU等系统资源消耗很是低。目前不少大型网站都应用Nginx服务器做为后端网站程序的反向代理及负载均衡器,来提高整个站点的负载并发能力。java
开始准备工做,搭建下面的环境,为了简化,就不部署共享存储服务器了,环境以下:nginx
镜像能够到我网盘自行提取:https://pan.baidu.com/s/1YAtbAVRg7wejN3XRl28J1g
提取码:2f7f web
[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:8080apache
[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访问的必定是使用同一个共享存储服务器,不论是哪台服务器向用户提供服务,用户接受到的页面必定是同样的。vim
[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后端
[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
[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地址centos
客户端第一次访问www.benet.com tomcat
刷新一下网页第二次访问将会看到以下主页内容:
能够看到,咱们访问的是Nginx服务器,真正处理访问请求的是Tomcat服务器,并且每次访问请求都是不一样的Tomcat服务器来处理,效果也就显而易见了。实际工做中两个主页内容是同样的,我这里只是想让你们更好的看出效果因此设置 成为了避免同样的内容。服务器
—————— 本文至此结束,感谢阅读 ——————