主要目的:让处于不同网段的服务器和客户端进行交流,使得客户端在访问为web服务器的时候,通过反向代理实现相应的算法,通过客户端的访问需求调度到不同的为web服务器上,被调度器调度的web才可以响应客户端的请求,web服务器才处理完请求之后,则会返回得nginx代理服务器,服务器在把相应的信息传送给客户端。
举例说明:
条件:需要使用四台主机,客户端,nginx代理,web服务器,主机上的配置条件按照上图所配置。
在主机web1上的操作:
[root@web1 ~]# yum -y install httpd -----安装httpd
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html -----在配置文件中添加"192.168.2.100"
[root@web1 ~]# systemctl restart httpd ------启动http服务
[root@web1 ~]# firewall-cmd --set-default-zone=trusted ------关闭防火墙
[root@web1 ~]# setenforce 0 -------关闭selinux
在主机web2上的操作:
[root@web2 ~]# yum -y install httpd -----安装httpd
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html -----在配置文件中添加"192.168.2.200"
[root@web2 ~]# systemctl restart httpd ------启动http服务
[root@web2 ~]# firewall-cmd --set-default-zone=trusted ------关闭防火墙
[root@web2 ~]# setenfo -------关闭selinux
nginx代理服务器的配置
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
1. http {
2. upstream webserver { ------用于定义集群upstream 集群的名字webserver
3. ip_hash; ------可以添加调度算法,默认的轮询算法,ip_hash使得相同的客户端访问相同服务器
4. server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=30; -----集群内的服务器
5. server 192.168.2.200:80 weight=1 max_fails=1 fail_timeout=30; -----集群内的服务器
6. server 192.168.2.101 down; ----标记该web服务器不参与集群
- 注意:调度器是更加权重的数值去调度相应的web服务器,越大调度的次数越多,max_fails叛定是否连接好坏,设置连接数,如果代理服务器调度相应的服务器超过设置的连接数,则判定web服务器已经坏掉。fail_timeout设置失败超时时间,单位为秒,每隔设置的秒去连接上次失败的主机,如果连接成功,则分配任务给主机,相当于把原来判定坏掉的web服务器在重新加入到集群中。
2. }
3. server { -----------定义集群中的具体服务器和端口
4. listen 80;
5. server_name localhost;
6. location / {
7. proxy_pass http://webserver; -------通过proxy_pass将用户的请求转发给webserver集群
8. }
9. [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 重新期待服务(保证服务开启不然 )
客户端用于测试结果
[root@client ~]# curl http://192.168.4.5
在不添加ip_hash算法的时候,可以可到的效果是每次算法的时候都可以对不同的客户端访问,在添加该算法的时候,则是同一个浏览器只能访问同一个web服务器。