两台服务器:
业务需求:
有两台服务器,一台供于线上使用(172.16.10.10),一台供于研发使用(172.16.10.20)
如果线上的服务器挂了,需要将所有请求转移到研发的机器上,以确保线上服务正常使用;
正常时间还是线上使用线上的服务器,研发用研发的服务器;只有在线上服务器挂了的时候才会使用备用的研发服务器;
需求实现:
在nginx服务器配置中添加负载:(设置负载均衡时同台服务器不同端口也可以,不同服务器,同端口也可以)
upstream front_server{ #定义一个服务配置front_server
ip_hash; #表示配置一个用户固定访问一台设备
server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1
server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2
}
server {
listen 8099; #如果有一个服务是本台的那么8080肯定会被占用,这时候我们可以改一个访问端口即可;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://front_server$request_uri;
proxy_http_version 1.1;
proxy_set_header Uparade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
配置完负载之后,报错保存退出,检测nginx
配置语法是否有误;
#检测nginx配置语法是否有误,前面路径可根据自己安装的目录来写
/usr/local/nginx/sbin/nginx -t
返回这个有ok
,则nginx配置没有问题;如果有报错会显示几行报错的。
检测没问题之后,重新启动nginx服务
#重启nginx服务,前面路径可根据自己安装的目录来写
/usr/local/nginx/sbin/nginx -s reload
#启动完成,检查是否启动(ps查看服务是否正常启动、netstat查看配置的端口是否正常启动)
ps -ef | grep nginx
netstat -anput | grep 8099
#完成之后就可以页面访问了。
访问页面,持续监控两台服务的日志输出,测试即可;
负载均衡方式(常用的三种):
轮询:两台服务器会随机发送请求;
加权轮询:两台服务器也都会随机发送请求,但是会有一个权重值,谁的权重值高,接收的请求就会比另一个多;
ip_hash:也是会有权重值,谁的权重值越高,请求就会在最高的权重值中,只有当权重值最高的那台服务器挂了,再会去找权重值第二的服务器;(1为最高权重值)
- 轮询:
upstream front_server{ #定义一个服务配置front_server
server 172.16.10.10:8080; #第一台服务机器(两台服务器随机分配请求)
server 172.16.10.20:8080; #第二台服务机器(两台服务器随机分配请求)
}
- 加权轮询:
upstream front_server{ #定义一个服务配置front_server
server 172.16.10.10:8080 weight=5; #第一台服务机器,权重值比较高,所以大部分的请求都会在10上;
server 172.16.10.20:8080 weight=2; #第二台服务机器,权重值比较低,所以少部分的请求会在20上;
}
- ip_hash
upstream front_server{ #定义一个服务配置front_server
ip_hash; #表示配置一个用户固定访问一台设备
server 172.16.10.10:8080 weight=1; #第一台服务机器 设置权重值1,则优先访问10服务器。
server 172.16.10.20:8080 weight=2; #第二台服务机器 设置权重值2,10服务器挂了则访问20服务器。
}