nginx负载均衡实战练习

news2024/11/27 0:20:27

1、简介

nginx是一个web服务器,反向代理服务器、开源并且高性能,社区里面有很多工程师在维护这个项目。可以在官网(Index of /download/)下载组件。而且nginx可以用来做流量转发,也是是负载均衡功能,分散单台服务器的处理负担,在现在的互联网行业中使用很常见。

转发流量,分散负担

2、主机网络配置

网络规划

主机类型ip业务端口
master192.168.0.10080
slave192.168.0.10180
master192.168.0.10088

将两台主机模拟成服务器,负载均衡放在master,监听88端口,分发slave和master的流量。

网卡设备能通百度就行。

两个主机都操作

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=0e7eb8d7-7ec0-4fb3-8895-1fd19f2f5af3
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=114.114.114.114
DNS2=8.8.8.8

3、安装apache服务

两台主机都操作

[root@localhost ~]# yum install httpd -y
启动并设置开机启动
[root@localhost ~]# systemctl restart httpd && systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

去浏览器看看网页

关闭防火墙并开机关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

出现这个页面说明apache安装成功

4、安装编译组件

nginx是C语言开发的,需要c语言来解析。

master节点上运行

[root@localhost ~]# yum install -y gcc pcre pcre-devel zlib zlib-devel

5、安装nginx

去官网上(Index of /download/)下载一个nginx-1.21.6.tar.gz组件,找不到就直接百度,应该可以找到。

解压缩:

[root@localhost ~]# tar -zxvf nginx-1.21.6.tar.gz
[root@localhost ~]# cd nginx-1.21.6

指定安装路径

[root@localhost nginx-1.21.6]# ./configure --prefix=/usr/local/nginx

编译并且安装

[root@localhost nginx-1.21.6]# make && make install

没报错,没红色的字说明成功了。

[root@localhost nginx-1.21.6]# cd /usr/local/nginx/sbin

80端口被占用,应该改改端口

[root@localhost sbin]# cd ..
[root@localhost nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@localhost nginx]# cd conf

[root@localhost conf]# ls
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf
[root@localhost conf]# vi nginx.conf
 #把80改成88 
  server {
        listen       88;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
[root@localhost conf]# cd ..
[root@localhost nginx]# cd sbin
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx
[root@localhost sbin]#
运行成功了

这样启动总是要找地方,不太方便,准备一个脚本,可以用系统命令去调用

[root@localhost sbin]# vi /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload #重启nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop #停止
ExecQuit=/usr/local/nginx/sbin/nginx -s quit #优雅停止nginx
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@localhost sbin]# systemctl daemon-reload
[root@localhost sbin]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost sbin]# systemctl restart nginx

报了一个错误,我们看看日志

[root@localhost ~]# cd /usr/local/nginx
[root@localhost nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@localhost nginx]# cd logs
[root@localhost logs]# ls
access.log  error.log
2022/12/14 18:23:38 [emerg] 4453#0: bind() to 0.0.0.0:88 failed (98: Address already in use)

需要把nginx服务杀掉,再重启

[root@localhost logs]# ps -ef |grep nginx
root       4403      1  0 18:20 ?        00:00:00 nginx: master process ./nginx
nobody     4404   4403  0 18:20 ?        00:00:00 nginx: worker process
root       4463   1567  0 18:25 pts/0    00:00:00 grep --color=auto nginx

安装killall命令

[root@localhost logs]# yum install -y psmisc
[root@localhost logs]# killall -9 nginx
[root@localhost logs]# systemctl restart nginx
重启就好了

6、配置负载均衡

配置的参数有多种多样,有连接数,权重,等等,在本次实操中,我们配置监听的端口,及ip地址,来做负载均衡。

大概配这么多就行了

[root@localhost ~]# vi  /usr/local/nginx/conf/nginx.conf
    upstream loabd{
        server 192.168.0.100:80;
        server 192.168.0.101:80;
}
    server {
        listen       88;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           # root   html;
           # index  index.html index.htm;
            proxy_pass http://loadb;
}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

但是现在还观察不到负载均衡现象,需要在两台主机中配置apache的网页。

[root@localhost ~]# cd /var/www/
[root@localhost www]# ls
cgi-bin  html
[root@localhost www]# cd html/
[root@localhost html]# ls
[root@localhost html]# vi index.html
hello,this is master,my ipaddr is 192.168.0.100
[root@localhost ~]# vi /var/www/html/index.html
hello,everyone,this is slave ,my ipaddr 192.168.0.101

两台主机都重启httpd服务

9、观察负载均衡现象

在浏览器中输入master的地址加端口,及192.168.0.100:88,刷新观察负载均衡现象。

还没成功,我们看下日志

配置文件有点错误

2022/12/14 18:36:34 [error] 4479#0: *1 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.10, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.100:88", referrer: "http://192.168.0.100:88/"
2022/12/14 18:37:20 [emerg] 4515#0: host not found in upstream "loadb" in /usr/local/nginx/conf/nginx.conf:49

db和bd写反了

重启服务

在两台主机上布置的网页,成功通过nginx进行了流量转发,本次实验到此为止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后…

富而喜悦一年一渡专属于你的特别的礼物!快来收!

过去的一年,你过得怎么样?是否有过艰难的逆流时刻,是否拥有过快乐和满足,又是否得到了成长和收获?富而喜悦2023一年一渡财富流新年主题活动就要给你一个礼物多多!美美的“礼物”活动! 为此&…

虹科分享 | 虹科Dimetix激光测距传感器如何利用反射来测量?(上)

-01-测量原理 ● 反射调制激光 采用激光振幅的高频调制,并评估这些调制的高频信号(脉冲串)的相位和距离。激光束在短间隔内被放大调制,这使得它能够非常迅速地测量单个脉冲包的与距离有关的时间偏移,而且还能测量单个波在调制包内相互之间的…

[附源码]Nodejs计算机毕业设计基于Web学术会议投稿管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Ims开机注册流程

目录 概述Ims注册时序图PhoneApp的启动过程Ims注册主要代码总结概述 IMS(IP Multimedia Subsystem)是IP多媒体系统, 是一种新的多媒体业务形式,ims service 结构主要包括 ImsService、ImsManager、MmTelFeatureConnection、ImsCallSession。其中: ImsS…

关于java 操作word的几种方式

1.apose word <dependency><groupId>com.luhuiguo</groupId><artifactId>aspose-words</artifactId><version>22.4</version><type>pom</type> </dependency> 一般用来转换文件格式&#xff0c;对于读取创建段…

ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用

目录 01 说明 02 实验目的及要求 03 实验设备及软件平台 03 实验原理 04 实验内容与步骤 01 说明 由于这次的作业是从word上粘贴过来&#xff0c;所以有一些格式修改不了&#xff0c;也没有时间和精力修改&#xff0c;所以没有详细目录等等&#xff0c;浏览的时候应该非常难受.…

前端基础(六)_CSS单位

CSS单位 px px 相对于显示器屏幕分辨率而言&#xff0c;值固定&#xff0c;计算比较容易 em em 相对长度单位 和父元素的字号大小有关系 font-size属性值而言 浏览器默认字号为16像素&#xff0c;未经调整的浏览器都符合1em16px div p都设置了font-size 那em就是随p特点&am…

2022-12-10 Set类型

set类型 新的存储需求&#xff0c;存储大量的数据&#xff0c;在查询方面提供更高的效率。 需要的存储结构&#xff1a;能够保存大量的数据&#xff0c;高效的内部存储机制&#xff0c;便于查询。 set类型&#xff1a;与hash存储结构完全相同&#xff0c;仅存储键&#xff0c…

考研证件照要求?如何制作考研用的证件照?

考研报报名网上确认环节&#xff0c;网上确认的时候需要准备电子照片。疫情阶段今天教给大家不需要出门就可以方便&#xff0c;快捷的制作合格的证件照&#xff0c;免去出门办理和审核不过的麻烦&#xff01; 考研证件照要求&#xff1a; 1. 本人近三个月内正面、免冠、无妆、彩…

基于遗传算法优化的lssvm回归预测matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

华为云WeLink协作文档,助您开启职场高效办公

Word、PPT、Excel&#xff0c;是大家在日常工作中最常用的Office三件套&#xff0c;很多人都经历过&#xff0c;写一份Word或者PPT&#xff0c;从v1写到v10&#xff0c;不断接收、汇总、修改同事提供的素材&#xff0c;不断向领导或客户发送最新审核版本&#xff0c;最后可能还…

前端框架搭建(四)改造导入项目插件流程【vite】

1.改造为函数 默认模板创建的vite.config.ts文件是这样的 我们在上一节也提到过&#xff0c;这样将使得vite的一些配置十分杂乱&#xff0c;无法统一进行管理&#xff0c;因此我们可以将其函数化 export default defineConfig(configEnv > {const viteEnv loadEnv(config…

Python基础语法之注释、缩进、数字类型、一句多行和多行一句等的讲解及演示(超详细 附源码)

Python是实现了平台无关性的高级程序设计语言&#xff0c;它是在源代码程序与各平台的机器码之间插入了一个虚拟机&#xff0c;也就是说源代码程序不再直接翻译成机器码&#xff0c;而是先编译成虚拟机的字节码&#xff0c;再将字节码解释成各平台可执行的机器码。 Python源代…

传输层协议 —— TCP(图解2)

​ 目录 一、前言 二、重传机制 1. 超时重传 2. 快速重传 3. SACK 4. D-SACK 三、滑动窗口 1. 发送方的滑动窗口 2. 程序是如何表示发送方的四个部分 3. 接收方的滑动窗口 四、流量控制 五、拥塞控制 1. 慢启动 2. 拥塞避免 3. 拥塞发生 4. 快速恢复 六、TCP…

Moonbeam生态说|聊聊平行链Bifrost及其与Moonbeam集成最新动态

「Moonbeam生态说」是Moonbeam中文爱好者社区联合Moonbeam中文高级大使组织的社区AMA活动。 该活动为已部署Moonriver或Moonbeam的项目方提供了在主流Moonbeam非官方中文社区内介绍自己的项目信息&#xff0c;包括&#xff1a;项目介绍、团队介绍、技术优势等&#xff0c;帮助社…

[附源码]Node.js计算机毕业设计高校本科毕业及资料存档管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

基于Android的迷你桌球游戏设计与实现

目录 摘要11 关键词11 绪论11 1 游戏开发概述22 1.1 背景22 1.2 课题来源33 1.3 国内外研究现状33 1.4 Android应用程序构成44 1.4.1 应用程序55 1.4.2 应用程序框架55 1.4.3 库与运行环境55 1.4.4 内核55 2 游戏开发平台搭建55 2.1 SDK的下载与安装55 2.2 Ecli…

Chrome 解决 主页被qsearch 拦截

原文地址&#xff1a;谷歌浏览器被劫持如何解决&#xff08;附完美攻略&#xff09; - 知乎 今天&#xff0c;发现Chrome浏览器主页被修改了&#xff0c;尝试使用设置里主页&#xff0c;外观设置&#xff0c;都没有效果。改好了&#xff0c;但只要一刷新&#xff0c;主页又恢复…

短链是什么原理?怎么实现呢?

目录一、为什么需要短链二、短链跳转访问原理三、短链生成实现方案1、自增序列算法2、Hash算法四、代码示例1、表结构及索引2、外部依赖3、Base62Utils4、DAO层5、业务层五、测试用例一、为什么需要短链 内容营销中给用户推送营销消息最常见的方式就是发短信&#xff0c;比如三…