1. 配套故事
通俗易懂解释负载均衡(我的历史文章中有)
2. 实验工具
- vmware
- ubuntu 系统
如果没有实验工具的小伙伴,可在公众号内回复“工具”获取。
3. 刻意练习
3-1. 原理图
上图架构需要三台服务器:负载均衡服务器、web1、web2。
因此我们采用虚拟机克隆的方式,快速拥有多台虚拟机。
3-2. 克隆虚拟机
右键需要克隆的虚拟机:管理--克隆。按如下步骤操作即可:
重复上面步骤,再次克隆一台虚拟机,最终结果如下(web1和web2为克隆的虚拟机):
开启三个虚拟机后分别查看 ip 地址:
分别为:
负载均衡:192.168.153.132
web1:192.168.153.133
web2:192.168.153.134
现在使用 xshell 连接,方便后续操作:
3-3. 安装 nginx
三台服务器安装 nginx 即可。
安装 nginx 命令:
sudo apt install nginx
测试是否运行成功:
3-4. 配置
负载均衡配置:
vim /etc/nginx/nginx.conf
在 http 模块内写入 upstream 和 server 模块。
upstream中,ip 地址为要分发的服务器, weight 代表权重分发优先级,max_fails 为分发最大失败次数,fail_timeout为失败超时时间。
location 中指定分发的代理。
web1配置:
更改默认的html页面为以下内容,方便辨认访问的页面是哪台 web 服务器
sudo vim /var/www/html/index.nginx-debian.html
web2配置:
sudo vim /var/www/html/index.nginx-debian.html
3-5. 查看效果
在浏览器请求负载均衡服务器:
http://192.168.153.132/
因为我们前面设置的 weight 都为1,所以此处相当于轮询 web1 和 web2 服务器。
3-6. 更多配置参考
- 轮询:每个请求按时间顺序逐一分配到不同的后端服务器,也是nginx的默认模式。轮询模式的配置很简单,只需要把服务器列表加入到upstream模块中即可。
upstream serverList {
server 1.2.3.4;
server 1.2.3.5;
server 1.2.3.6;
}
- ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
upstream serverList {
ip_hash
server 1.2.3.4;
server 1.2.3.5;
server 1.2.3.6;
}
- url_hash:按访问url的hash结果来分配请求,相同的url固定转发到同一个后端服务器处理。
upstream serverList {
server 1.2.3.4;
server 1.2.3.5;
server 1.2.3.6;
hash $request_uri;
hash_method crc32;
}
- fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream serverList {
server 1.2.3.4;
server 1.2.3.5;
server 1.2.3.6;
fair;
}
而在每一种模式中,每一台服务器后面的可以携带的参数有:
down: 当前服务器暂不参与负载
weight: 权重,值越大,服务器的负载量越大。
fail_timeout: max_fails次失败后暂停的时间。
max_fails:允许请求失败的次数,默认为1。
backup:备份机, 只有其它所有的非backup机器down或者忙时才会请求backup机器。
示例:
/**
下面是一个配置负载均衡的示例(只写了关键配置):
其中:
upstream:是负载的配置模块,serverList是名称,随便起
server_name:是客户端请求的域名地址
proxy_pass:是指向负载的列表的模块,如serverList
*/
upstream serverList {
server 1.2.3.4 weight=30;
server 1.2.3.5 down;
server 1.2.3.6 backup;
}
server {
listen 80;
server_name www.xxx.com;
root html;
index index.html index.htm index.php;
location / {
proxy_pass http://serverList;
proxy_redirect off;
proxy_set_header Host $host;
}
}
4. 常见问题
问题:安装软件慢?
答:修改 apt 源
(https://blog.csdn.net/qq_41822647/article/details/94444286)
问题:新安装的系统,无法ssh连接?
答:安装ssh和防火墙放开22端口
(https://blog.csdn.net/qq_36711453/article/details/83745409)
如果有其他问题,请在公众号后台留言~
往期精彩:
Hi,我是二毛,一个在大城市漂泊的程序员
【故事】VPN、反向代理到底skr啥
欢迎来到程序员二毛的世界,在这里你将走进程序员的生活,感受职场冷暖,体会生活感悟,并学习到有趣的编程技术。
包括但不限于Linux、数据库、计算机网络、PHP、数据结构算法、设计模式、实用工具资源等。
关注公众号《程序员二毛》,后台回复 1024 领取变强秘籍;点击“菜单栏-加群交流”可进入攻城狮交流群。
聊技术,说认知,谈人生,也许吃瓜围观的你,离激情交流、碰撞思想,就差一句“PHP是世界上最好的语言”!
閱讀更多 程序員二毛 的文章