nginx跨多个应用程序实例的负载均衡介绍
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,下文给大家带来,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。环境介绍配置nginx负载均衡器因会用到多台
千家信息网最后更新 2025年02月06日nginx跨多个应用程序实例的负载均衡介绍
下文给大家带来,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。
环境介绍
配置nginx负载均衡器因会用到多台云服务器来进行,所以下面我会用到docker,具体docker的使用请移步docker实战
系统环境:
root@ubuntu:~# lsb_release -a #查看系统版本No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 19.10Release: 19.10Codename: eoanroot@ubuntu:~# uname -a #查看系统是多少位Linux ubuntu 5.3.0-18-generic #19-Ubuntu SMP Tue Oct 8 20:14:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
docker版本和相关操作系统版本
docker版本:root@ubuntu:~# docker --version #查看docker版本Docker version 19.03.3, build a872fc2f86操作系统版本:[root@57b669db1de1 /]# cat /etc/redhat-release #查看系统版本CentOS Linux release 8.0.1905 (Core) [root@57b669db1de1 /]# uname -aLinux 57b669db1de1 5.3.0-18-generic #19-Ubuntu SMP Tue Oct 8 20:14:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
软件版本:
nginx版本:root@ubuntu:~# nginx -v 查看nginx版本nginx version: nginx/1.16.1 (Ubuntu)docker中nginx版本:[root@57b669db1de1 /]# nginx -v #查看nginx版本nginx version: nginx/1.14.1
安装nginx
具体nginx的安装请参考nginx安装部署
安装依赖软件
更新软件包:root@ubuntu:~# apt-get update安装依赖软件:root@ubuntu:~# apt -y install openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev make gcc
编译安装nginx
下载nginx:root@ubuntu:~# wget http:#nginx.org/download/nginx-1.17.6.tar.gz解压:root@ubuntu:/opt# tar zxf nginx-1.17.6.tar.gz root@ubuntu:/opt# cd nginx-1.17.6/root@ubuntu:/opt/nginx-1.17.6# ls #列出目录auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README srcroot@ubuntu:/opt/nginx-1.17.6# 配置:root@ubuntu:/opt/nginx-1.17.6# ./configure --prefix=/usr/local/nginx编译以及部署:root@ubuntu:/opt/nginx-1.17.6# make && make installroot@ubuntu:/opt/nginx-1.17.6# cd /usr/local/nginx/root@ubuntu:/usr/local/nginx# lsconf html logs sbin启动:root@ubuntu:/usr/local/nginx# ln sbin/nginx /usr/local/sbin/ #创建nginx软连接,设置为命令root@ubuntu:/usr/local/nginx# nginx #启动nginxroot@ubuntu:/usr/local/nginx# netstat -anpl | grep nginx #查看nginx端口是否开启root@ubuntu:/usr/local/nginx# lsof -i:80 #查看80端口是否开启
docker安装nginx
创建容器
下载镜像:root@ubuntu:~# docker pull registry.cn-beijing.aliyuncs.com/blxt/centos创建容器并启动:root@ubuntu:~# root@ubuntu:~# docker run -itd --name nginx1 --privileged registry.cn-beijing.aliyuncs.com/blxt/centos /sbin/initroot@ubuntu:~# docker ps -a #查看容器是否创建并启动CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME6801d55682a3 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 5 minutes ago Up 5 minutes nginx1相同方法创建第二个容器:root@ubuntu:~# docker run -itd --name nginx2 --privileged registry.cn-beijing.aliyuncs.com/blxt/centos /sbin/initroot@ubuntu:~# docker ps -a root@ubuntu:~# root@ubuntu:~# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1d31d3fc0ec1 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 4 minutes ago Up 4 minutes nginx26801d55682a3 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 5 minutes ago Up 5 minutes nginx1连接到容器:root@ubuntu:~# docker exec -it nginx1 /bin/bashroot@ubuntu:~# docker exec -it nginx2 /bin/bash [root@6801d55682a3 /]# hostname nginx1 #更改主机名称[root@6801d55682a3 /]# bash #使更改的名称生效[root@1d31d3fc0ec1 /]# hostname nginx2[root@1d31d3fc0ec1 /]# bash
安装nginx
更新软件包:[root@nginx1 /]# yum clean all #清空缓存[root@nginx1 /]# yum makecache #更新软件包安装nginx:[root@nginx1 /]# yum -y install nginx[root@nginx1 /]# rpm -qa | grep nginx #查看是否已经安装启动nginx:[root@nginx1 /]# systemctl start nginx[root@nginx1 /]# netstat -anpl | grep nginx #查看nginxnn端口是否开启[root@nginx1 /]# lsof -i:80 #查看80端口是否开启安装第二个nginx使用相同方法即可!此处省略!!!访问nginx:[root@nginx1 /]# curl 127.0.0.1
修改网页内容
查看网页存在目录:[root@nginx1 nginx]# more nginx.conf #查看配置文件在配置文件中找到下面root行,后面目录即网页文件存放目录root /usr/share/nginx/html;[root@nginx1 html]# cd /usr/share/nginx/html/[root@nginx1 html]# ls #列出目录内容404.html 50x.html index.html nginx-logo.png poweredby.png[root@nginx1 html]# echo nginx1 > index.html #清空nginx主页文件内容,并重新写入内容为nginx1nginx2如同,注意不要设置一样的主页内容访问nginx:[root@nginx1 html]# curl 127.0.0.1nginx1[root@nginx2 ~]# curl 127.0.0.1nginx2
修改配置文件
nginx1修改内容如下: server {listen 80;server_name www.nginx1.com; //设置域名#charset koi8-r;#access_log logs/host.access.log main;location / { root html; index index.html index.htm; }}nginx2修改内容如下: server {listen 80;server_name www.nginx2.com; //设置域名#charset koi8-r;#access_log logs/host.access.log main;location / { root html; index index.html index.htm; }}
配置http负载均衡器
要开始使用NGINX Plus或NGINX开源对一组服务器的HTTP流量进行负载均衡,使用upstream指令定义该组,该指令放置在http上下文中,proxy_pass指令用来转发请求到后端一般指定在loction上下文中
基本配置方法:
http { upstream nginx { #test为组名 server www.nginx1.com ; #server用来指定后端服务器的访问地址,一般指定域名、ip、端口,域名和ip二选一,端口可忽略 server www.nginx2.com weight=5; #weight指定权重值 server www.nginx3.com down; #down用来停止对此服务器的转发 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http://nginx为转发那个组的后端服务器 ......省略其他配置 } ......省略其他配置 }}
nginx做负载均衡官方提供了4种方法,下面逐一介绍这四种方法:
Round Robin
请求在服务器之间平均分配,同时考虑了服务器权重。默认情况下使用此方法(没有启用它的指令)
默认配置就是Round Robin,配置方法:http {upstream nginx { #test为组名 server www.nginx1.com ; #server用来指定后端服务器的访问地址 server www.nginx2.com ; #weight指定权重值 ......省略其他配置}server{ location / { proxy_pass http://nginx; #http://nginx为转发那个组的后端服务器 ......省略其他配置 } ......省略其他配置}}
最少连接
将活动连接最少的请求发送到服务器,也是在考虑到服务器的权重问题才设置的这种方法
配置方法:http {upstream nginx { #test为组名 less_conn ; server www.nginx1.com ; #server用来指定后端服务器的访问地址 server www.nginx2.com ; #weight指定权重值 ......省略其他配置}server{ location / { proxy_pass http://nginx; #http:#nginx为转发那个组的后端服务器 ......省略其他配置 } ......省略其他配置}}
ip_hash
从客户端IP地址确定向其发送请求的服务器。在这种情况下,可以使用IPv4地址的前三个八位位组或整个IPv6地址来计算哈希值。该方法保证了来自同一地址的请求将到达同一服务器,除非它不可用。
配置方法:http {upstream nginx { #test为组名 ip_hash ; server www.nginx1.com ; #server用来指定后端服务器的访问地址 server www.nginx2.com ; #weight指定权重值 ......省略其他配置}server{ location / { proxy_pass http://nginx; #http:#nginx为转发那个组的后端服务器 ......省略其他配置 } ......省略其他配置}}
hash
向其发送请求的服务器是根据用户定义的键确定的,该键可以是文本字符串,变量或组合。
配置方法:http {upstream nginx { #test为组名 hash $request_uri consistent; server www.nginx1.com ; #server用来指定后端服务器的访问地址 server www.nginx2.com ; #weight指定权重值 ......省略其他配置}server{ location / { proxy_pass http://nginx; #http://nginx为转发那个组的后端服务器 ......省略其他配置 } ......省略其他配置}}
看了以上关于nginx跨多个应用程序实例的负载均衡介绍,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。
配置
服务器
服务
版本
方法
地址
内容
权重
均衡
端口
系统
软件
容器
文件
目录
域名
指令
网页
软件包
更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
一元互联网科技
数据库维护功能的软件
数据库安装没快捷图标
方舟电脑版服务器怎么开
三级数据库考试技巧
贵州crm软件开发中心
滦州网络营销软件开发创造辉煌
3d软件开发教学
web服务器平台
软件开发做引擎
多服务器密钥管理
郑州世讯网络技术股份有限公司
清空h2数据库
北京市公安局网络安全总队号码
网络安全红帽子
软件开发的各阶段任务
操作数据库应用程序
软件开发离职竞业协议
软件开发是不是就是it
网络安全法文件
网络安全感基础
lol停机维护服务器
初中学网络技术
淄川外贸erp软件开发
从开发角度避免dba修改数据库
c#爬虫获取ajax数据库
无限网络安全评估报告
网络技术院校单招
sp-lock在数据库的意思
服务器rfid管理