看多少理论都不如实践来的快,
New Documentation |
1.nginx搭建
Write here...
Copyright ©2018 My Company. All Rights Reserved.
nginx的第一个作用:
负载均衡:
什么是项目的负载均衡?
项目的负载:
所谓项目的负载其实就是客户访问量
eg:
下午三点淘宝网的客户访问量为50万
凌晨三点淘宝网的客户访问量为50人
在下午三点淘宝服务器的负载为50万
。。。
项目负载的均衡:
其实淘宝服务器并不是只有一台
最终其实在淘宝整个网站,在每一个省份都会有服务器
所谓的均衡就是把所有的访问量平均分布在各个服务器上,使各个服务器的性能达到平衡,这种形式就称之为均衡
nginx:
其实就是一个框架,也可以理解为一个工具
作用就是把访问量平均的分布在各个服务器上,保证各个服务器达到性能平衡的一种状态
nginx其实就是由Linux系统进行开发的,并且java项目绝大多数都会部署在Linux上,
所以需要把nginx配置在Linux上面
再把java web项目打成war包,放置在各个服务器的tomcat中
当tomcat启动的时候,相当于把同一个项目启动很多次
eg:
6台服务器
6个tomcat
每一个tomcat上面都有一个相同的项目
当6个tomcat同时启动的时候--->相当于6个一样的项目运行
但是这6个tomcat之间并没有什么关系,也不会自动搭建负载均衡
第七台服务器:
配置nginx框架
所有的用户请求,都需要先到nginx框架中,再由ngixn统一进行分配到6个服务器的tomcat上
linux服务器上nginx的配置:
4.在linux上配置nginx:
4.1.修改HOSTNAME
vi /etc/sysconfig/network
4.2.配置HOSTNAME和IP的映射
vi /etc/hosts
4.3.关闭防火墙
service iptables stop
4.4.关闭防火墙开机启动
chkconfig iptables off
4.5.重新服务器
reboot(一定要使用root用户)
4.6.把下载好的nginx使用XFtp上传到linux上(/usr/local/src)
4.7.解压压缩包
tar -zxvf nginx.tar.gz
4.8.进入解压出的nginx目录
cd
4.9.在/usr/local目录下创建nginx的快捷方式快捷方式
./configure --prefix=/usr/local/nginx-1.12.2
解压路径/usr/local/src
4.9.1.报错make: *** No targets specified and no makefile found. Stop.
4.9.2.安装确实的包gcc pcre-devel openssl openssl-devel
yum -y install gcc pcre-devel openssl openssl-devel
安装成功显示:
Dependency Updated:
cpp.x86_64 0:4.4.7-18.el6 e2fsprogs.x86_64 0:1.41.12-23.el6 e2fsprogs-libs.x86_64 0:1.41.12-23.el6
krb5-libs.x86_64 0:1.10.3-65.el6 libcom_err.x86_64 0:1.41.12-23.el6 libgcc.x86_64 0:4.4.7-18.el6
libgomp.x86_64 0:4.4.7-18.el6 libselinux.x86_64 0:2.0.94-7.el6 libselinux-python.x86_64 0:2.0.94-7.el6
libselinux-utils.x86_64 0:2.0.94-7.el6 libss.x86_64 0:1.41.12-23.el6
Complete!
4.10.重新执行创建快捷方式命令
./configure --prefix=/usr/local/nginx-1.12.2
4.11.编译并安装nginx
make & make install
编译成功后显示:
make[1]: Leaving directory `/usr/local/src/nginx-1.12.2'
4.12.测试ngixn是否安装成功
启动nginx是否成功
启动的时候一定要从刚才创建的快捷方式目录启动,如果在解压目录下则找不到sbin目录
cd /usr/local/nginx-1.12.2/sbin
./nginx
配置nginx的负载均衡:
反向代理
把所有的请求全部交给nginx进行分配,这种形式就称之为反向代理
请求--->服务器的controller
请求--->ngixn--->分配到服务器的controller
所有的配置信息一定要在/usr/local/中的nginx目录完成,如果配置在nginx的解压目录,是没有任何一点效果的!!!!!!!!
1.进入nginx目录的conf文件夹,找到nginx.conf文件
cd ....
vi nginx.conf
2.配置nginx.conf文件
找到文件中server模块,这个server就是配置服务器(tomcat)的(tomcat,jboss,jetty,weblogic)
3.配置服务器:
找到location /模块,指定服务器的类型,自己定义的(tomcat)
location \ {
proxy_pass http://tomcats;
}
4.配置tomcats:
一定要在location /模块的上面,如果在下面配置,按照自然顺序加载会报错,找不到tomcats
并且一定要配置在http模块的里面
tomcats模块中就是配置一共有多少tomcat,有10个就配10个
upstream tomcats {
server 192.168.67.139:8080;
server 192.168.67.139:8081;
}
5.重新加载ngixn
cd /usr/local/nginx-1.12.2/sbin
./sbin -s reload
6.配置java环境变量
省略
7.配置两个tomcat
记得修改端口号
分别为8080和8081
如果网速足够快,就可以实现8080和8081tomcat交替访问!
默认情况下:按照理想状态下,nginx会往8080和8081交替的分配请求信息!
如果服务器集群中,每一台的服务器性能不一样,也就意味着每一台服务器被分的访问量不一样
这个时候默认的分配规则就满足当前服务器集群了,所以需要自定义配置
通过权重进行配置
weight
在upstream tomcats {
server 192.168.67.139:8080 weight=9;
server 192.168.67.139:8081;
}
如果单独的配置一个,说明nginx最终只会往分配了权重的那一台服务器上进行分配访问量
另一台服务器,nginx会默认认识该权重为0
并且权重是不允许配置负数,最小为0,最大没有上线,但是配了也没有什么卵用!
一般权重都是加起来一共等于10即可
eg:
5台服务器
8080,8081,8082,8083,8084
8080 3
8081 2
8082 1
8083 2
8084 2
sudo ./usr/local/nginx/sbin/nginx -s reload
location 模块可以注意以下配置切莫多走冤枉路
location 请求 app
root 指定路径 /home/user/
index index.html
则真实路径 /home/user/app/index.html
alias 指定路径 /home/user/
index index.html
则真实路径 /home/user/index.html
proxy_pass 代理 作用把所有请求进行转发
proxy_set_header
proxy_set_header用来重定义发往后端服务器的请求头。
语法格式:
proxy_set_header Field Value;
Value值可以是包含文本、变量或者它们的组合。常见的设置如:
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;