iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎样进行nginx部署基于http的负载均衡器
  • 513
分享到

怎样进行nginx部署基于http的负载均衡器

2023-06-05 16:06:12 513人浏览 独家记忆
摘要

怎样进行Nginx部署基于Http的负载均衡器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。nginx跨多个应用程序实例的负载平衡是一种用于优化资源利用率,最大

怎样进行Nginx部署基于Http负载均衡器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

nginx跨多个应用程序实例的负载平衡是一种用于优化资源利用率,最大化吞吐量,减少延迟和确保容错配置的常用技术。

环境介绍

配置nginx负载均衡器因会用到多台服务器来进行,所以下面我会用到Docker,具体docker的使用请移步docker实战

  • 系统环境:

     root@ubuntu:~# lsb_release  -a#查看系统版本 No LSB modules are available. Distributor ID:Ubuntu Description:Ubuntu 19.10 Release:19.10 Codename:eoan root@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 -a Linux 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  src root@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 install root@ubuntu:/opt/nginx-1.17.6# cd /usr/local/nginx/ root@ubuntu:/usr/local/nginx# ls conf  html  logs  sbin 启动: root@ubuntu:/usr/local/nginx# ln sbin/nginx /usr/local/sbin/#创建nginx软连接,设置为命令 root@ubuntu:/usr/local/nginx# nginx#启动nginx root@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/init root@ubuntu:~# docker ps -a#查看容器是否创建并启动 CONTAINER ID        IMAGE                                          COMMAND             CREATED             STATUS              PORTS               NAME 6801d55682a3        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/init root@ubuntu:~# docker ps -a root@ubuntu:~#  root@ubuntu:~# docker ps -a CONTAINER ID        IMAGE                                          COMMAND             CREATED             STATUS              PORTS               NAMES 1d31d3fc0ec1        registry.cn-beijing.aliyuncs.com/blxt/centos   "/sbin/init"        4 minutes ago       Up 4 minutes                            nginx2 6801d55682a3        registry.cn-beijing.aliyuncs.com/blxt/centos   "/sbin/init"        5 minutes ago       Up 5 minutes                            nginx1 连接到容器: root@ubuntu:~# docker exec -it nginx1 /bin/bash root@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.htmlnginx-logo.pngpoweredby.png [root@nginx1 html]# echo nginx1 > index.html#清空nginx主页文件内容,并重新写入内容为nginx1 nginx2如同,注意不要设置一样的主页内容 访问nginx: [root@nginx1 html]# curl  127.0.0.1 nginx1 [root@nginx2 ~]# curl 127.0.0.1 nginx2
  • 修改配置文件

     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为转发那个组的后端服务器  ......省略其他配置  }  ......省略其他配置  }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎样进行nginx部署基于http的负载均衡器

本文链接: https://www.lsjlt.com/news/243761.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作