负载均衡
1.负载平衡是指在一组后端服务器(也称为服务器场或服务器池)之间有效地分配传入网络流量。
2.现代化的高流量网站必须以快速可靠的方式满足来自用户或客户端的数十万个(即使不是上百万个)并发请求,并返回正确的文本,图像,视频或应用程序数据。为了经济高效地扩展以满足这些高容量,现代计算最佳实践通常需要添加更多服务器。
3.一个负载均衡器充当“交通警察”坐在你的服务器前面,横跨能够履行最大化速度和容量利用率,确保没有一台服务器超负荷工作的方式,可能会降低性能这些请求的所有服务器路由客户端请求。如果单个服务器出现故障,则负载平衡器会将流量重定向到其余的联机服务器。将新服务器添加到服务器组后,负载均衡器将自动开始向其发送请求。
一、前言:Nginx 安装配置和xftp
的使用
1.Nginx 安装配置
安装和配置Nginx参考链接:Nginx 安装配置链接
如果没有出现欢迎界面,请返回步骤一,查看80端口是否配置!
配置方式:
SpringBoot整合NoSql(二)——Redis远程连接ESC服务器实现session 共享一文中已经介绍
2.上传服务器jar包工具----xftp
将本地jar包导入服务器,这里我们用的是xftp
客户端
下载链接:https://pan.baidu.com/s/16DV9E9pjnxJw-7G5T5sM4A 提取码:gb0l
错误解决:
参考链接:Xshell5:要继续使用此程序,您必须应用最新的更新或使用新版本
如果暂时使用,可以用修改系统时间的方案解决!
二、创建SpringBoot工程并打包成jar包上传服务器
1.写控制类接口
public class TestController {
@RestController
public class HelloController {
@Value("${server.port}")
Integer port;
@GetMapping("/set")
public String set(HttpSession session) {
session.setAttribute("user", "alvin");
return String.valueOf(port);
}
@GetMapping("/get")
public String get(HttpSession session) {
return session.getAttribute("user") + ":" + port;
}
}
}
application.properties
配置文件下面配置我们的Redis
spring.redis.host=121.40.83.80 #远程服务器ip
spring.redis.port=6379 #Redis默认端口
spring.redis.password=123456 #Redis密码
spring.redis.database=0 #Redis数据
server.port=8080
具体操作参照链接:SpringBoot整合NoSql(二)——Redis远程连接ESC服务器实现session 共享步骤二、三
2.上传jar包到服务器
然后将此项目打包并上传远程服务器
3.配置安装好的nginx
upstream alvin{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}
#下面是server虚拟主机的配置
server
{
listen 80;#监听端口
server_name localhost;#域名
location / {
proxy_pass http://alvin;
proxy_redirect default;
}
##此处省略后面默认配置
在这段配置中:
- upstream 表示配置上游服务器
- javaboy.org 表示服务器集群的名字,这个可以随意取名字
- upstream 里边配置的是一个个的单独服务
- weight 表示服务的权重,意味者将有多少比例的请求从 Nginx 上转发到该服务上
- location 中的 proxy_pass 表示请求转发的地址,/ 表示拦截到所有的请求,转发转发到刚刚配置好的服务集群中
- proxy_redirect 表示设置当发生重定向请求时,nginx 自动修正响应头数据(默认是 Tomcat 返回重定向,此时重定向的地址是 Tomcat 的地址,我们需要将之修改使之成为 Nginx 的地址)。
配置完成后,重启 Nginx:
/usr/local/webserver/nginx/sbin/nginx -s reload
4.服务器中运行jar
包
运行之前,我们清一下Redis中的缓存。
nohup java -jar hello-0.0.1-SNAPSHOT.jar > 8080.log &
nohup java -jar hello-0.0.1-SNAPSHOT.jar --server.port=8081 > 8081.log &
nohup
的作用是当我们把命令行窗口关闭时,不要把我们的SpringBoot项目停止掉,而是挂起我们的SpringBoot项目,在后台运行。
> 8080.log
将日志写进8080.log
文件里面
&
表示在后台运行
三、登录验证
cat -n 8080.log
- 首次登录需要密码验证
- 测试
8081
端口
实现负载均衡机制
不停的刷新页面121.40.83.80/set
我们会发现页面在8080端口
和8081端口
来回切换,因为权重我们配置的是1:1
,因此,请求端口的概率相同。因此,实现了简单的负载均衡机制!