LVS+Nginx高可用集群--基础篇

news2024/11/27 13:12:48

1.集群概述

单体部署:
在这里插入图片描述
可以将上面内容分别部署在不同的服务器上。
单体架构的优点:
小团队成型就可完成开发,测试,上线
迭代周期短,速度快
打包方便,运维简单

单体架构的挑战:单节点宕机造成所有服务的不可用(多节点);耦合度太高(迭代,测试,部署)(分布式部署);单节点并发能力有限(负载均衡)

集群:计算机”整体”构成整个系统;这个“群体”构成一个整体,不能独立存在;群体提升并发与可用性
在这里插入图片描述

集群的优势:提高系统性能;提高系统可用性;可扩展性高;

使用集群的注意点:
用户会话:会话要使用分布式会话,通过Redis缓存实现分布式会话。
定时任务:所有的计算机节点,上面所有的任务,在某个时刻,都会跑一遍;任务都是一模一样,会浪费计算机的资源。可以统一做定时任务的服务;或者使用mq的延时任务。
内网互通:必须保障。

2.什么是Nginx?常用的web服务器有哪些?

Nginx:高性能的http和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务;主要功能是反向代理;通过配置文件实现负载均衡或者集群;静态资源的虚拟化

常见的服务器:
在这里插入图片描述

3.什么是反向代理?

正向代理:客户端请求目标服务器之间的一个代理服务器;
请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端。
在这里插入图片描述
反向代理:
用户请求目标服务器,由代理服务器决定访问哪个ip
教务处相当于方向代理。
在这里插入图片描述
正向代理和反向代理的区别:
位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;

代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端;

用途不同
正向代理,为在防火墙内的局域网客户端提供访问Internet的途径;
反向代理,将防火墙后面的服务器提供给Internet访问;

安全性不同
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务;
反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理。

备注:正向代理–HTTP代理为多个人提供翻墙服务;反向代理–百度外卖为多个商户提供平台给某个用户提供外卖服务。

4.Nginx安装与运行

(1)去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
(2)上传nginx到linux系统
(3)安装依赖环境
安装gcc环境;

 yum install gcc-c++

安装PCRE库,用于解析正则表达式;

 yum install -y pcre pcre-devel

zlib压缩和解压缩依赖;

 yum install -y zlib zlib-devel

SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

yum install -y openssl openssl-devel

(4)解压,需要注意,解压后得到的是源码,源码需要编译后才能安装

tar -zxvf nginx-1.16.1.tar.gz

(5)编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

mkdir /var/temp/nginx -p

(6)在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件

./configure \n    --prefix=/usr/local/nginx \n    --pid-path=/var/run/nginx/nginx.pid \n    --lock-path=/var/lock/nginx.lock \n    --error-log-path=/var/log/nginx/error.log \n    --http-log-path=/var/log/nginx/access.log \n    --with-http_gzip_static_module \n    --http-client-body-temp-path=/var/temp/nginx/client \n    --http-proxy-temp-path=/var/temp/nginx/proxy \n    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \n    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \n    --http-scgi-temp-path=/var/temp/nginx/scgi

配置命令:
在这里插入图片描述
(7)make编译

make

(8)安装

make install

(9)进入sbin目录启动nginx

./nginx

停止:./nginx -s stop
重新加载:./nginx -s reload

(10)打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功:

注意事项:
如果在云服务器安装,需要开启默认的nginx端口:80
如果在虚拟机安装,需要关闭防火墙
本地win或mac需要关闭防火墙

5.Nginx显示默认首页过程解析

内网环境:使用内网ip
云服务器:使用外网ip

请求nginx默认页面:
在这里插入图片描述
Nginx主要配置:

 server {
        listen       80;
        server_name  localhost;

               location / {
            root   html;
            index  index.html index.htm;     }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;}
}

6.Nginx进程模型解析

ps -ef|grep nginx 查询nginx相关进程。

root      2856 32390  0 10:12 pts/1    00:00:00 grep --color=auto nginx
root     21121     1  0 08:29 ?        00:00:00 nginx: master process ./nginx
nobody   21122 21121  0 08:29 ?        00:00:00 nginx: worker process

Master进程:主进程。Master接收外界的一些信号,传递给对应的worker进程;监控worker
worker进程:工作进程,为master服务

在这里插入图片描述
master接收一些信号,然后传递给相应的worker进程;master还可以对发送的指令可以读取并验证核心配置文件的有效性:
具体实例:
[root@VM-0-9-centos conf]# …/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Worker进程数量是可以配置的。
配置worker进程的过程:
在这里插入图片描述
nginx进程模型:
在这里插入图片描述
每个进程相互独立,多线程的话,虽然多线程的开销要小于进程,但是它们会公用一个内存,
线程之间是相互会有影响的,需要开发人员自己去维护内存管理。并且会增加一定的风险,导致我们出错。
多进程,相互之间是独立的,安全的。如果说一个worker异常退出了,其他的worker会正常运行。

7.Nginx处理web请求机制解析

Nginx本身是性能非常高,非常好的服务器。可以处理的并发数可以达到几十万或者几百万。
Worker抢占机制:use epoll.Linux epoll机制。
Master fork出多个worker进程(fork是底层机制。)
Accept_mutex:互斥锁,多个worker竞争,抢到了才能去处理cilent.
在这里插入图片描述
传统服务器事件处理:类似于BIO:
在这里插入图片描述
以上是同步阻塞。
在这里插入图片描述
Nginx事件处理:本身是异步非阻塞模型,一般有默认的并发数(1024).可以进行配置,根据你的硬件来配置
events {
#默认使用epoll
use epoll;
#每个worker允许连接的客户端最大连接数
worker_connections 1024;
}
使用epoll可以处理6-8万个请求,当worker获得cilent的请求后,对请求处理到阻塞的部分,worker就不会继续等待阻塞的请求,而是处理一些其他客户端的请求。这样worker就可以同时处理多个cilent请求,从而实现了高并发。

在这里插入图片描述
Nginx的性能为什么这么高?
1.worker的抢占机制。
2.异步非阻塞的通信模式,多路复用器。

8.nginx.conf配置结构与语法指令

在这里插入图片描述
配置里有指令和指令块。
指令:
#user nobody;
worker_processes 2;
指令块:
events {
#默认使用epoll
use epoll;
#每个worker允许连接的客户端最大连接数
worker_connections 1024;
}

9.同步与异步,阻塞与非阻塞

同步:关键字:轮询;异步:通知;
阻塞:关键字:一直等待;非阻塞:关键字:不用等
还可以根据客户端和服务器端分开处理。
同步时客户端就会阻塞。阻塞时,服务器端就会阻塞。
从客户端和服务器端的角度来理解,异步:服务器端会通知你后台正在处理,客户端可以处理其他请求。
对于阻塞以及非阻塞的理解,关键点在于,非阻塞时,服务器端可以继续处理请求,极大的节省系统资源。经济效益高

10.Nginx.conf核心配置文件

设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody
user root;//涉及到操作系统用户的权限问题,nobody跟root用户操作文件的权限完全不同。

user root;

worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行

worker_processes 1;

nginx 日志级别debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
通过不同的日志级别,输出不同的日志内容

此处配置的日志文件在:
–error-log-path=/var/log/nginx/error.log

设置nginx进程 pid
配置内容:
–pid-path=/var/run/nginx/nginx.pid

pid        logs/nginx.pid;

设置工作模式

events {
    # 默认使用epoll
    use epoll;
    # 每个worker允许连接的客户端最大连接数
    worker_connections  10240;
}

http 是指令块,针对http网络传输的一些指令配置

http {
}

include 引入外部配置,提高可读性,避免单个配置文件过大

include       mime.types;

设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了
–http-log-path=/var/log/nginx/access.log
在这里插入图片描述
在这里插入图片描述
sendfile使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发送,提高了效率。

sendfile        on;
tcp_nopush      on;

keepalive_timeout设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。

#keepalive_timeout  0;
keepalive_timeout  65;

gzip启用压缩,html/js/css压缩后传输会更快

gzip on;

server可以在http指令块中设置多个虚拟主机

listen 监听端口
server_name localhost、ip、域名
location 请求路由映射,匹配拦截
root 请求位置
index 首页设置

 server {
            listen       88;
            server_name  localhost;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    }

11.nginx常用命令解析

Nginx常用命令:
./nginx -t:查看配置文件是否正确
./nginx -s reload:重启nginx
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启
可以将配置的多台server 保存在xxx.conf文件中,然后通过include引入。

暴力关闭nginx:./nginx -s stop 强制关闭。
友好关闭:./nginx -s quit:会维持当前用户连接直到用户不再发送请求关闭连接。针对一些http请求。
检验:./nginx -t :配置文件发生更改,检查配置文件是否有问题
查看相关版本号 ./nginx -v 展示具体的信息:./nginx -V 提供命令的帮助: ./nginx -h或者./nginx -? 指定特定的配置文件 ./nginx -c

12.nginx日志切割-手动

去特定目录下查看日志文件:
命令: cd /var/log/nginx
然后根据以前的配置查询所有相关的文件
命令:/usr/local/nginx/sbin/nginx -V
查询的是之前安装nginx所有相关的配置。
首先创建对应的文件:cut_my_log.sh
代码:

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`

新建文件添加权限。
chmod +x cut_my_log.sh
成功后,文件变成绿色。
测试日志切割后的结果:
./cut_my_log.sh

测试:
根据时间戳生成的log文件,每执行一次进行一次切割。

在这里插入图片描述
nginx日志切割-定时任务
安装定时任务:

yum install crontabs

crontab -e 编辑并且添加一行新的任务:

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

重启定时任务:

service crond restart

crontab -l:查询定时任务内容
在这里插入图片描述
常用定时任务命令:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表

Systemctl stop crond.service:关闭定时任务
Systemctl status crond.service :查看定时任务的状态

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

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

相关文章

SecureCRT--使用sftp上传和下载文件

原文网址:SecureCRT--使用sftp上传和下载文件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SecureCRT如何在软件内直接上传和下载文件。 SecureCRT可以用如下两种方法上传和下载文件: 自带的sftp插件服务器安装rz/sz命令 本文介绍第一种方法&#xff0…

12个视觉艺术分类

视觉设计可以按照多种方式进行分类,这些分类通常基于设计的目的、风格或应用场景。本文为大家介绍12种视觉设计,分别是平面设计、标志设计、包装设计、用户界面设计 (UI Design)、用户体验设计 (UX Design)、插图设计、网页设计、动画设计、展览设计、环…

Jenkins 下使用 Node 和 Npm(借助 nvm-wrapper 插件)构建前端程序

一、前言 搭建完Jenkins后,如何使用node进行构建前端呢,多个项目会使用的node的多个版本。如何动态指定node的版本进行构建呢。 方案一: 安装多个node版本,然后进行指定。这样比较麻烦。 方案二: 使用Jenkins的nv…

C++时区转换

#include <iostream> #include "cctz/civil_time.h" #include "cctz/time_zone.h"// 时区转换库 // https://github.com/google/cctzint test() {for (cctz::civil_day d(2016, 2, 1); d < cctz::civil_month(2016, 3); d) {std::cout << &…

必备的 Adobe XD 辅助工具

想要高效便捷的使用 Adobe XD&#xff0c; Adobe XD 插件是必不可少的&#xff0c; Adobe XD 的插件非常多&#xff0c;但 90%都是英文&#xff0c;并且良莠不齐。在这儿挑选 9 个好用的 Adobe XD 插件给大家&#xff0c;这里是我整理的一些实用 Adobe XD 插件&#xff0c;让你…

Python基础小知识问答系列-列表元素次数统计

1. 问题&#xff1a; 怎样统计列表中元素出现次数&#xff1f; 怎样获得列表中元素出现次数排在前n的元素&#xff1f; 怎样汇总两个列表中元素出现次数的信息&#xff1f; 2. 解决方法&#xff1a; 使用collections模块中的Counter函数。 示例&#xff1a; i…

[Mysql] 的基础知识和sql 语句.教你速成(下)——数据库的约束篇

目录 前言 约束 一.我们为什么需要约束 二.常见的约束类型 NOT NULL 约束 UNIQUE 约束 DEFAULT 约束 PRIMARY KEY FOREIGN KEY CHECK约束 原因&#xff1a; 结尾 前言 距离上篇的更新已经快两周了,这个时候大伙都已经考完了吧!现在更新多少有点马后炮,但是没办法呀…

Qt:5.QWidget属性介绍(Enabled属性-控件可用性设置、geometry属性-控件位置/大小设置)

目录 一、 QWidget属性的介绍&#xff1a; 二、Enabled属性-控件可用性设置&#xff1a; 2.1Enabled属性的介绍&#xff1a; 2.2获取控件当前可用状态的api——isEnabled()&#xff1a; 2.3设置控件当前的可用状态的api—— setEnabled() &#xff1a; 2.4 实例&#xff…

ARM架构 AArch64 基础知识介绍

介绍 aarch64是 ARM 架构的 64 位版本&#xff0c;它是 ARMv8 架构的一部分&#xff0c;被设计用来提供更高的性能和更大的地址空间&#xff0c;同时保持与 32 位 ARM 架构的兼容性。AArch64 是 ARMv8 的 64 位指令集架构&#xff08;ISA&#xff09;&#xff0c;它提供了丰富的…

【高级篇】第10章 Elasticsearch 集群管理与扩展

在本章中,我们将深入探讨Elasticsearch集群的管理与扩展策略,旨在帮助读者构建一个既能应对大规模数据处理需求,又能保持高可用性和弹性的系统架构。我们将从集群架构设计入手,解析不同节点的角色与配置,然后转向节点发现与配置同步机制,最后讨论水平扩展与容错策略,确保…

arthas命令使用

dashboard(线程、内存等环境概览) jvm&#xff08;JVM相关信息概览&#xff09; 1、RUNTIME&#xff08;系统运行环境JVM相关信息&#xff0c;运行时长等&#xff09; 2、CLASS-LOADING&#xff08;类加载信息&#xff09; 3、 COMPILATION&#xff08;编译信息&#xff09; 4…

【Linux】探索网络编程:TCP/UDP协议解析与Socket应用实例

文章目录 前言&#xff1a;1. 预备知识1.1 理解源IP地址和目的IP地址1.2 认识端口号1.3 理解"端口号"和"进程ID"1.4 理解源端口号和目的端口号1.5 认识TCP协议1.6 认识UDP协议1.6 TCP vs UDP 可靠性1.7 网络字节序 2. socket 编程接口2.1 socket 常见API2.…

二叉树的链式访问 与 二叉树专题

目录 二叉树的前、中、后序遍历求二叉树第K层节点的个数二叉树查找值为x的节点leetcode相同的树对称二叉树二叉树的前序遍历另一棵子树牛客 二叉树的遍历 二叉树的前、中、后序遍历 1.前序遍历&#xff1a;先访问根节点&#xff0c;再访问左子树&#xff0c;最后访问右子树 根…

花键参数确定的流程是怎么样的?

继续花键的话题&#xff0c;今天跟小伙伴们一同学习一下&#xff1a;渐开线花键的参数确定的一般流程及基本方法。 前面有好几篇介绍了花键的基本参数的概念&#xff0c;包括规格、模数、齿数、压力角等等。以及花键的定心方式&#xff0c;内外花键的配合方式。那么这些参数的…

抬头显示器HUD原理及特性

HUD基本原理 抬头数字显示仪(Head Up Display)&#xff0c;又叫平视显示系统&#xff0c;它的作用&#xff0c;就是把时速、导 航等重要的行车信息&#xff0c;投影到驾驶员前风挡玻璃上&#xff0c;让驾驶员尽量做到不低头、不转头 就能看行车信息。 HUD成像为离轴三反的过程&…

零一万物: Yi Model API的使用

一、获取API Key 通过官方网址注册账号并且认证: 零一万物大模型开放平台 创建API Key 二、安装及调用 安装OpenAI SDK ​ 零一万物API 接口兼容 OpenAI 的 Python SDK&#xff0c;只需要简单配置即可使用。 安装 OpenAI SDK。请确保使用的 Python 版本至少为 3.7.1&a…

ESP32CAM物联网教学06

ESP32CAM物联网教学06 拍照上传互联网 在上节课中&#xff0c;小智的物联网视频小车&#xff0c;在与家用的云台监控摄像头的PK中&#xff0c;各具优势&#xff0c;难分高下&#xff0c;这让小智下定决心&#xff0c;再次增强物联网小车的功能&#xff0c;提升小车的智能水平。…

Lumion专业3D渲染三维场景设计软件下载,Lumion强大的三维渲染软件

Lumion&#xff0c;这款软件具备令人瞩目的渲染速度&#xff0c;能够以闪电般的速度生成令人叹为观止的图像、视频和360全景图&#xff0c;让设计师们能够在短时间内将创意转化为视觉盛宴。 Lumion软件内置了一系列可定制的预先配置的HDR天空环境&#xff0c;这些天空环境不仅丰…

Spring启动时,将SpringContext设置到Util中(SpringContextUtil)

场景 在Spring应用开发中&#xff0c;为简化代码或者在静态方法中获取Spring应用的上下文&#xff0c;需要把SpringContext设置到类属性上。经过对源码的分析和实践&#xff0c;使用Spring的事件监听器监听ApplicationPreparedEvent事件是最佳的方式。 通过ApplicationPrepar…

STM32工业自动化控制系统教程

目录 引言环境准备工业自动化控制系统基础代码实现&#xff1a;实现工业自动化控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 控制系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业自动化控制系统利用…