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,一经查实,立即删除!

相关文章

如何快速掌握python包_如何快速掌握一个python模块?

初学者就别想快了。 我自己是这样的。先上网看看一些基础的教程&#xff0c;非常快的过一下&#xff0c;十几分钟&#xff0c;主要是了解这个module能干什么&#xff0c;特别是一些基本的功能&#xff0c;头脑中建立起初步映射。 然后就是用了&#xff0c;不用看了也白搭。我假…

python设计一个函数定义计算并返回n价调和函数_python函数的调和平均值?

我有两个函数&#xff0c;给出精度和召回分数&#xff0c;我需要做一个调和平均函数&#xff0c;定义在同一个库中&#xff0c;使用这两个分数。函数如下所示&#xff1a;功能如下&#xff1a;def precision(ref, hyp):"""Calculates precision.Args:- ref: a l…

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

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

自定义ListView中的分割线

原文&#xff1a;http://blog.csdn.net/zuolongsnail/article/details/7187302点击阅读 --------------------------------------- ListView中每个Item项之间都有分割线&#xff0c;设置Android:footerDividersEnabled表示是否显示分割线&#xff0c;此属性默认为true。 1.不显…

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

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

网络相关的面试题

1&#xff09;简述tcp/ip的三次交互过程&#xff08;个人理解&#xff1a;syn是握手信号&#xff0c;ack是确认信号&#xff0c;ack就相当于前面的syn值1&#xff0c;简单一点理解就是客户端发送握手请求&#xff0c;服务器收到握手请求后&#xff0c;回复一个包确认它接收到了…

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

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

ListMap排序

//compareto就是比较两个数据的大小关系 大于0表示前一个数据比后一个数据大&#xff0c; 0表示相等&#xff0c;小于0表示第一个数据小于第二个数据 public static List<Map<String, String>> sortWifi(List<Map<String, String>> wifiList){if(wif…

thinkphp回调的php调用db类,请问thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值?...

http://www.thinkphp.cn/api/source-class-Model.html#975protected function _validationFieldItem($data,$val) {switch(strtolower(trim($val[4]))) {case function:// 使用函数进行验证case callback:// 调用方法进行验证$args isset($val[6])?(array)$val[6]:array();if…

输入年份和月份输出该月有多少天python_Python实现用户输入年月日,程序打印出这是这一年的第多少天...

1. 自己造轮子yearint(input(请输入年份&#xff0c;如2019>>>))monthint(input(请输入月份&#xff0c;如8>>>))dayint(input(请输入日期,如25>>>))#下面这块代码是按照闰年计算if (year%40 and year%100!0) or (year%4000):calendar{1:31,2:29,3:…

Linux命令之find命令中的-mtime参数

有关find -mtime这个参数的使用有比较多的坑&#xff0c;今天把这个问题在这里记录下来&#xff1a; mtime参数的理解应该如下&#xff1a; -mtime n 按照文件的更改时间来找文件&#xff0c;n为整数。 n 表示文件更改时间距离为n天-n 表示文件更改时间距离在n天以内n 表示文件…

WifiManager的getScanResults()返回列表为0

这个问题查了好久&#xff0c;花了2个小时。就是出不来。 原来问题在android sdk 版本问题。 在android 6.0的时候&#xff0c;返回为空&#xff0c;且不为null&#xff0c;在华为mate&#xff0c;6.0手机上测试&#xff0c;也不报错。 官网和网上没有具体的解决方法。 后来…

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

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

php 字节转为kb,PHP获取文件大小并转化为KB、MB、GB单位

PHP获取文件大小并转化为KB、MB、GB单位。function getSize($filesize) {if ($filesize > 1073741824) {$filesize round($filesize / 1073741824 * 100) / 100 . GB;} elseif ($filesize > 1048576) {$filesize round($filesize / 1048576 * 100) / 100 . MB;} else…

python 重定向stdout_Python 犄角旮旯--重定向 stdout

What&#xff1f;在 Python 程序中&#xff0c;使用 print 输出调试信息的做法非常常见&#xff0c;但有的时候我们需要将 print 的内容改写到其他位置&#xff0c;比如一个文件中&#xff0c;便于随时排查。但是又不希望大面积替换 print 函数&#xff0c;这就需要一些技巧实现…

Jetty实战之 安装 运行 部署

原文地址&#xff1a;http://blog.csdn.net/kongxx/article/details/7218767 1. 首先从Jetty的官方网站http://wiki.eclipse.org/Jetty/Starting/Downloads下载最新的Jetty&#xff0c;上面有两个版本7.x和8.x&#xff0c;7.x是运行在JDK5及以上版本&#xff0c;8.x是运行在JD…

一行命令从 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;而小程序大部分都是前端的知…