Loading

Nginx

Nginx

1. 应用服务器集群

搭建应用服务器集群存在哪些问题?

  1. 如何将某一时刻请求均分到后端服务集群中某一个节点 负载--->均衡
  2. 如何实现应用服务器集群环境中session共享问题
    • tomcat之间session同步
    • 使用redis或cachedb实现session共享(推荐)

image-20210104221703805

2. 安装Nginx

2.1 Nginx的引言

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

2.2 Nginx的安装

# 1.安装必要依赖
	yum install -y gcc pcre-devel zlib-devel
# 2.下载nginx
	https://nginx.org/en/download.html
# 3.将nginx上传到linux,并解压缩
	tar -zxvf nginx-1.18.0.tar.gz
# 4.查看Nginx安装目录
	auto     CHANGES.ru  configure  html     man     src
	CHANGES  conf        contrib    LICENSE  README
# 5.在Nginx安装目录中执行如下命令:(指令安装位置)
	./configure --prefix=/usr/nginx
# 6.执行上述命令后,执行如下命令:
	make && make install
# 7.编译完成后进行编译安装目录/usr/nginx目录中查看:
	conf  html  logs  sbin
# 8.启动nginx,进入nginx安装目录sbin目录中执行:
	./nginx
# 9.在windows中浏览器访问,可以看到nginx欢迎界面:
	localhost
注意:关闭网络防火墙或者开放80端口
# 10.关闭nginx,进入nginx安装目录的sbin目录中执行:
	./nginx -s stop
# 11.改变配置想让它生效而不停止服务
	 nginx -t;  nginx -s reload
# 12.nginx配置文件在nginx安装目录的conf目录中

3.负载均衡配置

# 1.在多台机器上启动tomcat,都能看到主页则代表启动成功:
	http://ip1:8080/
	http://ip2:8080/
	http://ip3:8080/
# 2.修改tomcat1端口号(伪分布式)
	vim tomcat/tom1/conf/server.xml,修改如下内容
	a.<Server port="8001" shutdown="SHUTDOWN">
	b.<Connector port="8989" protocol="HTTP/1.1"
	c.<Connector protocol="AJP/1.3"
               address="::1"
               port="10010"
               redirectPort="8443" />
# 3.修改tomcat2端口号(伪分布式)
	vim tomcat/tom1/conf/server.xml,修改如下内容
	a.<Server port="8002" shutdown="SHUTDOWN">
	b.<Connector port="8990" protocol="HTTP/1.1"
	c.<Connector protocol="AJP/1.3"
               address="::1"
               port="10011"
               redirectPort="8443" />
# 4.修改tomcat3端口号(伪分布式)
	vim tomcat/tom1/conf/server.xml,修改如下内容
	a.<Server port="8003" shutdown="SHUTDOWN">
	b.<Connector port="8991" protocol="HTTP/1.1"
	c.<Connector protocol="AJP/1.3"
               address="::1"
               port="10012"
               redirectPort="8443" />
# 5.修改nginx配置文件将多个tomcat配置到nginx的配置文件中:
	1).vim conf/nginx.conf,在server标签上加入如下配置:
		upstream 集群名称 {
		  server ip1:tomcat端口;
		  server ip2:tomcat端口;
		  server ip3:tomcat端口;
		}
	2).将配置文件中 location /替换为如下配置:
	location / {
		proxy_pass http://tomcat-servers;
		proxy_redirect	off;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header Host $http_host;
		proxy_next_upstream http_502 http_504 error timeout invalid_header;
	}

image-20210105112702257

# 6.进入nginx安装目录sbin目录启动nginx
	./nginx -c /usr/nginx/conf/nginx.conf
# 7.访问nginx,看到其中一个tomcat画面:
	localhost

4. Nginx负载均衡策略

# 1.轮询
	说明:默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器
# 2.weight权重
	说明:weight参数用于指定轮询几率,weight的默认值为1,weight的数值与访问比率成正比 
    upstream tomcat-servers {
    server ip1:tomcat端口	weigth=2;
    server ip2:tomcat端口;
    server ip3:tomcat端口	backup;
    }
    注意:1.权重越高分配到需要处理的请求越多。
    	 2.此策略可以与least——conn和ip——hash结合使用主要用于后端服务器性能不均。   	 
# 3.ip_hash   ip.hash%节点可用数
	说明:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
    upstream tomcat-servers {
    ip_hash;	#保证每个访客固定访问一个后端服务器
    server ip1:tomcat端口;
	......
    }
# 4.least_conn
	说明:把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
    upstream tomcat-servers {
    least_conn;		#把请求转发给连接数较少的后端服务器
    server ip1:tomcat端口;
    }

5. 使用Nginx部署多个springboot项目

  1. 安装好nginx后,修改nginx.conf的配置

    server {
        listen       80;
        server_name  127.0.0.1;
        access_log logs/book.log;
        error_log logs/book.error;
     
        #将/blog请求转发给http://127.0.0.1:8011/blog请求转发给http处理
        location /wx-service {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8011/blog请求转发给http;
        }
     
        #将/chat请求转发给http://127.0.0.1:8012/chat处理
        location /bootdo {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8012/chat;
        }
    }
    
  2. 由于是将不同的请求转发到不同的服务器,所以需要修改项目中的配置文件

    server:
         context-path: /blog
    
posted @ 2021-06-27 18:41  nuoxin  阅读(101)  评论(0)    收藏  举报