三台虚拟机ip地址为
A
:192.168.247.140
B
:192.168.247.129
C
:192.168.247.135
因为负载均衡也需要在其它节点进行配置,所以三台都需要有nginx。本篇所有nginx目录为/usr/local/nginx
。
修改A节点配置文件
# vi /usr/local/nginx/conf/nginx.conf
在http段加入以下代码,不存在的添加进去,存在的覆盖。
upstream a.com {
server 192.168.247.129:80;
server 192.168.247.135:80;
}
listen 80;
server_name a.com;
location / {
proxy_pass http://a.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
保存重启nginx
# systemctl restart nginx.service
修改B节点配置文件
# vi /usr/local/nginx/conf/nginx.conf
在http段加入以下代码,不存在的添加进去,存在的覆盖。
server{
listen 80;
server_name a.com;
index index.html;
root /usr/local/nginx/html;
}
保存重启nginx
# systemctl restart nginx.service
修改访问的html文件
# vi /usr/local/nginx/html/index.html
在<h1>Welcome to nginx!222</h1>
加上222
此时,你就可以用A节点
的ip去访问浏览器了,刷新几次,你会看到负载均衡到节点B了。但是,还没结束。
修改C节点配置文件,和节点B同样的操作,如果你添加节点D也是同样的操作。就不写了,看上面。记得重启nginx。
在<h1>Welcome to nginx!333</h1>
加上333
再次刷新几次浏览器,可见,转发到了节点B和节点C了。
现在,我们完成了俩个节点的负载均衡,可是我们有三个节点啊,难道A节点就只负责转发吗?那岂不是很浪费?
修改A节点配置文件
在http段的upstream下新增一行A节点
的ip,配置为8080端口。为什么不是80端口?因为A节点的80端口监听负载均衡,所以是已占用了,而我们访问的话是需要端口的,就需要分配一个。
server 192.168.247.140:8080;
在http段新增server,就是新增一个,这样就有俩个server。
server {
listen 8080;
server_name a.com;
index index.html;
root /usr/local/nginx/html;
}
保存重启nginx
# systemctl restart nginx.service
修改访问的html文件
# vi /usr/local/nginx/html/index.html
在<h1>Welcome to nginx!111</h1>
加上111
刷新几次浏览器,就可以看到转发到三个节点了。
权重
upstream a.com {
server 192.168.247.129:80 weight=2;
server 192.168.247.135:80 weight=3;
server 192.168.247.140:8080 weight=1;
}
上面的数字加起来为6,意味着:当访问六次时,会转发一次到192.168.247.140
,转发俩次到192.168.247.129
,转发三次到192.168.247.135
。数字是可自己设置的,自己试一下吧!