负载均衡
负载均衡可以避免大多数的服务器不可访问的情况,一般情况下,我们只有一台服务器,这样,一旦访问量大了,不管是什么样的宕机都是致命的,但是,我们可以通过负载均衡来尽可能的避免服务器宕机带来的服务不可用情况!接下来我们来实际操作看看如何来配置一个负载均衡!
如果是测试呢,其实一台服务器就可以实现了,但是实际开发中,我们最好是需要X+N,X最少建议2台,N最少2台,X是流量转发服务器,如果担心主服务器挂了,可以增加一台keepalive服务器,这样,我们实际就需要2台主服务器,从服务器,一般情况下,需要2台,因为你1台的话,哪怕实现负载均衡,挂了也没得转发,所以,我们一般需要2台,如果有钱,可以10台,这个随意
第一步: 部署好生产服务器
在从服务器搭建好我们的业务服务
比如说,我们有2台业务服务器,(如何搭建NGINX服务器,这里不介绍了,自行百度),访问后,结果分别为
server 1 //服务器1返回
server 2 //服务器2返回
为什么我们返回的内容不一样,实际生产环境不是需要一样的内容吗?这里我们只是方便区分我们实际在访问哪个服务器
第二步, 搭建负载
一般情况下,我们可能,当然是可能,在NGINX上搭建了许多虚拟主机,但是我们的负载,最终还是在NGINX.conf文件做编辑
打开nginx.conf,找到http节点,开始编辑
我们通过 upstream 来配置转发的服务器
upstream test {
server www.test.com:2222;
server www.test.com:3333;
}
这里,我们配置了2台服务器做转发,端口分别为2222,3333,如果是实际情况中,我们是设置生产服务器的IP即可
配置好以后,在http > server 节点里,配置负载
http {
## 下面的内容方便你们确认自己修改的位置是否正确
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
## 省略若干默认配置
server {
listen 80;
server_name www.test.com; ## 用户统一访问此域名
location / {
proxy_pass http://test; ## 加载负载节点
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
access_log on;
break;
}
}
upstream test {
server www.test.com:2222;
server www.test.com:3333;
}
## 省略若干默认配置
}
访问服务器
访问 www.test.com , 我们会发现,每刷新一次,服务器变一次,比如第一次是 server 1,第二次就是 server 2,如此循环
结束
这样,一个简单的负载均衡服务器搭建完毕