目录
- 负载均衡实验踩坑实录及小结
- 踩坑实录
- nginx学习
- 正向代理与反向代理
- 几种均衡策略
- 来源及引用
负载均衡实验踩坑实录及小结
踩坑实录
- 配置单机nginx环境
坑:
- apt-get源提示不安全,把https更换成http。Ubuntu下修改/etc文件夹下文件都要root权限,可以
sudo su
先进root权限。 - nginx单机80端口被占用。其实多重启几次nginx就能绑上
- 三机环境配置
master做负载均衡器,slaves做服务器。需要多机能ping通。
坑:很容易静态IP或者mac地址没有修改,虚拟机名字要能明显区分各主机,防火墙没关。可以不用着急克隆,先完成对单机尽可能多的配置再克隆,减少冗余操作。克隆选链接克隆或者完整克隆都行,有点类似变量深浅拷贝的区别,但是文件系统是隔离的。
一个有用的blog:多机连接网络环境配置
- 负载均衡文件配置
- 负载均衡器的配置
http {
…
upstream nodes {
server 192.168.3.37:8080;
server 192.168.3.38:8080;
}
server {
listen 8080;
server_name 192.168.3.36;
location / {
proxy_pass http://nodes; //请求转向nodes定义的服务器列表
include proxy_params; #需手动创建此文件
}
}
}
upstream块内定义了转向的节点,即服务器,负载均衡器对监听的端口会进行转发
均衡器可以定义代理请求头的一些参数,e.g.
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
- 服务器的配置
server {
listen 8080;
server_name 192.168.3.37;
location / {
root /etc/nginx/node; //自行设置目录
index index.html index.htm;
}
}
服务器监听端口访问根目录会提供指定目录下的指定文件(location中定义)进行响应,编写一个能区分不同主机的html页即可。
- 验证
能ping通且nginx文件配置正确,访问均衡器的指定端口,反复刷新可以看到负载被发送到不同的服务器上(默认策略是轮询),大概如下图所示:
nginx学习
正向代理与反向代理
- 正向代理:为客户端做代理,常用场景可以反向代理:为服务器做代理,负载均衡就是典型的nginx进行了反向代理
几种均衡策略
- 加权轮询
在上述的upstream块内设置weight即可
upstream nodes {
server 192.168.3.37:8080 weight=3;
server 192.168.3.38:8080 weight=7;
}
则node1以30%的概率被访问到,node2故70%
这种轮询存在session信息丢失的问题
- ip_hash
加入关键字即可,效果为相同源的IP相同,hash桶相同,也就访问了相同的服务器
upstream nodes {
ip_hash;
server 192.168.3.37:8080 weight=3;
server 192.168.3.38:8080 weight=7;
}
- fair
同理加关键字即可,访问策略是优先访问响应时间短的服务器
- 设置一些备用机器
backup关键字,有冷备份热备份什么的,不参与负载之间用down
来源及引用
- Source: HIT-软件架构与中间件lab2
- Reference: slides and some blogs