Nginx+Keepalived实现高可用

1、Keepalived介绍

Keepalived是一个在Linux环境下运行的轻量级高可用性解决方案,它起初是专为Linux Virtual Server (LVS) 设计的,用于监控和管理LVS集群中的各个服务节点状态。Keepalived通过集成VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)功能,提供了一种简单的高可用解决方案,可以用于实现服务器的高可用性。

1.1 环境准备

这里Rocky有点问题,就换成openEuler

Server NameIP Address with Subnet Mask发行版
keepalived-01192.168.110.41/24openEuler
keepalived-02192.168.110.42/24openEuler
web-01192.168.110.33/24Rocky Linux 8
web-01192.168.110.34/24Rocky Linux 8
[root@keepalived-01 ~]# yum install nginx keepalived -y
​
[root@keepalived-02 ~]# yum install nginx keepalived -y
​
[root@web-01 ~]# yum install nginx -y
​
[root@web-02 ~]# yum install nginx -y

1.2 后端web配置

8.2.1 web-01配置

[root@web-01 ~]# mkdir -p /nginx/web
[root@web-01 ~]# echo "This is web-01 page IP=`hostname -I`" >> /nginx/web/index.html
[root@web-01 ~]# vim /etc/nginx/conf.d/VirtualHost.conf
server {
        listen 192.168.110.33:80;
        server_name www.web-01.com;
​
        location / {
                root /nginx/web;
                index index.html;
        }
}
​
[root@web-01 ~]# systemctl start nginx
[root@web-01 ~]# curl 192.168.110.33
This is web-01 page IP=192.168.110.33 

1.2.2 web-02配置

[root@web-02 ~]# mkdir -p /nginx/web
[root@web-02 ~]# echo "This is web-02 page IP=`hostname -I`" >> /nginx/web/index.html
[root@web-02 ~]# vim /etc/nginx/conf.d/VirtualHost.conf
server {
        listen 192.168.110.34:80;
        server_name www.web-02.com;
​
        location / {
                root /nginx/web;
                index index.html;
        }
}
​
[root@web-02 ~]# systemctl start nginx
[root@web-02 ~]# curl 192.168.110.34
This is web-02 page IP=192.168.110.34 

1.3 代理服务器Nginx配置

1.3.1 keepalived-01配置

[root@keepalived-01 ~]# vim /etc/nginx/conf.d/proxy.conf
upstream wwwPools {
        server 192.168.110.33:80;
        server 192.168.110.34:80;
}
​
server {
        listen 80;
        server_name www.proxy-01.com;
​
        location / {
                proxy_pass http://wwwPools;
        }
}
​
[root@keepalived-01 ~]# systemctl start nginx.service
 
[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.41; done  #客户端测试
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 

1.3.2 keepalived-02配置

[root@keepalived-02 ~]# vim /etc/nginx/conf.d/proxy.conf
upstream wwwPools {
        server 192.168.110.33:80;
        server 192.168.110.34:80;
}
​
server {
        listen 80;
        server_name www.proxy-02.com;
​
        location / {
                proxy_pass http://wwwPools;
        }
}
​
[root@keepalived-02 ~]# systemctl start nginx
​
[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.42; done
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 

1.4 代理服务器Keepalived配置

1.4.1 keepalived-01配置

[root@keepalived-01 ~]# vim /etc/keepalived/keepalived.conf    #打开文件后把里面内容全删了,然后自己写
! Configuration File for keepalived
​
global_defs {
   router_id nginx_web-01
}
​
vrrp_script chk_nginx {
    script "killall -0 nginx"
}
vrrp_instance nginx {
    state MASTER
    interface ens160
    virtual_router_id 51  #id为51
    priority 100     #优先级为100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
​
    track_script {
      chk_nginx
    }
​
    virtual_ipaddress{    #VIP
    192.168.110.10/24
    }
}
​
[root@keepalived-01 ~]# systemctl start keepalived.service
[root@keepalived-01 ~]# ip address show ens160    #VIP为192.168.110.10/24
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:69:8e:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.41/24 brd 192.168.110.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.110.10/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe69:8e29/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

1.4.2 keepalived-02配置

[root@keepalived-02 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
​
global_defs {
   router_id nginx_web-02
}
​
vrrp_script chk_haproxy {
    script "killall -0 nginx"
}
vrrp_instance nginx {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 80    #优先级为80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
​
    track_script {
      chk_nginx
    }
​
    virtual_ipaddress{
    192.168.110.10/24
    }
}
​
[root@keepalived-02 ~]# systemctl start keepalived.service 
[root@keepalived-02 ~]# ip address show ens160   #没有VIP
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:90:3f:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.42/24 brd 192.168.110.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:3f85/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

1.5 访问VIP测试

[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.10; done
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 

1.6 模拟keepalived异常

[root@keepalived-01 ~]# systemctl stop keepalived.service
root@keepalived-01 ~]# ip address show ens160   #VIP发生漂移
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:69:8e:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.41/24 brd 192.168.110.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe69:8e29/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
       
[root@keepalived-02 ~]# ip address show ens160 #VIP到keepalived-02
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:90:3f:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.42/24 brd 192.168.110.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.110.10/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe90:3f85/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
        
[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.10; done   #访问正常
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34 
This is web-01 page IP=192.168.110.33 
This is web-02 page IP=192.168.110.34

1.7 后端web故障

[root@web-01 ~]# systemctl stop nginx.service 
​
[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.10; done  #都有web-02提供服务
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 

1.8 Nginx故障

[root@keepalived-01 ~]# systemctl stop nginx.service 
​
[root@client ~]# for ((i=1;i<=6;i++)) do curl http://192.168.110.10; done
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 
This is web-02 page IP=192.168.110.34 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【无标题】w

import requests , sys , edge _ tts , os , asyncio from pydub import AudioSegment , playback url http://localhost:8080/v1/chat/ completions ’ def send _ message ( message ): headers {" Content - Type “:” application / json "} data { " mode…

【MySQL 数据宝典】【磁盘结构】- InnoDb 数据文件-Page结构、行记录格式

一、 数据文件 1.1 表空间文件结构 InnoDB表空间文件结构主要包括&#xff1a;Tablespace&#xff08;表空间&#xff09;、Segment&#xff08;段&#xff09;、Extent&#xff08;区&#xff09;、Page&#xff08;页&#xff09;、Row&#xff08;行&#xff09;。 Tables…

SAP DMS创建文档操作简介

前面的博文中我们创建了根目录的文档类型,下面我们需要创建我们后台已经配置到的文档类型 1、事务代码CV01N 框出的部分表示是用什么界面进行维护 当我们选择浏览器就 会变成一下界面 因为我们配置的是内部给号所以输入文档类型即可。 输入文档的描述。回车后输入状态的描…

【电路笔记】-Hartley振荡器

Hartley振荡器 文章目录 Hartley振荡器1、概述2、Hartley振荡器电路3、并联Hartley振荡器电路4、示例5、使用运算放大器的Hartley振荡器6、总结1、概述 Hartley振荡器设计使用两个电感线圈与一个并联电容器串联,形成产生正弦振荡的谐振储能电路。 与Hartley振荡器不同,我们…

第一讲 - Java入门

第一讲 - Java入门 文章目录 第一讲 - Java入门1. 人机交互1.1 什么是cmd&#xff1f;1.2 如何打开CMD窗口&#xff1f;1.3 常用CMD命令1.4 CMD练习1.5 环境变量 2. Java概述1.1 Java是什么&#xff1f;1.2下载和安装1.2.1 下载1.2.2 安装1.2.3 JDK的安装目录介绍 1.3 HelloWor…

机器学习模型效果不好及其解决办法

当训练出来的机器学习模型效果不佳时&#xff0c;可能涉及多个方面的原因。为了改善模型的效果&#xff0c;需要系统地检查和分析问题的根源&#xff0c;并采取相应的措施进行优化。 一、数据问题 数据质量 检查数据是否干净、完整&#xff0c;是否存在噪声、异常值或缺失值。…

OCP Java17 SE Developers 复习题13

答案 D, F. There is no such class within the Java API called ParallelStream, so options A and E are incorrect. The method defined in the Stream class to create a parallel stream from an existing stream is parallel(); therefore, option F is correct, and o…

2024年区块链链游即将迎来大爆发

随着区块链技术的不断发展和成熟&#xff0c;其应用领域也在不断扩展。其中&#xff0c;区块链链游&#xff08;Blockchain Games&#xff09;作为区块链技术在游戏行业中的应用&#xff0c;备受关注。2024年&#xff0c;区块链链游行业即将迎来爆发&#xff0c;这一趋势不容忽…

4款黑科技软件,其中三款功能过于强大,被误认为是外国佬开发的

国人对国产软件的刻板印象往往是“捆绑安装、弹窗广告、高昂收费”&#xff0c;这使得许多优秀的国产软件如同明珠蒙尘&#xff0c;鲜为人知。甚至有些软件的功能之强大&#xff0c;以至于常被人们误以为是出自外国佬开发&#xff0c;这实在是令人遗憾的事情。 1、VeryCapture…

docker快速搭建部署mqtt

文章目录 前言一、mqtt是什么&#xff1f;二、使用步骤1.引入库2.创建临时容器3.创建挂在目录4.将临时容器的配置挂载到宿主机中5.删除临时容器6.运行容器并挂载文件7.登录EMQX内置的管理控制台 总结 前言 一、mqtt是什么&#xff1f; MQTT&#xff08;Message Queuing Teleme…

内容+货架“攻防一体”,京东能否上演“后来居上”?

又一家货架电商出手了。 2023年底&#xff0c;阿里进一步融合内容电商板块&#xff0c;合并淘宝直播与逛逛成立内容电商事业部&#xff0c;推动内容电商进入了新的阶段。近日&#xff0c;京东也开始发力视频赛道&#xff0c;宣布将拿出10亿现金、10亿流量补贴&#xff0c;全力…

C语言-结构体尺寸

CPU字长 字长的概念指的是处理器在一条指令中的数据处理能力&#xff0c;当然这个能力还需要搭配操作系统的设定&#xff0c;比如常见的32位系统、64位系统&#xff0c;指的是在此系统环境下&#xff0c;处理器一次存储处理的数据可以达32位或64位。 地址对齐 当计算机系统的…

Day 32 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

买卖股票的最佳时期Ⅱ 给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你…

RAKsmart洛杉矶大带宽服务器支持哪些操作系统?

RAKsmart洛杉矶大带宽服务器支持多种操作系统。具体包括以下几种&#xff0c;rak部落小编为您整理发布RAKsmart洛杉矶大带宽服务器支持哪些操作系统? RAKsmart作为一家提供海外服务器租用服务的公司&#xff0c;其洛杉矶大带宽服务器支持安装和运行多种操作系统。 这些操作系统…

WebServer项目介绍文章【四叶专属】

Linux项目实战C轻量级Web服务器源码分析TinyWebServer 书接上文&#xff0c;学习开源项目的笔记没想到居然有不少阅读量&#xff0c;后面结合另一个前端开源项目简单做了点修改&#xff0c;没想到居然有需要的同学&#xff0c;那么我就专门为四叶开一篇文章吧&#xff0c;【源码…

探索区块链世界:赋能创新,揭示区块链媒体发稿的影响力-世媒讯

区块链&#xff0c;这个由“区块”和“链”组成的概念&#xff0c;可能在您眼中充满神秘和复杂&#xff0c;但其实甚至无所不在&#xff0c;它正静悄悄地改变着我们日常生活的方方面面&#xff0c;从金融到媒体&#xff0c;从医疗到教育。 我们来揭开区块链的神秘面纱。区块链…

前端零代码开发实践:页面嵌套+逻辑连线0开发扩展组件,实现切换开关控制扇叶转动。能无代码封装扩展组件,有别于常规的web组态或低代码平台

前言&#xff1a; 官网:http://www.uiotos.net/ 什么是 UIOTOS&#xff1f; 这是一款拥有独创专利技术的前端零代码工具&#xff0c;专注于解决前端界面开发定制难题&#xff0c;原型即应用&#xff01;具有页面嵌套、属性继承、节点连线等全新特性&#xff0c;学习门槛低…

AI 智能工具以及热门AI开源项目整理,包含国内中科院版GPT

AI 智能工具以及热门AI开源项目整理&#xff0c;包含国内中科院版GPT。 不用xx即可访问的镜像网站 https://chat1.yqcloud.top https://chat.bnu120.space https://chat.aidutu.cn https://hzdjs.cn/chatgpt https://chats.fenqubiao.com/zh 需要xx才能访问的网站 https://o…

金融时报:波场亮相哈佛大学并举办TRON Builder Tour活动

近日,波场TRON作为顶级白金赞助商出席哈佛区块链会议并成功举办TRON Builder Tour哈佛站活动,引发海外媒体热议。美联社、金融时报、Cointelegraph等国际主流媒体及加密知名媒体均对此给予了高度评价,认为本次大会对TRON Builder Tour活动具有里程碑意义,彰显了波场TRON致力于促…

spring security登录认证授权

spring security登录认证授权 是什么 Spring Security 主要实现了Authentication&#xff08;认证&#xff0c;解决who are you? &#xff09; 和 Access Control&#xff08;访问控制&#xff0c;也就是what are you allowed to do&#xff1f;&#xff0c;也称为Authorizat…
最新文章