单机部署可参考:https://blog.csdn.net/ym5209999/article/details/119897237
[root@nginx1 ~]# yum -y install keepalived
keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
主
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_144
script_user root
enable_script_security
}
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state MASTER
# 网卡名称
interface ens192
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 100
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.198 # 虚拟IP
}
}
备
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_62
script_user root
enable_script_security
}
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state BACKUP
# 网卡名称
interface ens192
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 80
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.198 # 虚拟IP
}
}
# 启动nginx
[root@nginx1 ~]# /apps/nginx/sbin/nginx –c /apps/nginx/conf/nginx.conf
# 启动keepalived
[root@nginx1 ~]# systemctl start keepalived
1)启动完成后,查看主节点IP地址,在ens192下生成虚拟IP后,即可访问:192.168.2.198查看效果(在配置文件中,主节点priority 值大于备节点,故会生成在主节点);
2)将主节点keepalived服务结束后,再次访问192.168.2.198,会自动切换到备节点
当nginx服务器挂掉之后,由于keepalived服务保持正常,故VIP依旧保留在进程异常的服务器上,导致前端无法自动切换,故需要对配置进行优化。
优化点:定期检测nginx进程活性,若nginx服务不存在,则重启nginx服务,若无法启动,则将keepalived进程结束,使之正常切换到正常的keepalived。
nginx活性检测脚本:
nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l` #查看是否有进程,把值赋给变量A
if [ $A -eq 0 ];then #如果没有进程值则为0
/apps/nginx/sbin/nginx –c /apps/nginx/conf/nginx.conf #nginx的启动路径
sleep 5 #尝试启动nginx等待5秒
B=`ps -C nginx --no-header |wc -l`
if [ $B -eq 0 ];then #在查看一下是否有进程,没有则结束,杀掉keepalived
systemctl stop keepalived
fi
fi
将脚本上传至主、备服务器:/etc/keepalived/目录下,并授权(不能授权为777!!!)
chmod -R 755 nginx_check.sh
建议在启动验证的时候,打印系统日志,同步查看:tail -f /var/log/messages
主
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_144
script_user root
enable_script_security
}
# ----------------------- 新增点 ------------------------
vrrp_script nginxcheck {
script "/etc/keepalived/nginx_check.sh"
interval 10
}
# ----------------------- 新增点 ------------------------
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state MASTER
# 网卡名称
interface ens192
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 100
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.198
}
# ----------------------- 新增点 ------------------------
track_script {
nginxcheck
}
# ----------------------- 新增点 ------------------------
}
备
! Configuration File for keepalived
global_defs {
# 路由ID,当前主机标识,必须唯一
router_id LVS_DEVEL_62
script_user root
enable_script_security
}
# ----------------------- 新增点 ------------------------
vrrp_script nginxcheck {
script "/etc/keepalived/nginx_check.sh"
interval 10
}
# ----------------------- 新增点 ------------------------
vrrp_instance VI_1 {
# 状态,可配置内容为:MASTER/BACKUP
state BACKUP
# 网卡名称
interface ens192
# 主备节点需保持一致
virtual_router_id 51
# 优先级,当主节点宕机后,优先级最高的成为主节点
priority 80
# 主备同步时间间隔
advert_int 1
# 认证授权密码
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.198
}
# ----------------------- 新增点 ------------------------
track_script {
nginxcheck
}
# ----------------------- 新增点 ------------------------
}
1)按上述配置完成后,重启keepalived,验证是否能把nginx进程自动拉起;
2)手动结束nginx进程,并故意将nginx_check.sh中nginx启动命令调整为错误命令,尝试是否会将对应节点keepalived进程自动结束。
文章浏览阅读9.7w次,点赞307次,收藏975次。1.莫尔斯电码是一种早期的数字化通信形式,它通过“·”和“-”的不同排列顺序来表示不同的英文字母、数字以及标点符号。试编写程序,使用字典存放下表的内容,将用户输入的字符串(假设只包含英文字母)以莫尔斯电码的形式输出。dic_morse={"A":"•−","B":"−•••","C":"−•−•","D":"−••","E":"•","F":"••−•","G":"−−•", "H":"••••","I":"••","J":"•−−−","K":"−•−","L":"•−••","M_以下是某电商卖家在售产品价目一览表
文章浏览阅读1.8w次,点赞5次,收藏16次。请教:运放噪声 5nV/根号Hz 什么意思啊? - 维库电子市场网 http://www.dzsc.com/dzbbs/20060929/20076518228437300.html 其实噪声是个能量概念或者说功率概念白噪声总功率(W)与带宽(Hz)成正比所以噪声密度的单位是 W/Hz但是平常习惯用电压电流表示信号,所以要把功率换算成电压 功率跟电压是平方关系,所以开平方后..._电流噪声密度
文章浏览阅读971次。Android:项目引入module导致Duplicate class…或Program type already present okhttp3 OkUrlFactory_android okurlfactory
文章浏览阅读595次。现在很多开源项目使用hsqldb作为数据库。了解hsqldb的基本使用方法还是很必要的。这篇不是全面介绍hsqldb的文字,但我认为用这个笔记的内容调试程序够用了。 一、下载数据库,地址在http://sourceforge.net/projects/hsqldb/files/hsqldb/ 我使用的是1.8.0版本。假定下载解压后的目录是D:/hsqldb/, 那么hsqldb.jar在D:/hsqldb/lib目录下。这个jar文件是hsqldb的核心包 二、启动数据库,比如数据库名称为tes_hsqldb的使用
文章浏览阅读1.2k次。前言:将固态硬盘装到电脑,ubuntu系统需要格式化并挂载才能正式使用将固态装在电脑上后,打开后端1:查看现有硬盘分区及挂载状态命令 :df -h没有新增的SSD固态硬盘2:查看服务器所有安装的硬盘状态(包括已安装和未安装的)命令: fdisk -l此时已经安装的磁盘,但是没有分区,先分区3, 将磁盘分区,分一个区挂载到根目录下命令:fdisk /dev/sdb (该目录是上面未安装的磁盘目录)..._怎么看固态硬盘在服务器上的挂载路径
文章浏览阅读3.3k次,点赞3次,收藏16次。TortoiseSVN使用简介_tortoisesvn 文件哪个版本好用
文章浏览阅读2.4w次。PHP是越来越受欢的开发语言,PHP是因网络而生,是专业于网络程序开发的基础平台.很多优势在些不作太多介绍.对于我们习惯了windows操作系统技术人员来讲,在windows系统上架设PHP环境更轻松些.接下来由向大家介绍2008 R2 64位的服务器如何配置最新PHP环境._在2008服务器上面配置phpmyadmin访问
文章浏览阅读719次。1. 特征选择------sklearn代码1.1 特征选择------方差法忽略warning错误import warningswarnings.filterwarnings("ignore")# 方差法from sklearn.feature_selection import VarianceThresholdX = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1..._python 方差法选择特征
文章浏览阅读2.3k次,点赞2次,收藏11次。WebGL是一种用于在Web浏览器中实现高性能3D图形的技术。本文将帮助读者快速入门WebGL,了解其基本概念和使用方法。我们将介绍WebGL的基本架构和API,包括如何创建WebGL上下文、渲染对象和着色器编程等。此外,我们还会深入探讨WebGL的基本原理和渲染管线,以及如何通过优化渲染流程来提升性能。通过学习本文,读者将能够理解WebGL的核心概念和使用方法,并能够开始开发高性能的3D应用程序。_webgl入门
文章浏览阅读10w+次,点赞1.3k次,收藏6.1k次。一. string的构造函数的形式: string str:生成空字符串string s(str):生成字符串为str的复制品string s(str, strbegin,strlen):将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值string s(cstr, char_len):以C_string类型cstr的前char_len个字..._string函数
文章浏览阅读162次。一、赛题理解和学习目标:本次挑战赛以个人信贷为背景,要求选手对金融风控之贷款是否违约进行预测,以此判断是否通过此项贷款的一项问题型比赛。通过学习Task1了解第一个学习内容,要求对金融风控的问题建立数学模型最后给定金融风险程度。在此过程中要了解混淆矩阵、AUC评价指标,KS统计量等二、学习内容:混淆矩阵就是一个2×2的矩阵分为真正类TP、真分类TN、假正类FT、假反类FNFP FN TP TN AUC被定义在ROC曲线下与坐标轴围成的面积(ROC曲线:以真阳性率._风控师学习笔记
文章浏览阅读237次。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>D._js hash追加