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负载均衡至后端web静态页面 -> 正文阅读

[系统运维]Nginx负载均衡至后端web静态页面

目的:
1、前端一台Nginx,均衡后端4台Nginx,其中后端4台Nginx部署2套网站,每套网站都要部署在4台Nginx上,端口为:8081-8084,用户通过域名访问前端Nginx 域名v1.jd.com v2.jd.com访问到不同的网站。
2、将第一道题目的部署步骤和架构图画出来。架构图上要划出9台服务器分布图。

根据字面意思,需要负载转发后端4台的2套html给用户,如下图:
在这里插入图片描述

环境准备

主机IP安装服务监听端口
负载均衡LB192.168.142.100nginx80
web01192.168.142.101nginx8081
web02192.168.142.103nginx8082
web03192.168.142.104nginx8083
web04192.168.142.105nginx8084

部署

1、安装nginx

LB和web全部安装依赖以及nginx

yum install gcc openssl-devel pcre-devel zlib-devel -y

没有配置好yum源的可以先执行一下命令

#配置epel\base源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum repolist	#列出目前正在使用的repo库
yum update		#更新yum所有库
yum makecache	#缓存package包到本地,安装更快

【扩展】由于5台安装方式一致,可以使用此方法一次安装5台nginx
在这里插入图片描述
选择【发送键输入到所有会话】,之后只要操作一台机器就可以同时操作5台。
在这里插入图片描述
在这里插入图片描述

#进入tar.gz包解压的nginx-1.20.2目录
./configure --prefix=/data/nginx  --with-http_stub_status_module --with-http_realip_module
make && makeinstall
#要注意--prefix=/data/nginx 后面不能加/号

2、配置配置文件

LB负载均衡配置

#v1.jd.com.conf
upstream web01 {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80; 
    server_name v1.jd.com;

    location / { 
        proxy_pass http://web01;
        proxy_set_header Host $host;
    }   
}
#v2.jd.com.conf
upstream web02 {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80; 
    server_name v2.jd.com;

    location / { 
        proxy_pass http://web02;
        proxy_set_header Host $host;
    }   
}

web端4台配置(端口差异,其他一致)

#如果yum安装,所以新增2个配置文件放入include /etc/nginx/conf.d/*.conf目录下。
以下是yum安装的Nginx的默认路径:
(1) Nginx配置路径:/etc/nginx/
(2) PID目录:/var/run/nginx.pid
(3) 错误日志:/var/log/nginx/error.log
(4) 访问日志:/var/log/nginx/access.log
(5) 默认站点目录:/usr/share/nginx/html
  • 编写两个页面文件v1.jd.com.html,v2.jd.com.html
#先清空无用的页面文件
rm -rf /data/nginx/html/*
echo "This is v1.jd.com page!" > /data/nginx/html/v1.jf.com.html
echo 'This is v2.jd.com page!' > /data/nginx/html/v2.jf.com.html
  • 修改4台配置文件
#v1.jd.com.conf
#----------------------web01----------------------
server {
    listen   8081;
    server_name v1.jd.com;

    access_log /data/nginx/logs/v1.jd.com/v1.jd_access.log;    
    error_log /data/nginx/logs/v1.jd.com/v1.jd_error.log;
    
    location / {
        root /data/nginx/html/v1.jd.com;
        index index.html index.htm;
    }
}

#----------------------web02----------------------
server {
    listen   8082;
    server_name v1.jd.com;

    access_log /data/nginx/logs/v1.jd.com/v1.jd_access.log;    
    error_log /data/nginx/logs/v1.jd.com/v1.jd_error.log;
    
    location / {
        root /data/nginx/html/v1.jd.com;
        index index.html index.htm;
    }
}
#----------------------web03----------------------
server {
    listen   8083;
    server_name v1.jd.com;

    access_log /data/nginx/logs/v1.jd.com/v1.jd_access.log;    
    error_log /data/nginx/logs/v1.jd.com/v1.jd_error.log;
    
    location / {
        root /data/nginx/html/v1.jd.com;
        index index.html index.htm;
    }
}
#----------------------web04----------------------
server {
    listen   8084;
    server_name v1.jd.com;

    access_log /data/nginx/logs/v1.jd.com/v1.jd_access.log;    
    error_log /data/nginx/logs/v1.jd.com/v1.jd_error.log;
    
    location / {
        root /data/nginx/html/v1.jd.com;
        index index.html index.htm;
    }
}
#v2.jd.com.conf
#----------------------web01----------------------
server {
    listen   8081;
    server_name v2.jd.com;

    access_log /data/nginx/logs/v2.jd.com/v2.jd.access.log;    
    error_log /data/nginx/logs/v2.jd.com/v2.jd.error.log;
    
    location / {
        root /data/nginx/html/v2.jd.com;
        index index.html index.htm;
    }
}
#----------------------web02----------------------
server {
    listen   8082;
    server_name v2.jd.com;

    access_log /data/nginx/logs/v2.jd.com/v2.jd.access.log;    
    error_log /data/nginx/logs/v2.jd.com/v2.jd.error.log;
    
    location / {
        root /data/nginx/html/v2.jd.com;
        index index.html index.htm;
    }
}
#----------------------web03----------------------
server {
    listen   8083;
    server_name v2.jd.com;

    access_log /data/nginx/logs/v2.jd.com/v2.jd.access.log;    
    error_log /data/nginx/logs/v2.jd.com/v2.jd.error.log;
    
    location / {
        root /data/nginx/html/v2.jd.com;
        index index.html index.htm;
    }
}
#----------------------web04----------------------
server {
    listen   8084;
    server_name v2.jd.com;

    access_log /data/nginx/logs/v2.jd.com/v2.jd.access.log;    
    error_log /data/nginx/logs/v2.jd.com/v2.jd.error.log;
    
    location / {
        root /data/nginx/html/v2.jd.com;
        index index.html index.htm;
    }
}

创建后端4台日志文件目录

mkdir -p /data/nginx/logs/v1.jd.com
mkdir -p /data/nginx/logs/v2.jd.com

3、测试负载

#100服务器/etc/hosts里面添加一行域名解析 
vi /etc/hosts
192.168.142.100 v1.jd.com v2.jd.com
#实时查看负载日志文件
tailf /data/nginx/logs/v1.jd.com/v1.jd_access.log

在这里插入图片描述
在这里插入图片描述

#实时查看负载日志文件
tailf /data/nginx/logs/v2.jd.com/v2.jd.access.log

在这里插入图片描述
在这里插入图片描述


遇到问题:

不同域名访问相同服务器的不同端口的不同页面,如果后端两个界面端口相同,读取到的html,发现只会获取到v1.dj.com的,无法正常负载。

解决方法:

1、更改第二个域名的端口。如上配置即可

2、可以通过proxy_pass直接写入解析的域名可以直接访问后端域名。

例如:

```bash
upstream v1.jd.com {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80;
    server_name v1.jd.com;

    location / {
        proxy_pass http://v1.jd.com;
    }
}
upstream v2.jd.com {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80;
    server_name v2.jd.com;

    location / {
        proxy_pass http://v2.jd.com;
    }
}

**3、最正确的办法(重点!!!!)

加上proxy_set_header host $host; 否则无法访问到v2.jd.com

upstream v1 {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80;
    server_name v1.jd.com;

    location / {
        proxy_pass http://v1;
        proxy_set_header host $host;
    }
}
upstream v2 {
    server 192.168.142.101:8082;
    server 192.168.142.103:8081;
    server 192.168.142.104:8083;
    server 192.168.142.105:8084;
}
server {
    listen 80;
    server_name v2.jd.com;

    location / {
        proxy_pass http://v2;
        proxy_set_header host $host;
    }
}

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:16:02  更:2022-04-26 12:16:41 
 
开发: 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年11日历 -2024/11/15 19:30:52-

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