LinuxIT必备技能Docker

Docker Nginx反向代理配置web负载均衡实践

2021-03-16  本文已影响0人  刘小白DOER

    笔者做web服务器时使用apache较多,但对于 Nginx反向代理特别感兴趣,于是利用两块安装好LAMP的树莓派来测试验证一番。因为有docker,使用整个测试下来非常顺利方便。 笔者以前是使用keepalived通过VIP来保证高可用性,但是不能提供负载均衡。Nginx反向代理可以提供负载均衡并保证高可用性。

测试平台为虚拟机centos7和两块树莓派。

centos7为nginx做代理,两块树莓派做web服务器。

VirtualBox虚拟机centos7 IP地址:192.168.31.120

树莓派1 LAMP IP地址:192.168.31.234

树莓派2 LAMP IP地址:192.168.31.82

1、安装Nginx容器

   搜索镜像: docker search nginx

   下载镜像:docker pull nginx

    运行容器,映射到centos7的8080端口:docker run -itd --name nginx -p 8080:80 nginx

在浏览器中输入192.168.31.120:8080可以测试Nginx容器安装成功。

2、进入容器配置Nginx

    进入容器:docker exec -it nginx bash,容器需要先apt update更新,然后安装编辑器nano(你喜欢哪个装哪个)

    打开/etc/nginx/nginx.conf配置文件,在http区块里添加upstream块内容。

    upstream mysvr {

    server 192.168.31.82;

    server 192.168.31.234;

    }

    再打开/etc/nginx/conf.d/default.conf这个配置文件,在server区块里,添加location里面的内容。

    #请求转向上面mysvr 定义的服务器列表

    proxy_pass http://mysvr; 

    配置文件配置好以后,使用nginx -t命令测试一下配置文件是正常的。会显示nginx: the configuration file /etc/nginx/nginx.conf syntax is ok。nginx: configuration file /etc/nginx/nginx.conf test is successful

3、退出容器重启 Nginx容器使配置生效

    docker restart nginx

4、在两块树莓派 LAMP 上新建个ip.php来验证测试

    在树莓派上的/var/www/html下新建ip.php写入ip信息来区分服务器。

5、浏览器验证

    在浏览器输入http://192.168.31.120:8080/ip.php ,然后点击刷新,IP地址会循环变化。注意Nginx服务器要加8080端口号。

    如果不加ip.php,那么页面会显示/var/www/html目录下index.html的信息。

    6、故障转移配置    

    如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。 将下面的添加location,与proxy_pass放置在一起。

proxy_next_upstream http_502 http_504 error timeout invalid_header; 

    同时启用该功能需要在nginx.conf中添加

proxy_next_upstream on

    7、nginx配置4种均衡算法

    7.1、上面的nginx默认就是轮询其权重都默认为1。

    7.2、通过weight配置权重的大小,weight和访问比率成正比,用于后端服务器性能不均的情况。

    upstream mysvr {

    server 192.168.31.82 weight=1;

    server 192.168.31.234 weight=2;

    }

   7.3、热备

    upstream mysvr {

    server 192.168.31.82;

    server 192.168.31.234  backup;

    }

    7.4、ip_hash:nginx会让相同的客户端ip请求相同的服务器,固定访问一个后端服务器,可以解决session的问题。

    upstream mysvr {

    server 192.168.31.82;

    server 192.168.31.234;

     ip_hash;

    }

8、设备的状态

1.down表示单前的server暂时不参与负载

2.weight默认为1.weight越大,负载的权重就越大。

3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间。

5.backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

上一篇下一篇

猜你喜欢

热点阅读