深度优化Nginx负载均衡策略,携手Keepalived打造高可用服务架构新纪元

news2024/11/15 21:22:53
  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

目录

前言:

让我们首先来谈谈容灾与备份策略:

实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用服务架构

Lb1  192.168.8.5的配置

1.rpm安装nginx

2.进入到mnt下的nginx下,并进行安装

3.启动服务

4.删除默认配置文件

5.创建新的配置文件

6.重启服务并查看端口

7.将/etc/nginx下的所有东西拷贝到lb2上

8.创建优化项文件,网站配置文件直接调用

9.安装keepalived

10.配置keepalived

11.启动服务:

12.解决nginx故障造成群集无法工作

13.添加脚本追踪模块到keepalived配置文件

14.主服务器添加计划任务

15.主服务器关闭nginx,测试keepalived地址漂移

Lb2  192.168.8.6的配置

1.rpm安装nginx

2.进入到mnt下的nginx下,并进行安装

3.启动服务

4.删除默认配置文件

5.拷贝好后重启服务

6.创建优化项文件,网站配置文件直接调用(选做,但推荐)

7.安装keepalived

Web1 192.168.8.7的配置

1.pm安装nginx

2.进入到mnt下的nginx下,并进行安装

3.启动服务

4.删除默认配置文件

5.拷贝好后重启服务

6.重启服务,并将网页根目录拷贝到php8.9上

7.将网页根目录拷贝到nfs8.11上

8.查看并挂载

Php 192.168.8.9的配置

1.192.168.8.9安装php

2.进入/mnt/php-rpm/安装相关的包

3.启动php服务,设置服务自启,并查看端口

4.修改php服务器的配置文件

5.重启php服务

Mysql 192.168.8.10的配置

1.192.168.8.9安装mysql

2.启动服务

3.创建数据库和用户

客户端进行访问

Web2  192.168.8.8的配置

1.rpm  安装nginx

2.进入到mnt下的nginx下,并进行安装

3.安装完成后启动服务

4.删除默认配置文件

5.复制wordpress安装包,到虚拟机/,解压并赋权

6.创建虚拟主机配置文件

7.将网页根目录及nginx拷贝到web1上

客户端进行访问


前言:

在当今这个信息爆炸的时代,互联网企业面临的一个重大挑战是如何确保其服务的稳定性和持续性,特别是在应对大规模访问请求时。 为此,构建一个高可用的服务架构显得尤为重要。

这种架构不仅能够提升系统的整体性能,还能够在发生故障时快速恢复,保证服务的不间断。 高可用性,简言之,指的是系统在遇到故障或异常情况时依然能够继续运行的能力。 构建高可用架构的目标,就是要让系统在面对各种不可预见的故障场景时,仍能保持稳定、可靠并保持高性能运作。

那么,如何实现这样的架构呢?


让我们首先来谈谈容灾与备份策略:

这是保障系统可用性的第一道防线。 通过多活数据中心部署、数据备份以及数据复制等策略,即便发生了灾难性故障,系统也能实现快速恢复。

接着是负载均衡: 

这一技术能将流量智能地分散到多个服务器上,有效避免单点故障,同时提升系统的可用性和性能。 而说到弹性伸缩,它允许系统根据当前负载的变化,动态调整服务器的数量和配置,以保持系统的高性能和高可用性。障检测和自动恢复则利用了监控工具和自动化脚本,实时监测系统的健康状况,并在发现异常时迅速采取恢复措施。

最后,安全性和可靠性是构建任何系统的基石。 通过数据加密、访问控制等安全措施,可以确保系统数据的保密性和完整性。


实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用服务架构

实验拓扑:Lb1  192.168.8.5

                  Lb2  192.168.8.6

                  Web1  192.168.8.7

                  Web2  192.168.8.8

                  Php    192.168.8.9

                 Mysql  192.168.8.10

Lb1  192.168.8.5的配置

1.rpm安装nginx

卸载原来镜像,挂载软件镜像

umount /dev/cdrom

mount /dev/cdrom /mnt/

2.进入到mnt下的nginx下,并进行安装

cd /mnt/nginx-rpm/

rpm -ivh * --nodeps --force

3.启动服务

systemctl  start  nginx


4.删除默认配置文件

91fd63fd31bf4c69b3ffb38520d67a60.png


5.创建新的配置文件

vim /etc/nginx/conf.d/lb1.conf

添加:

upstream web {
        server 192.168.8.7:80;
        server 192.168.8.8:80;
}
server {
        listen 80;
        server_name www.abc.com;

        location / {
                proxy_pass      http://web;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
}


6.重启服务并查看端口

systemctl restart nginx

netstat -anptl | grep nginx


7.将/etc/nginx下的所有东西拷贝到lb2上

scp -rp /etc/nginx/* root@192.168.8.6:/etc/nginx/

8.创建优化项文件,网站配置文件直接调用

添加:

cat >> /etc/nginx/nginx_params << END

proxy_set_header Host \$http_host;

proxy_set_header X-Real-IP \$remote_addr;

proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;



proxy_connect_timeout 30;

proxy_send_timeout 60;

proxy_read_timeout 60;



proxy_buffering on;

proxy_buffer_size 32k;

proxy_buffers 4 128k;

END

网站配置调用

vim /etc/nginx/conf.d/lb1.conf

修改为:

server {

        listen 80;

        server_name www.abc.com;



        location / {

                proxy_pass http:web;

                include nginx_params;

        }

}

}

保存退出

重启nginx:systemctl restart nginx


9.安装keepalived

yum -y install keepalived

10.配置keepalived

主服务器:lb1

vim /etc/keepalived/keepalived.conf

修改为:

> /etc/keepalived/keepalived.conf

cat >> /etc/keepalived/keepalived.conf << END
global_defs {
   router_id lb1
}
vrrp_script check_nginx_proxy {
        script “/sh/check_nginx_proxy.sh”
        interval 2
        weight 5
        }
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.8.254
    }
    track_script {
        check_nginx_proxy
    }
}
END

保存退出

11.启动服务:

systemctl restart keepalived

12.解决nginx故障造成群集无法工作

编辑nginx监控脚本

mkdir /sh

cat >> /sh/check_nginx_proxy.sh << END

#!/bin/bash

killall  -0  nginx

if  [ \$? -ne 0 ];then

  systemctl stop keepalived

fi

END

chmod  +x  /sh/check_nginx_proxy.sh


13.添加脚本追踪模块到keepalived配置文件

vim /etc/keepalived/keepalived.conf

保存退出

重启服务:systemctl restart keepalived

关闭nginx   


14.主服务器添加计划任务

crontab -e

* * * * * /bin/bash /sh/check_nginx_proxy.sh

15.主服务器关闭nginx,测试keepalived地址漂移


Lb2  192.168.8.6的配置

1.rpm安装nginx

卸载原来镜像,挂载软件镜像

umount /dev/cdrom

mount /dev/cdrom /mnt/

2.进入到mnt下的nginx下,并进行安装

cd /mnt/nginx-rpm/

rpm -ivh * --nodeps --force

3.启动服务

systemctl  start  nginx

4.删除默认配置文件


5.拷贝好后重启服务


6.创建优化项文件,网站配置文件直接调用(选做,但推荐)

vim /etc/nginx/nginx_params

添加:

cat >> /etc/nginx/nginx_params << END

proxy_set_header Host \$http_host;

proxy_set_header X-Real-IP \$remote_addr;

proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;



proxy_connect_timeout 30;

proxy_send_timeout 60;

proxy_read_timeout 60;



proxy_buffering on;

proxy_buffer_size 32k;

proxy_buffers 4 128k;

END

保存退出

网站配置调用

vim /etc/nginx/conf.d/lb.conf

修改为:

server {

        listen 80;

        server_name www.abc.com;



        location / {

                proxy_pass http://web;

                include nginx_params;

        }

}

}

保存退出

重启nginx:systemctl restart nginx


7.安装keepalived

yum -y install keepalived

备服务器:lb2

vim /etc/keepalived/keepalived.conf

修改为:

>/etc/keepalived/keepalived.conf

cat >> /etc/keepalived/keepalived.conf << END

global_defs {

   router_id lb2

}



vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.8.254
    }

}

END

保存退出

启动服务:systemctl restart keepalived


Web1 192.168.8.7的配置

1.pm安装nginx

卸载原来镜像,挂载软件镜像

umount /dev/cdrom

mount /dev/cdrom /mnt/

2.进入到mnt下的nginx下,并进行安装

cd /mnt/nginx-rpm/

rpm -ivh * --nodeps --force

3.启动服务

systemctl  start  nginx

4.删除默认配置文件

rm   -rf   /etc/nginx/conf.d/default

5.拷贝好后重启服务


6.重启服务,并将网页根目录拷贝到php8.9上

systemctl  restart   nginx

scp -rp /wordpress root@192.168.8.9:/

7.将网页根目录拷贝到nfs8.11上

 scp -rp /wordpress/* root@192.168.8.11:/data

8.查看并挂载

mount   |   grep   data

showmount-e 192.168.8.11

mount -t nfs 192.168.8.10:/data /wordpress/

echo "192.168.8.10:/data /wordpress nfs defaults 00" >>/etc/fstab

Php 192.168.8.9的配置

1.192.168.8.9安装php

2.进入/mnt/php-rpm/安装相关的包

cd /mnt/php-rpm/

rpm -ivh * --nodeps --force

3.启动php服务,设置服务自启,并查看端口


4.修改php服务器的配置文件

vim /etc/php-fpm.d/www.conf


5.重启php服务

systemctl  start  php-fpm

Mysql 192.168.8.10的配置

1.192.168.8.9安装mysql

2.启动服务


3.创建数据库和用户

mysql

create database blog;

grant all on blog.* to blog@'%' identified by '123';

flush privileges;

客户端进行访问

Web2  192.168.8.8的配置

1.rpm  安装nginx

卸载原来镜像,挂载软件镜像

umount /dev/cdrom

mount /dev/cdrom /mnt/

2.进入到mnt下的nginx下,并进行安装

cd /mnt/nginx-rpm/

rpm -ivh * --nodeps --force

3.安装完成后启动服务

systemctl  start  nginx

4.删除默认配置文件


5.复制wordpress安装包,到虚拟机/,解压并赋权


6.创建虚拟主机配置文件

cd  /etc/nginx/conf.d

vim  web.conf


7.将网页根目录及nginx拷贝到web1上

scp -rp /wordpress root@192.168.8.7:/

scp -rp /etc/nginx/* root@192.168.8.7:/etc/nginx

客户端进行访问

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

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

相关文章

什么是数据仓库ODS层?为什么需要ODS层?

在大数据时代&#xff0c;数据仓库的重要性不言而喻。它不仅是企业数据存储与管理的核心&#xff0c;更是数据分析与决策支持的重要基础。而在数据仓库的各个层次中&#xff0c;ODS层&#xff08;Operational Data Store&#xff0c;操作型数据存储&#xff09;作为关键一环&am…

NVDLA专题4:具体模块介绍——Convolution DMA

概述 Convolution DMA Module的定义在NV_NVDLA_cmda.v中&#xff0c;其module的定义如下&#xff1a; module NV_NVDLA_cdma (cdma_dat2cvif_rd_req_ready //|< i,cdma_dat2mcif_rd_req_ready //|< i,cdma_wt2cvif_rd_req_ready //|< i,cdma_wt2mcif_rd_r…

【Nacos】docker部署nacos服务

docker部署nacos服务 1.直接执行命令2.如果网络出现问题 1.直接执行命令 docker run -e JVM_XMS256m -e JVM_XMX256m --env MODEstandalone \ --name mynacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \ docker.io/nacos/nacos-server:v2.1.12.如果网络出现问题 执行如下命…

计算机系统基础知识:计算机组成和基本原理

文章目录 1. 总线1.1 系统总线1.2 外总线 2. 中央处理单元2.1 CPU组成运算器控制器寄存器组内部总线 2.2 多核处理器 3. 存储系统3.1 分类3.2 层次结构3.3 主存储器3.4 高速缓存3.5 外存储器3.6 云存储 4. 输入/输出技术4.1 接口的功能和分类4.2 主机和外设间的连接方式4.3 编址…

定制化三防平板:满足个性化需求

定制化服务的核心在于理解并满足用户的个性化需求。对于三防平板而言&#xff0c;这意味着设备不仅需要具备防水、防尘、防摔的基本特性&#xff0c;更需根据用户的特定工作环境和使用习惯&#xff0c;进行功能和设计上的优化。 例如&#xff0c;对于在极端温度环境下作业的人…

51单片机-LED灯蜂鸣器数码管按键DS18B20温度传感器

LDE灯的相关程序 LED灯闪烁 LED流水灯 方法1 方法二&#xff1a; 因为P1口可以直接控制P1^0~P1^7的8个led灯&#xff0c;利用一个8位的二进制数字来进行控制即可。如果要点亮P1^0 只需要给P1口传递 1111 1110即可。 蜂鸣器的使用 什么是蜂鸣器&#xff1f; 蜂鸣器是一种一…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…

Leetcode—1143. 最长公共子序列【中等】

2024每日刷题&#xff08;155&#xff09; Leetcode—1143. 最长公共子序列 实现代码 class Solution { public:int longestCommonSubsequence(string text1, string text2) {int m text1.length();int n text2.length();vector<vector<int>> dp(m 1, vector&…

sadtalker推理的时候报错:IndexError: Cannot choose from an empty sequence

问题描述 在进行推理的时候&#xff0c;报错IndexError: Cannot choose from an empty sequence&#xff0c;如下图 解决办法&#xff1a; 这个报错是因为你输入的音频太短了&#xff0c;不到1秒就会报这个错。你可以输入个大于1秒的视频试一下。 也可以修改代码解决这个问题…

Python教程(十四):Requests模块详解

目录 专栏列表前言&#xff1a;安装 Requests查看包安装情况&#xff1a; RESTful 介绍RESTful API设计原则示例 基本用法1. 查询ID为1的用户&#xff08;GET&#xff09;2. 创建新用户&#xff08;POST&#xff09;3. 更新ID 为 1 的用户&#xff08;PUT&#xff09;4. 删除ID…

Haproxy讲解

Haproxy: haproxy是一个开源的高性能反向代理和负载均衡器&#xff0c;主要用于‌TCP和‌HTTP流量管理。 功能和特点&#xff1a;haproxy能够处理大量的并发连接&#xff0c;支持TCP和HTTP协议&#xff0c;具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站&am…

AI终于会画手了,Flux.1一出世就直接碾压Stable Diffusion(SD)和Midjourney(MJ)

Flux.1模型一发布&#xff0c;AI文生图终于会画手了&#xff0c;Flux.1模型比Stable Diffusion&#xff08;SD&#xff09;和Midjourney&#xff08;MJ&#xff09;更能将手部和长文本生成得更好更合理。 Flux.1模型生成的图&#xff0c;现在手部不再有畸形了。 同时&#xff…

hfs通过stunnel实现https访问

hfs通过stunnel实现https访问 REF:官方文档&#xff0c;有点老旧 https://blog.51cto.com/u_15015155/2554641 步骤 下载stunnel工具 download (笔者用的是windows的) 下载stunnel途中会进行本地证书的制作&#xff08;也可以用openssl自定义证书&#xff09;&#xff0c;如…

C++ 适配器

适配器 适配器是一种设计模式&#xff0c;我们最终实现的功能可以通过不同的路径来实现&#xff0c;那么这个路径就可以称作适配器。 例如下面的例子&#xff1a; 那么在c中也有适配器&#xff0c;例如stack、queue、priority_queue&#xff0c;它们并不是使用了什么新的内存…

【python爬虫】利用Python爬取天气数据,并做可视化分析

首先登录网站&#xff0c;查看网页内容及数据格式(使用代码查看内容)&#xff0c;选择两个城市及对应月份&#xff0c;爬取对应天气数据&#xff0c;进行数据预处理(如缺失值处理、数据类型转换、字符串截取等)&#xff0c;数据的初步探索性分析(如描述性统计、数据可视化查看数…

应对猫咪掉毛挑战,希喂、小米热门宠物空气净化器实测功效PK

随着养宠人群的增多&#xff0c;铲屎官们的需求日益增长&#xff0c;市场上出现了很多品牌的宠物空气净化器。然而&#xff0c;产品质量参差不齐&#xff0c;给消费者选择带来不少困难。劣质宠物空气净化器不仅无法有效去除宠物毛发、皮屑、异味及空气中的有害微粒&#xff0c;…

启动虚拟机:另一个程序已锁定文件的一部分,进程无法访问,打不开磁盘xxx或它所依赖的某个快照磁盘

theme: nico 你们好&#xff0c;我是金金金。 场景 启动虚拟机时报错如下 造成error的原因 这是一种虚拟机的保护机制 虚拟机在运行时&#xff0c;为了防止数据被篡改&#xff0c;会将所运行的文件保护起来。 当虚拟机突然崩溃或强制结束导致异常退出&#xff08;我昨天是直接…

【C++】设计模式 — 从零开始认识单例模式

人的一生本来就是一场有来无回的冒险。 --- priest 《残次品》--- 设计模式 — 单例模式 1 设计模式2 单例模式2.1 饿汉模式2.2 懒汉模式 3 总结 1 设计模式 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结…

YZ系列工具之YZ05:代码运行中调用“计算器”使用说明

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…

语音播报加入预警系统

语音播报加入预警系统 引言 引入语音警报 我们前一章, 已经把jq8900-16p模块, 单独进行了测试, 可以通过发送命令, 让模块播报设定好的声音。那么语音播报&#xff0c; 在预警系统中&#xff0c; 也必不可少&#xff0c; 我们现在有了led灯光警报,如果主人在睡觉, 是不能及时…