nginx与其他服务器的性能比较:
tomcat服务器面向java语言,是重量级的服务器,而nginx是轻量级的服务器。apache服务器稳定、开源、跨平台,但是apache服务器不支持高并发,nginx能支持处理百万级的tcp连接,10万以上的并发连接,并且是一个很好的跨平台服务器。nginx主要优点有可以实现高并发、部署简单、内存消耗少、成本低等,主要缺点有rewrite功能不够强大,模块没有apache的多。
本篇主要讲解nginx+tomcat反向代理和负载均衡的部署,以通俗实用为主。本篇文章每个部分之间没有太大关系,可根据需求分开学习。
下来看一下nginx反向代理的过程:
nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):
可以看出,负载均衡是通过反向代理的原理实现的,所以也称反向代理的负载均衡。所以我们会部署负载均衡,那么反向代理也就会了。
负载均衡实现的方式分为软件实现和硬件实现两种,硬件实现运行的效率非常高,但是对应的成本也非常高。软件实现运行效率不如硬件,但是成本相对来说低得多。而使用nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且nginx本身支持高并发等。故而使用nginx服务器实现负载均衡,能大大节约企业的成本,并且由于nginx是服务器软件,其执行效率也是非常高。本篇的目的也就是帮助大家使用nginx实现负载均衡。
负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器(这里我们选用nginx),然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器(这里我们选用tomcat)。
如下图,通过反向代理我们实现下面的负载均衡,这里我们假定四台服务器公网的ip,一台做代理服务器,三台做负载均衡下的服务器:
好了,整体架构已经基本上清晰了,下来我们来具体实现下:
提示:本篇我们基本上都是使用ssh进行相关操作的,windows下可以尝试安装putty,mac下直接使用系统自带的终端工具即可。
1.linux下搭建nginx服务器
我们在192.168.2.20这台服务器上搭建nginx服务器:
$scp~/downloads/nginx-1.10.2.tar.gzroot@192.168.2.20:/usr/local
3)安装nginx
$sshroot@192.168.2.20//ssh连接
#yum-yinstallgccgcc-c++autoconfautomake//gcc、gcc-c++的库文件
#yuminstall-ypcrepcre-devel//安装nginx依赖包
#yuminstall-yzlibzlib-devel
注意:-y表示遇到判断全部yes,autoconf表示自动配置,automake表示自动编译。
#tar-zxvfnginx-1.10.2.tar.gz//解压缩
#cdnginx-1.10.2//切换到该目录下
#https://www.fruan.com/post/configure//配置
#makeinstall//安装
检验是否完成安装:
/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf
2)停止nginx服务器:
停止nginx服务器首先要查询nginx的主进程号(masterprocess),假设此处查询得到1060(方便下面演示使用):
ps-ef|grepnginx//查看nginx的主进程号(masterprocess),假设此处查询得到1060
kill-term1060
强制停止:
/usr/local/nginx/sbin/nginx-t-c/usr/local/nginx/conf/nginx.conf//验证
/usr/local/nginx/sbin/nginx-v//查看当前版本
下面进行平滑升级:
#tar-zxvfnginx-1.11.6.tar.gz//解压缩新版本nginx
#cdnginx-1.11.6//切换到该目录下
#https://www.fruan.com/post/configure//配置
#cd/usr/local/nginx/sbin//打开旧版本nginx可执行文件位置
#cpnginxnginx.old//备份旧版本nginx可执行文件,防止升级错误而无法恢复
#cp-rfp/usr/local/nginx-1.11.6/objs/nginx/usr/local/nginx/sbin//复制新版本可执行文件到旧版本处
#rm-f/usr/local/nginx-1.11.6.tar.gz//善后工作删除压缩文件
#rm-rf/usr/local/nginx-1.11.6//删除文件夹
至此,nginx服务器平滑升级成功。
3.nginx中负载均衡的实现
我们还是先连接ssh,然后进行下面操作(一般不建议修改默认主配置文件nginx.conf,所以我们新建负载均衡配置文件fzjh.conf,保证服务器安全,如下):
设置低权限用户,为了安全而设置的
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
#设置pid存放路径(pid是控制系统中重要文件)
#主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
#设置同一个cookie的两次/多次请求,请求的是同一台服务器
#weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动
server192.168.2.21:8080weight=5;
server192.168.2.22:8080weight=5;
server192.168.2.23:8080weight=5backup;
#开启gzip压缩,开启后,访问网页会自动压缩
server_nametest.nginxtest.net;
#location/指用根目录做负载均衡
proxy_passhttp://tomcat_client;
proxy_set_headerhost$host;
proxy_set_headerx-real-ip$remote_addr;
}
输入完成后按下esc,然后输入:
:wq!
就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:
#/usr/local/nginx/sbin/nginx//启动nginx

至此,nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。
4.linux下安装jdk
我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器安装jdk,以192.168.2.21为例:
$scp~/downloads/jdk-8u112-linux-x64.tar.gzroot@192.168.2.21:/usr/local
3)安装jdk
$sshroot@192.168.2.21//ssh连接
#tar-zxvfjdk-8u112-linux-x64.tar.gz//解压缩
#mvjdk1.8.0_112/jdk//将jdk1.8.0_112重命名为jdk
#vi/etc/profile//用vi编辑器打开文件,然后按键盘的i
下来我们移动光标至最后面,两个回车换行,然后添加下面代码配置java的环境变量:
java_home="/usr/local/jdk"
class_path="$java_home/lib:$java_home/jre/lib"
path=".:$path:$java_home/bin"
catalina_home="/usr/local/tomcat"
exportjava_homecatalina_home
输入完成后按下esc,然后输入:
:wq!
就可以保存并退出了。此时我们想让其立即生效,则需要继续输入命令:
java-version
如果返回java版本号则安装成功。
5.linux下搭建tomcat服务器
我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器搭建tomcat服务器,以192.168.2.21为例:
2)上传服务器tomcat安装包
$scp~/downloads/apache-tomcat-8.5.9.tar.gzroot@192.168.2.21:/usr/local
3)安装tomcat
$sshroot@192.168.2.21//ssh连接
#tar-zxvfapache-tomcat-8.5.9.tar.gz//解压缩
#mvapache-tomcat-8.5.9/tomcat//将apache-tomcat-8.5.9重命名为tomcat
4)设置tomcat网页文件目录
tomcat默认网页文件的路径是/usr/local/tomcat/webapps/root,但是一般我们不在这里存放,我们在linux根目录新建data/wwwroot目录:
#cd/usr/local/tomcat/conf
/usr/local/tomcat/bin/startup.sh
2)停止tomcat服务器:
#/usr/local/tomcat/bin/shutdown.sh
到此,nginx+tomcat负载均衡集群已经部署完毕了。不过有了服务器,肯定也少不了数据库,下面拓展一下linux下安装mysql数据库的方法。
7.linux下安装mysql数据库
我们重新找了192.168.2.30这台服务器上mysql数据库:
$scp~/downloads/mysql-5.1.51.tar.gzroot@192.168.2.30:/usr/local
3)安装mysql
$sshroot@192.168.2.30//ssh连接
#groupaddmysql//建立mysql的组
#useraddmysql-gmysql//增加用户mysql到mysql的组中
#yum-yinstallncurses-devel
#tar-zxvfmysql-5.1.51.tar.gz//解压缩
#https://www.fruan.com/post/configure--prefix=/usr/local/mysql--with-mysqld-ldflags=-all-static--with-client-ldflags=-all-static--with-readline--with-sll
//配置,设置安装路径,设置编译mysql不带共享库,设置编译client不带共享库,设置要以rmp的方式安装tar包,设置以rmp的方式安装opensll
#makeinstall//安装,在make[4]的时候等待时间比较长,几分钟到十几分钟,都是正常现象
#/usr/local/mysql/bin/mysql_install_db--user//对安装好的mysql进行初始化
#cphttps://www.fruan.com/post/support-files/mysql.server/etc/init.d/mysql//将mysql启动服务复制到系统中并重命名为mysql
#cphttps://www.fruan.com/post/support-files/my-medium.cnf/etc/my.cnf//复制规则文件
#chmod755/etc/init.d/mysql//更改文件权限
//文件权限由三个数字组成,第一位:文件拥有者的权限,第二位:文件拥有者同组的人的权限,第三位:文件拥有者非同组人的权限
//7:可读可写可执行,5:可读可执行
#chown-rmysql.//将/usr/local/mysql的拥有者更改为mysql
#chgrp-rmysql.//将/usr/local/mysql归到mysql组中
#kill-93632//将mysql所有进程号依次杀死,这里假定是3632
#/usr/local/mysql/bin/mysql_install_db--user=mysql//再次初始化
#servicemysqlstart//启动mysql
/usr/local/mysql/bin/mysql-uroot-p
如果输入密码后可以登进mysql,那么就测试成功。下面我们设置mysql允许开启远程连接:
#/usr/local/mysql/bin/mysql-uroot-p
mysql>grantallprivilegeson*.*to'root'@'%'identifiedby'123456'withgrantoption;
//创建用户用于远程连接(root:用户名,%:所有电脑都可以连接,也可以设置某个ip地址运行连接,123456:密码)
mysql>flushprivileges;//立即生效
下面我们查询一下数据库的用户:
mysql>selectdistinctconcat('user:''',user,'''@''',host,''';')asqueryfrommysql.user;
mysql>\q//登出
找一台电脑测试一下,使用navicat远程登录mysql,登进成功。
以上就是Nginx+Tomcat反向代理、负载均衡、集群部署的方法的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--nginx配置tomcat的反向代理
本文地址:https://www.idcbaba.com/guowai/3295.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



