条件:需要使用四台主机,客户端,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
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
- http {
- upstream webserver { ------用于定义集群upstream 集群的名字webserver
- ip_hash; ------可以添加调度算法,默认的轮询算法,ip_hash使得相同的客户端访问相同服务器
- server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=30; -----集群内的服务器
- server 192.168.2.200:80 weight=1 max_fails=1 fail_timeout=30; -----集群内的服务器
- server 192.168.2.101 down; ----标记该web服务器不参与集群
- 注意:调度器是更加权重的数值去调度相应的web服务器,越大调度的次数越多,max_fails叛定是否连接好坏,设置连接数,如果代理服务器调度相应的服务器超过设置的连接数,则判定web服务器已经坏掉。fail_timeout设置失败超时时间,单位为秒,每隔设置的秒去连接上次失败的主机,如果连接成功,则分配任务给主机,相当于把原来判定坏掉的web服务器在重新加入到集群中。
- }
- server { -----------定义集群中的具体服务器和端口
- listen 80;
- server_name localhost;
- location / {
- proxy_pass http://webserver; -------通过proxy_pass将用户的请求转发给webserver集群
- }
- [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 重新期待服务(保证服务开启不然 )
客户端用于测试结果
[root@client ~]# curl http://192.168.4.5
在不添加ip_hash算法的时候,可以可到的效果是每次算法的时候都可以对不同的客户端访问,在添加该算法的时候,则是同一个浏览器只能访问同一个web服务器。