keepalived配置高可用集群

准备工作

分别在主从上安装keepalived和nginx
yum install -y keepalived
yum install -y nginx
关闭主从上的防火墙和SELinux
systemctl stop firewalld
setenforce 0

配置主机

查看主机ip

[root@lynn-04 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.130.116  netmask 255.255.255.0  broadcast 192.168.130.255inet6 fe80::181c:4847:3f62:dc4c  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:60:ed:4a  txqueuelen 1000  (Ethernet)RX packets 11701  bytes 10394449 (9.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 13559  bytes 972155 (949.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1  (Local Loopback)RX packets 86  bytes 6720 (6.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 86  bytes 6720 (6.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

清空主上keepalived配置文件/etc/keepalived/keepalived.conf

[root@lynn-04 ~]# > /etc/keepalived/keepalived.conf

编辑主上配置文件/etc/keepalived/keepalived.conf

[root@lynn-04 ~]# vim /etc/keepalived/keepalived.conf

加入以下内容:

global_defs {notification_email {aming@aminglinux.com}notification_email_from root@aminglinux.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_nginx {script "/usr/local/sbin/check_ng.sh"interval 3
}
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass aminglinux>com}virtual_ipaddress {192.168.130.100}track_script {chk_nginx}
}

定义主上监控脚本/usr/local/sbin/check_ng.sh

[root@lynn-04 ~]# vim /usr/local/sbin/check_ng.sh

写入下面内容

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then/etc/init.d/nginx startn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0"  ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.logsystemctl stop keepalivedfi
fi

更改主上/usr/local/sbin/check_ng.sh权限

[root@lynn-04 ~]# chmod 755 /usr/local/sbin/check_ng.sh

启动主上keepalived

[root@lynn-04 ~]# systemctl start keepalived
[root@lynn-04 ~]# ps aux |grep keepalived
root       1741  0.0  0.1 120740  1404 ?        Ss   10:46   0:00 /usr/sbin/keepalived -D
root       1742  0.0  0.3 127476  3260 ?        S    10:46   0:00 /usr/sbin/keepalived -D
root       1745  0.0  0.3 131780  3116 ?        S    10:46   0:00 /usr/sbin/keepalived -D
root       1799  0.0  0.0 112676   988 pts/0    S+   10:47   0:00 grep --color=auto keepalived

为了区分主从的nginx需要把nginx的默认页做个标记

[root@lynn-04 ~]# echo master > /data/wwwroot/default/index.html

在另一台机器使用从ip访问
得到下面结果

[root@lynn-02 ~]# curl 192.168.130.116
master

配置从机

查看从机ip

[root@lynn-06 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.130.128  netmask 255.255.255.0  broadcast 192.168.130.255inet6 fe80::fef6:fd37:2682:fabc  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:af:03:e8  txqueuelen 1000  (Ethernet)RX packets 45666  bytes 48434560 (46.1 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 14753  bytes 1287938 (1.2 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1  (Local Loopback)RX packets 80  bytes 6256 (6.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 80  bytes 6256 (6.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

清空从上配置文件/etc/keepalived/keepalived.conf

[root@lynn-06 ~]# > /etc/keepalived/keepalived.conf

编辑从上配置文件/etc/keepalived/keepalived.conf

[root@lynn-06 ~]# vim /etc/keepalived/keepalived.conf

加入下面内容

global_defs {notification_email {aming@aminglinux.com}notification_email_from root@aminglinux.comsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_script chk_nginx {script "/usr/local/sbin/check_ng.sh"interval 3
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass aminglinux>com}virtual_ipaddress {192.168.130.100}track_script {chk_nginx}
}

定义从上监控脚本/usr/local/sbin/check_ng.sh

[root@lynn-06 ~]# vim /usr/local/sbin/check_ng.sh

加入下面内容

#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; thensystemctl start nginxn2=`ps -C nginx --no-heading|wc -l`if [ $n2 -eq "0"  ]; thenecho "$d nginx down,keepalived will stop" >> /var/log/check_ng.logsystemctl stop keepalivedfi
fi

更改从上/usr/local/sbin/check_ng.sh权限

[root@lynn-06 ~]# chmod 755 /usr/local/sbin/check_ng.sh

启动从上keepalived

[root@lynn-06 ~]# systemctl start keepalived
[root@lynn-06 ~]# ps aux |grep keepalived
root       3589  0.0  0.1 120740  1400 ?        Ss   11:03   0:00 /usr/sbin/keepalived -D
root       3590  0.0  0.3 127476  3260 ?        S    11:03   0:00 /usr/sbin/keepalived -D
root       3591  0.0  0.3 131780  3124 ?        S    11:03   0:00 /usr/sbin/keepalived -D
root       3680  0.0  0.0 112676   988 pts/0    S+   11:03   0:00 grep --color=auto keepalived

为了区分主从的nginx需要把nginx的默认页做个标记

[root@lynn-06 ~]# echo backup > /usr/share/nginx/html/index.html

在另一台机器使用从ip访问
得到下面结果

[root@lynn-02 ~]# curl 192.168.130.128
backup

测试高可用

首先在主从keepalived都开启的情况下查看得到vip在主机上 使用另一台机器通过vip访问得到master
keepalived配置高可用集群
然后在主机keepalived关闭的情况下查看得到vip在从机上 使用另一台机器通过vip访问得到backup
keepalived配置高可用集群
再次开启主机的keepalived情况下查看得到vip又回到主机上 使用另一台机器通过vip访问得到master
keepalived配置高可用集群

转载于:https://blog.51cto.com/10963213/2095995

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

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

相关文章

jsp超链接到java文件,jsp页面超链接传中文终极解决办法

在做web前端页面的时候&#xff0c;经常碰到传中文问题。网上有许多方案&#xff0c;但仍不能根治&#xff0c;最终要用js或者java的encode相关方法。常规方案有三部&#xff1a;1.改tomcat的server.xml中URIEncodeing为utf-82.页面中编码设置为utf-83.整个项目编码使用utf-8我…

隐藏域input里面放当前时间_【小A问答】Win10的隐藏小秘密,被我发现了!

无惊无险又到小A问答环节辣~~今天的小A要来给大家分享一些小秘密&#xff01;当然&#xff0c;这可不是小A自己的小秘密&#xff0c;是关于你电脑的小秘密哦&#xff01;知道吗&#xff1f;Windows10每一次升级更新&#xff0c;都会伴随着新功能的增加。这些隐藏的功能你都发现…

h5文字垂直居中_CSS中垂直居中和水平垂直居中的方法

flex垂直居中&#xff1a;第一种&#xff1a;使用flex布局&#xff0c;让居中元素的父元素为flex属性,让它在交叉轴上center就可以达到居中效果了&#xff1a;html代码: <div class"father"><p>我要垂直居中</p> </div>css代码: .father {…

c++直角坐标系与极坐标系的转换_平面向量的奇技淫巧——斜坐标系的一系列低级研究...

事先说明&#xff1a;笔者初三&#xff0c;如在叙述中有不严谨的地方&#xff0c;还请诸位指出&#xff0c;自当感激不尽。一.什么是斜坐标系众所周知&#xff0c;我们目前平面中使用相当广的坐标系是笛卡尔发明的平面直角坐标系。然而&#xff0c;笛卡尔真的只使用了这一种坐标…

一行命令从 APK 文件中提取 Endpoint 及 URL

做IoT的人免不了要接触Android&#xff0c;接触Android的人又免不了要研究别人的App应用。 Diggy&#xff0c;一款能够从 apk 文件中提取 endpoint 及 URL 的工具&#xff0c;只要一行命令就可以帮大家提取出相关Android apk文件的安装信息和互联网访问信息。 下载地址&#xf…

antd 获取table选中行数据_element-ui 组件el-table默认选中行setCurrentRow采坑记

1.背景选中表格中某一行&#xff0c;高亮显示&#xff0c;table表格数据变化后&#xff08;删除某几条数据&#xff0c;不包括选中的删除&#xff09;&#xff0c; this.$refs.multipleTable.setCurrentRow(row),选中之前选中的行&#xff0c;可发现总是选中下一条的数据&#…

Unity protobuf中repeated转C#文件List只读问题

Unity protobuf中repeated转C#文件List只读问题 介绍问题解决方案总结 介绍 工具这里我就不多介绍了&#xff0c;如果有用到ProtoGen工具的可以继续看一下我后面的方法。 问题 如下图所示&#xff0c;我这里随便用了一个.proto文件&#xff0c;看下我这里面的repeated标记的…

贪吃蛇程序 php,微信小程序-贪吃蛇教程实例

很久很久以前&#xff0c;差不多大半年前吧&#xff0c;笔者发布了一篇关于OC版贪食蛇开发的文章&#xff0c;时隔多月&#xff0c;微信小程序横空出世&#xff0c;于是闲来无事的我又写了一个小程序版下面这段话请务必阅读笔者是做iOS的&#xff0c;而小程序大部分都是前端的知…

Tomcat启动时自动加载Servlet

转自&#xff1a;http://zhaoyongpan.blog.51cto.com/2714930/676239 想实现这样的功能&#xff1a; 1. Tomcat启动时随即启动Servlet; 2. Servlet启动时定时执行一个任务。 要点&#xff1a; 1、Tomcat中启动Servlet时&#xff0c;只需要在Servlet所在的工程的配置文件web…

internal java compiler error_Java异常处理总结

背景 最近专门负责团队的项目质量。我在治理异常日志过程中&#xff0c;总结了一下Java的异常处理。上面是我整理的最近自己比较常见的异常知识地图。异常知识地图概述 从异常知识地图最左边的根开始看&#xff0c;地图从左到右的连线连接的类之间有实实在在的父…

cuda nvcc版本不一致_windows 验证CUDA和CUDNN是否安装成功

安装完成CUDA&#xff0c;使用 nvcc -V 验证是否安装成功&#xff0c;看到如下信息说明安装成功接下来就可以安装 cuDNN 了。安装cuDNN下载 cuDNN&#xff0c;下载之前需要先注册一下 Nvidia 的账号&#xff0c;下载地址为&#xff1a;https://developer.nvidia.com/rdp/cudnn-…

Nova Cell

Nova Cell V2 详解 现在 &#xff0c;OpenStack 在控制平面上的性能瓶颈主要在 Message Queue 和 Database 。 尤其是 Message Queue , 随着计算节点的增加 &#xff0c; 性能变的越来越差 。 为了应对这种情况 &#xff0c; Nova 很早之前提出来 nova-cell ( 以下以 cellv1 代…

Android 通过WIFI状态监听广播,判断进入指定wifi范围

原文地址&#xff1a;http://blog.csdn.net/kongxiuqi/article/details/52524500 --------------------------------------------- WIFI状态变化会发送广播&#xff0c;一些可用的广播在WifiManger.java中可以看到。 广播一&#xff1a;WIFI 状态开关变化的监听&#xff0c;en…

java 截取byte数组_2020年的秋招已经开始了!最新Java面试题大全(文末附参考答案)送给大家...

包含的模块本文分为十九个模块&#xff0c;分别是&#xff1a;Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM共包含 208 道面…

MVP模式在Android项目中的使用

烦了在Activity中编写太多的代码&#xff0c;该app由我来主导。就选择用MVP模式。 概述 MVP是模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;、主持人&#xff08;Presenter&#xff09;的缩写&#xff0c;分别代表项目中3个不同的模块。 模型&#…

运行时错误7内存溢出_C++程序运行时的内存模型

C程序在运行时会将内存划分为4个区域&#xff1a;1代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理2全局区&#xff1a;存放程序的全局变量、静态变量、常量3栈区&#xff1a;由编译器进行自动分配和释放&#xff0c;存放函数的参数值&#xff0c;局部…

玩转Android之MVVM开发模式实战,炫酷的DataBinding!

原文&#xff1a;http://blog.csdn.net/u012702547/article/details/52077515 --------------------------------------------------------- MVP可以结合android的DataBinding -------------------------以下转载--------------- C# 很早就有了MVVM的开发模式&#xff0c;An…

打造一款便携版的Sublime Text

https://segmentfault.com/a/1190000000707661 https://www.cnblogs.com/52cik/p/sublime-diy.html 直接安装Sublime Text&#xff0c;不要打开 大家可以参照上文提到的《Sublime Text 全程指引》中的步骤去进行安装。我这里使用的是Sublime Text 2&#xff0c;其实3也是一样的…

confluence创建页面加载缓慢_树莓派4B使用docker安装confluence

说明confluence是一个专业的企业知识管理与协同软件&#xff0c;可以用于构建企业wiki。通过它可以实现团队成员之间的协作和知识共享。现在大多数公司都会部署一套confluence&#xff0c;用作内部wiki。另外confluence也可以作为个人的知识管理工具来用&#xff0c;只需要花10…

matlab粒子加速器仿真,粒子群算法优化PID参数 仿真不出结果 程序如下

用的是《MATLAB智能算法30个案例分析》中的程序1.文件名为PSO_PID.mfunction z PSO_PID(x)assignin(base,Kp,x(1)); % 粒子群依次赋值给Kp 这部分运行结果> PSO_PIDassignin(base,Ki,x(2)); …