keepalived的vip实现nginx节点的主备

nginx

wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gzyum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel libnl3-develcd nginx-1.18.0
mkdir -p /usr/local/nginx
#需要使用https,在编译时启用--with-http_ssl_module
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream
make && make installln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
#验证
nginx -V

配置文件1

vi /usr/local/nginx/conf/nginx.conf#工作进程数量,一般设置为CPU核数的整数倍
worker_processes 4;
#一个worker进程所能打开文件的最大数量
worker_rlimit_nofile 40000;events {
#设置每一个worker进程可以并发处理的最大连接数,该值不能超过worker_rlimit_nofileworker_connections  8192;
}stream {upstream rancher_servers_http {least_conn;server ip1:80 max_fails=3 fail_timeout=5s;server ip2:80 max_fails=3 fail_timeout=5s;server ip3:80 max_fails=3 fail_timeout=5s;}server {listen     80;proxy_pass rancher_servers_http;}upstream rancher_servers_https {least_conn;server ip1:443 max_fails=3 fail_timeout=5s;server ip2:443 max_fails=3 fail_timeout=5s;server ip3:443 max_fails=3 fail_timeout=5s;}server {listen     443;proxy_pass rancher_servers_https;}
}

keepalived

双节点

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install -y heartbeatsystemctl enable keepalived

主节点

cat /etc/keepalived/keepalived.conf#Master
! Configuration File for keepalived
global_defs {notification_email {root@localhost}notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id DRBD_HA_MASTER
}vrrp_script chk_nfs {script "/etc/keepalived/check_nginx.sh"interval 5}vrrp_instance VI_1 {state MASTERinterface enp0s3virtual_router_id 101priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nfs}notify_master /etc/keepalived/notify_master.shnotify_stop /etc/keepalived/notify_stop.shvirtual_ipaddress {192.168.101.200/24}
}#检测:
chmod 744 /etc/keepalived/*.shcat /etc/keepalived/check_nginx.sh#!/bin/bash
# /usr/bin/systemctl status nfs &>/dev/null
a= `ps -C nginx --no-heading | wc -l`if [ $a -eq "0" ];thennginx -c /usr/local/nginx/conf/nginx.confsleep 3b= `ps -C nginx --no-heading | wc -l`if [ $b -eq "0" ];thensystemctl stop keepalivedfi
fi# if [ $? -ne 0 ];then  
#    /usr/bin/systemctl restart nfs
#    sleep 3
#    /usr/bin/systemctl status nfs &>/dev/null
#    if [ $? -ne 0 ];then    
#        umount /dev/drbd0
#        drbdadm secondary r0
#        systemctl stop keepalived
#    fi
# ficat /etc/keepalived/notify_master.sh
#!/bin/sh
nginx -c /usr/local/nginx/conf/nginx.confcat /etc/keepalived/notify_stop.sh 
#!/bin/sh
systemctl stop keepalived

备节点

cat /etc/keepalived/keepalived.conf#slave
! Configuration File for keepalived
global_defs {notification_email {root@localhost}notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id DRBD_HA_BACKUP
}vrrp_instance VI_1 {state BACKUPinterface enp0s3virtual_router_id 101priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}notify_master /etc/keepalived/notify_master.shnotify_backup /etc/keepalived/notify_backup.shvirtual_ipaddress {192.168.101.200/24}
}#检测:
chmod 744 /etc/keepalived/*.shcat /etc/keepalived/check_nginx.sh
#!/bin/bash
a= `ps -C nginx --no-heading | wc -l`if [ $a -eq "0" ];thennginx -c /usr/local/nginx/conf/nginx.confsleep 3b= `ps -C nginx --no-heading | wc -l`if [ $b -eq "0" ];thensystemctl stop keepalivedfi
ficat /etc/keepalived/notify_master.sh
#!/bin/sh
nginx -c /usr/local/nginx/conf/nginx.confcat /etc/keepalived/notify_backup.sh 
#!/bin/sh
systemctl stop keepalived

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

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

相关文章

基于 QT 实现一个 Ikun 专属桌面宠物

Step0、实现思路 想到的思路有两种: 1、使用 QT 的状态机模式,参考官网文档,这个模式的解耦最佳 2、使用原生 Wigets,将窗口设置为透明无框,循环播放桌面宠物的状态 本文采用第二种思路,实现一个极简版…

修炼k8s+flink+hdfs+dlink(一:安装flink)

一:standalone的ha环境部署。 创建目录,上传安装包。 mkdir /opt/app/flink 上传安装包到本目录。 tar -zxvf flink-1.13.6-bin-scala_2.12.tgz配置参数。 在flink-conf.yaml中添加zookeeper配置 jobmanager.rpc.address: node01 high-availability: …

Django基础入门操作 (Django-01)

一 背景介绍 Django是一个开源的 Web应用框架,由Python写成。采用了MTV的框架模式,它最初是被用来做CMS(内容管理系统)软件。 官方中文文档:Django 文档 | Django 文档 | Django 应用:做内容管理系统(新…

selenium下载安装 -- 使用谷歌驱动碰到的问题

安装教程参考: http://c.biancheng.net/python_spider/selenium.html 1. 谷歌浏览器和谷歌驱动版本要对应(但是最新版本谷歌对应的驱动是没有的,因此要下载谷歌历史其他版本): 谷歌浏览器历史版本下载: https://www.chromedownloads.net/chrome64win/谷歌浏览器驱动下载: http:…

spark SQL 任务参数调优1

1.背景 要了解spark参数调优,首先需要清楚一部分背景资料Spark SQL的执行原理,方便理解各种参数对任务的具体影响。 一条SQL语句生成执行引擎可识别的程序,解析(Parser)、优化(Optimizer)、执行…

gwas数据根据eaf Z 和N 求beta和se

https://www.nature.com/articles/s41590-023-01588-w#Sec10

C++基础_Day02

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …

Nat. Commun. | 大规模高分辨单光子成像

本文由论文作者团队(课题组)投稿 单光子雪崩二极管(Single Photon Avalanche Diode,简称SPAD)阵列因其极佳的单光子灵敏度而受到广泛关注,已广泛应用于量子通信与计算、荧光寿命成像、时间飞行成像等各个领域。与同样具有较高灵敏度的EMCCD和sCMOS相比,SPAD阵列能够在极…

macOS使用官方安装包安装python

新手程序员可能想知道如何在 Mac 上正确安装 Python,这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后,双击包开始安装Python…

【iptables 实战】05 iptables设置网络转发实验

一、网络架构 实验效果,通过机器B的转发功能,将机器A的报文转发到机器C 本实验准备三台机器分别配置如下网络 机器A ip:192.168.56.104 机器C ip:10.1.0.10 机器B 两张网卡,分别的ip是192.168.56.106和10.1.0.11 如图所示 如下图所示 二、…

vertx的学习总结2

一、什么是verticle verticle是vertx的基本单元,其作用就是封装用于处理事件的技术功能单元 (如果不能理解,到后面的实战就可以理解了) 二、写一个verticle 1. 引入依赖(这里用的是gradle,不会吧&#…

ChatGPT多模态升级,支持图片和语音,体验如何?

一、前言 9 月 25 日,ChatGPT 多模态增加了新的语音功能和图像功能。这些功能提供了一种新的、更直观的界面,允许我们与 ChatGPT 进行语音对话或展示我们正在谈论的内容。 ChatGPT 现在可以看、听、和说话了,而不单单是一个文本驱动的工具了。…

c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)

目 录 一、重载 **(1)概念:**在同一个作用域内;函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),返回值类型可相同也…

Vue中前端导出word文件

很多时候在工作中会碰到完全由前端导出word文件的需求,因此特地记录一下比较常用的几种方式。 一、提供一个word模板 该方法提供一个word模板文件,数据通过参数替换的方式传入word文件中,灵活性较差,适用于简单的文件导出。需要…

10.1 今日任务:select实现服务器并发

#include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.112.115" //本机IP&#xff0c;ifco…

【LeetCode热题100】--148.排序链表

148.排序链表 对链表进行排序最适合的算法就是归并排序&#xff1a; 对链表自顶向下归并排序的过程&#xff1a; 找到链表的中点&#xff0c;以中点为分界&#xff0c;将链表拆分成两个子链表&#xff0c;寻找链表的中点可以使用快慢指针的做法&#xff0c;快指针每次移动 2步…

初识多线程

一、多任务 现实中太多这样同时做多件事的例子了&#xff0c;例如一边吃饭一遍刷视频&#xff0c;看起来是多个任务都在做&#xff0c;其实本质上我们的大脑在同一时间依旧只做了一件事情。 二、普通方法调用和多线程 普通方法调用只有主线程一条执行路径 多线程多条执行路径…

C++--位图和布隆过滤器

1.什么是位图 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。比如int 有32位&#xff0c;就可以存放0到31这32个数字在不在某个文件中。当然&#xff0c;其他类型也可以。 2.位…

PyTorch - 模型训练损失 (Loss) NaN 问题的解决方案

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133378367 在模型训练中&#xff0c;如果出现 NaN 的问题&#xff0c;严重影响 Loss 的反传过程&#xff0c;因此&#xff0c;需要加入一些微小值…

php eayswoole node axios crypto-js 实现大文件分片上传复盘

不啰嗦 直接上步骤 步骤1.开发环境配置 项目需要node.js 做前端支撑 官网下载地址&#xff1a; http://nodejs.cn/download/ 根据自己需要下载对应的版本,我下载的是windows系统64位的版本。 包下载好后 进行安装&#xff0c;安装步骤在此省略... 测试是否安装成功 …