本帖最后由 justgonnab 于 2018-11-29 10:46 编辑
可能做过Web集群的小伙伴都对nginx不陌生了,它既可以做web服务器也可以反向代理做web集群(负载均衡),而且之前的文章我更多地介绍是关于TCP/IP网络或者FC网络的链路负载均衡,在TCP/IP模型中,可能是基于三层或三层以下所考虑的负载均衡方式。而web负载均衡在某公司的产品线中也有实现此类功能的硬件设备叫做AD(应用交付)。在一般的业务环境中实测硬件的负载均衡功能种类多、性能强,其包含了链路负载均衡、服务器负载均衡等,还有各种负载的方式,并且基于图形化的界面和自动脚本,可以为用户提供高效、便捷的IT优化服务。而软件厂商更偏向于使用低成本甚至免费的软件负载均衡。这次介绍较为常用的nginx。
nginx的部署环境建议使用Linux环境以便后期使用更多高级的扩展功能模块,如果为了简单便捷也可以使用Windows版本。这两种版本的nginx安装方式不一样,但配置文件配置方法一致。
测试环境:Red Hat Enterprise Linux Server release 6.5 (Santiago)
需要准备的文件:CentOS-6.5-x86_64-bin-DVD1.iso、nginx-1.14.1.tar.gz
首先在安装部署nginx之前需要安装必备的组件:zlib、pcre、openssl。
在离线环境下挂载系统默认的镜像CentOS-6.5-x86_64-bin-DVD1.iso:
- [root@localhost ~]# mount /dev/sr0 /mnt/
- mount: block device /dev/sr0 is write-protected, mounting read-only
复制代码
挂载成功后,配置yum源:
- [root@localhost ~]# cd /etc/yum.repos.d/
- [root@localhost yum.repos.d]# touch myyum.repo
- [root@localhost yum.repos.d]# vim myyum.repo
复制代码
输入如下内容:
- [myyum]
- name=myyum is test
- baseurl=file:///mnt/Server
- enabled=1
- gpgcheck=0
复制代码
然后保存并退出。
生成yum缓存:
- [root@localhost yum.repos.d]# yum makecache
- Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
- This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
- myyum | 3.9 kB 00:00 ...
- Metadata Cache Created
复制代码
yum安装组件(由于之前测试装过了zlib和pcre,所以这里只安装了openssl):
- [root@localhost yum.repos.d]# yum install -y zlib* pcre* openssl*
- Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
- This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
- Setting up Install Process
- Package zlib-devel-1.2.3-29.el6.x86_64 already installed and latest version
- Package zlib-1.2.3-29.el6.x86_64 already installed and latest version
- Package pcre-7.8-6.el6.x86_64 already installed and latest version
- Package pcre-devel-7.8-6.el6.x86_64 already installed and latest version
- Package openssl-1.0.1e-15.el6.x86_64 already installed and latest version
- Package openssl-devel-1.0.1e-15.el6.x86_64 already installed and latest version
- Resolving Dependencies
- --> Running transaction check
- ---> Package openssl098e.x86_64 0:0.9.8e-17.el6_2.2 will be installed
- --> Finished Dependency Resolution
- Dependencies Resolved
- =============================================================================================================================================================
- Package Arch Version Repository Size
- =============================================================================================================================================================
- Installing:
- openssl098e x86_64 0.9.8e-17.el6_2.2 myyum 761 k
- Transaction Summary
- =============================================================================================================================================================
- Install 1 Package(s)
- Total download size: 761 k
- Installed size: 2.2 M
- Downloading Packages:
- Running rpm_check_debug
- Running Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Installing : openssl098e-0.9.8e-17.el6_2.2.x86_64 1/1
- Verifying : openssl098e-0.9.8e-17.el6_2.2.x86_64 1/1
- Installed:
- openssl098e.x86_64 0:0.9.8e-17.el6_2.2
- Complete!
复制代码
安装完成之后,解压nginx-1.14.1.tar.gz进行编译安装:
生成配置文件,将nginx文件安装在/usr/local目录下:
生成完毕后会出现Makefile,然后执行安装:
最后测试,启动nginx查看是否能够访问默认页面:
- [root@localhost nginx-1.14.1]# cd /usr/local/nginx
- [root@localhost nginx]# ls
- fastcgi.conf fastcgi_params.default koi-win mime.types.default nginx.conf.default uwsgi_params
- fastcgi.conf.default html logs nginx scgi_params uwsgi_params.default
- fastcgi_params koi-utf mime.types nginx.conf scgi_params.default win-utf
- [root@localhost nginx]# ./nginx
- [root@localhost nginx]# ss -ant | grep 80
- LISTEN 0 128 *:80 *:*
复制代码
出现上述页面表示测试成功。
接下来就可以配置nginx的服务器负载均衡功能了。
测试环境:静态的web页面。
测试方法:在同一台服务器上依据上述方法部署nginx1和nginx2,分别使用81和82端口。修改静态页面标注以方便识别nginx1和nginx2两台不同的web服务器。nginx本身作为反向代理进行负载均衡(轮询)。
配置nginx的nginx.conf文件:
修改如下几处地方:
- #gzip on;
- upstream webapp {
- server 192.168.1.133:81;
- server 192.168.1.133:82;
- }
- server {
- listen 80;
- server_name localhost;
复制代码
和
- #access_log logs/host.access.log main;
- location / {
- proxy_pass http://webapp;
- }
- #error_page 404 /404.html;
复制代码
配置完成后,记得重启nginx以使配置生效:
- [root@localhost nginx]# ./nginx -s stop
- [root@localhost nginx]# ./nginx
复制代码
然后重新访问80端口,并多次刷新测试:
第一次打开:
刷新一下:
反复刷新nginx1和nginx2轮流显示,则说明nginx轮询负载均衡配置成功!
上述只是介绍了最简单的静态页面负载均衡,后续有空的话分享配置具有会话保持功能的nginx负载均衡!
【时间有限,帖子写的比较匆忙,有误之处烦请小伙伴们及时指出以便进行改正!谢谢】 |