IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 通过 Nginx 实现多机负载均衡 -> 正文阅读

[系统运维]通过 Nginx 实现多机负载均衡

需求描述

现有三台配置相同,且处于同一网络中的 CentOS 服务器,需要对这三台服务器进行合理的负载均衡配置,使各服务器的硬件及带宽资源均得到有效利用。

功能规划

三台服务器分别用 A、B、C 指代。A 服务器 80 端口上的负载均衡服务,负责将用户的请求分流至三个 Web 应用服务,这三个 Web 应用服务分别运行在本机的 8080 端口及 B、C 服务器的 80 端口。

服务器用途端口
A负载均衡80
AWeb应用8080
BWeb应用80
CWeb应用80

路径规划

负载均衡服务及 Web 应用服务均通过 Nginx 实现,为了方便开发,这里采用 Docker 来部署三台服务器上的四个 Nginx。

Nginx 配置及 Dockerfile 部署路径见下表。

-负载均衡Web应用
根路径/var/nginx/load-balancer/var/nginx/web-server
网站配置./conf.d/load-balancer.conf./conf.d/web-server.conf
Dockerfile./Dockerfile./Dockerfile

服务配置

两类服务的基础配置 ,也就是 nginx.conf 文件是相同的。不同之处只是具体的功能设置,在 conf.d 目录下的 conf 文件中体现。

负载均衡

用于负载均衡服务的 Nginx 镜像,其配置文件及 Dockerfile 如下所示。

这里有一个关键点要注意,由于 A 服务器上将会运行两个 Nginx 容器,要想将负载均衡服务的请求导向同一服务器上的 Web 应用服务,就需要把请求发给 Web 应用服务用于 Docker 容器间通信的 IP,而不是 A 服务器的外网 IP 或者局域网 IP,因此这里 upstream 中为 A 服务器上的 Web 应用服务所设置的 IP 为 172.17.0.3。

# 负载均衡服务的配置文件
# load-balancer.conf
upstream servers {
? ? server 172.17.0.3:8080; # Docker 容器间通信,需用此 IP
? ? server B;
? ? server C;
}

server {
? ? listen? ? ? ?80;
? ? server\_name? localhost;


? ? location / {
? ? ? ? proxy\_pass http://servers;
? ? }
}
# 负载均衡服务的 Dockerfile
FROM nginx:latest

RUN rm /etc/nginx/nginx.conf
RUN rm /etc/nginx/conf.d/default.conf

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./conf.d/load-balancer.conf /etc/nginx/conf.d/load-balancer.conf

Web 应用

用于 Web 应用服务的 Nginx 镜像,其配置文件及 Dockerfile 如下所示。

# Web应用的配置文件
# load-balancer.conf
server {
? ? listen? ? ? ?80; # 对于 A 服务器,这里需要改成 8080
                     # 因为默认的 80 端口已被负载均衡服务占用了
? ? server\_name? localhost;

? ? location / {
? ? ? ? root? ?/usr/share/nginx/html;
? ? ? ? index? index.html index.htm;
? ? }

? ? # 公用静态资源
? ? location /vendor {
? ? ? ? alias /var/www/vendor;
? ? }

? ? # 网站路径
? ? location /website {
? ? ? ? alias /var/www/website;
? ? }
}
# Web 应用服务的 Dockerfile

FROM nginx:latest

RUN rm /etc/nginx/nginx.conf
RUN rm /etc/nginx/conf.d/default.conf

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./conf.d/web-server.conf /etc/nginx/conf.d/web-server.conf

镜像编译

完成两类服务的 Nginx 配置文件和 Dockerfile 的编辑之后,就需要编译生成镜像了。

分别进入负载均衡服务和 Web 应用服务所在的目录,确保 Dockerfile 就在所进入的路径下,然后执行下面的命令,即可编译镜像:

# 负载均衡服务
$ docker build -t load-balancer:1.0.0 .

# Web 应用服务
$ docker build -t web-server:1.0.0 .

容器启动

编译好两个 Docker 镜像之后,就需要把它们运行起来了。

由于 A 服务器上会运行两个 Nginx 镜像,为了方便调试,各自的日志文件需设置不同的路径。

服务日志文件路径(需手动创建目录)
负载均衡/var/log/nginx/load-balancer
Web 应用/var/log/nginx/web-server

另外 Web 应用需要访问宿主的 /var/www/website 和 /var/www/vendor 这两个路径,所以对于负载均衡服务和 Web 应用服务而言,分别需要挂载 1 个、3 个目录。

这两个服务的容器启动命令如下:

# 负载均衡服务的启动命令
$ docker run --name load-balancer \
-v /var/log/nginx/load-balancer:/var/log/nginx \
-p 80:80 -d load-balancer:1.0.0

# Web 应用服务的启动命令
$ docker run --name web-server \
-v /var/log/nginx/web-server:/var/log/nginx \
-v /var/www/tspt:/var/www/tspt \
-v /var/www/vendor:/var/www/vendor \
-p 8080:8080 -d web-server:1.0.0

效果验证

三台服务器上的四个服务启动成功之后,还需要查看各自的 Nginx 日志,确保负载均衡服务配置成功。在各台服务器上,执行下面的命令,查看 Nginx 日志。

# 查看负载均衡服务的日志
$ tail /var/log/nginx/load-balancer/access.log -f

# 查看 Web 应用服务的日志
$ tail /var/log/nginx/web-server/access.log -f

如果在本机访问页面,同时看到三台服务器上的 Web 应用服务日志都有新的请求,就说明负载均衡服务配置成功了,OK,大功告成!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:22:23  更:2022-07-04 23:22:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:13:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计