一、nginx实现负载均衡原理
将请求通过nginx服务器分摊到多个apache服务器来减小服务器压力,利用 nginx 服务器的多并发特性和 apache 服务器的稳定和功能丰富特性,使 nginx 做反向代理服务器,apache 做终端服务器
二、nginx 常见得几种负载均衡方式
方式一:默认的轮询
将每个请求按照请求的先后顺序平均分配到不同的服务器上
http {
upstream mypros {
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
方式二:权重 - 轮询
设置轮询的访问几率,当接受到四个请求时,会分配给 192.168.76.100 服务器1个请求,192.168.76.129 服务器3个请求
http {
upstream mypros {
server 192.168.76.100:80 weight=1;
server 192.168.76.129:80 weight=3;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
方式三:ip_hash - 轮询
按照客户端IP进行分配,同一个ip只能访问同一台终端服务器,解决 session 跨域不共享的问题
http {
upstream mypros {
ip_hash;
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
方式四:least_conn - 轮询
将请求转发给连接数较少的服务器上
http {
upstream mypros {
least_conn;
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
方式五:fair - 轮询
按照服务器端的响应时间来分配请求,响应时间短的优先分配。
http {
upstream mypros {
fair
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
方式六:url_hash - 轮询
按照访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,需要配合缓存用
http {
upstream mypros {
hash $request_uri;
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
三、实现默认轮询(虚拟机模拟linux服务器)
1. 准备并开启 apache 子服务器
- 建立一台虚拟机,ip配置为:192.168.76.100
- 配置apache服务器
yum install httpd 安装 apache
- 编辑/var/www/html/index.html 网页内容,插入:192.168.76.100,用于区分其他apache服务器
vim /var/www/html/index.html
- 启动apache服务,并设置开机自启
systemctl start httpd 启动 apache
systemctl enable httpd 设置 apache 开机自启
netstat -antlp | grep 80 查看apache服务是否正常开启,检测80端口占用情况
- 关闭防火墙
systemctl disable firewalld 永久关闭防火墙
systemctl stop firewalld 临时关闭防火墙
- 客户端浏览器测试
http://192.168.76.100
2. 准备其他apache子服务器
- 方式一:创建新虚拟机
按照上述步骤配置 apache 服务器 - 方式二:克隆第一个apache服务器
- 步骤
点击虚拟机 --> 管理 --> 克隆 --> 完整克隆
克隆出的新的虚拟机和原始虚拟机环境相同,唯一不同的是ip - 查看并记录ip
可通过 ip addr 查看新生成的随机ip,记录下来,配置负载均衡的时候需要,比如:192.168.76.129 - 编辑/var/www/html/index.html 网页内容,插入:92.168.76.129,用于区分其他apache服务器
vim /var/www/html/index.html
3. 本地电脑部署nginx环境(也可用虚拟机部署nginx环境)
- 修改 nginx.conf 配置文件
http {
upstream mypros {
server 192.168.76.100:80;
server 192.168.76.129:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mypros;
proxy_set_header Host $proxy_host;
}
}
}
- 重启 nginx
nginx -s reload - 使用客户端访问测试
用浏览器多次刷新访问
http://localhost
观察页面的内容变化,如果轮询则配置成功
网友评论