1.准备俩台虚拟机,一台主机,一台备机

我这里模拟的是

主机ip: 192.168.42.66  masternginx

备机ip: 192.168.42.77  slavenginx

虚拟ip: 192.168.42.11

  具体步骤:

   2.1 将keepalived上传到linux系统当中
        2.2 cd /usr/local目录
        2.3 tar -zxvf keepalived-xxxxxxxxx
        2.4 切换到解压目录
        2.5 yum install -y openssl openssl-devel
        2.5 ./configure --prefix=/usr/local/keepalived 编译,将编译文件放到/usr/local/keepalived
        2.6 make
        2.7 make install
        2.8 在/etc/keepalived  创建目录:  mkdir /etc/keepalived
        2.9 cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
        2.10 cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
        2.11 cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
        2.12 ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
        2.13 ln -s /usr/local/keepalived/sbin/keepalived/sbin/
        2.14 将nginx启动脚本和keepalived.conf配置上传到/etc/keepalived
        2.15 主机:修改keepalived.conf配置文件
            interface 配置成与主机相同的网络  ip  a  
            mcast_src_ip 配置成自己机器的IP
            virtual_ipaddress {
                192.168.42.11 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。   
            }

完整配置:

! Configuration File for keepalived

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval #检测时间间隔
weight - #如果条件成立的话,则权重 -
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #来决定主从
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.42.66 #填写本机ip
priority # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
} virtual_ipaddress {
192.168.42.11 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}

2.16 启动keepalived

  

   这里如果报错:Job for keepalived.service failed because the control process exited with error code. See "systemctl status keepalived.service" and "journalctl -xe" for details.

   那么我们需要修改软连接配置
            解决办法:rm /usr/sbin/keepalived
                      ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
        
        2.17 备机keepalived.conf    
            state  BACKUP  备机
            interface 配置成与主机相同的网络  ip  a  
            mcast_src_ip 配置成自己机器的IP
            priority 90  这里备机的权重设为90比主机低,主机宕机时权重-20,就切换到了备机
            virtual_ipaddress {
                192.168.42.11  # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。         
            }

完整配置:

! Configuration File for keepalived

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval #检测时间间隔
weight - #如果条件成立的话,则权重 -
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP #来决定主从
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.42.77 #填写本机ip
priority # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
} virtual_ipaddress {
192.168.42.11 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}

  

这里配置完成后,主机和备机都以192.168.42.11作为虚拟ip

当我们访问虚拟ip时,它就会为我们分发请求,默认找主机

先来看一下主机和备机的效果

主机:

 备机:

接着我们访问虚拟ip,在主机备机同时存活的情况下默认访问主机

这里从虚拟机中的ip中也可以看出来

命令:ip a

主机:

 备机:

这时候我们模拟主机宕机

命令:service keepalived stop

虚拟IP也转到了备机上

再在网页访问虚拟ip

也是切换到了备机上

这时再将主机重启

命令:service keepalived start

我们的主机又回来了

如果想模拟nginx宕机,需要我们给.sh脚本赋权

脚本如下

如果你是 root 登陆的话(不是的话,切换到 root 用户,对*.sh 赋可执行的权限)
找到你脚本的文件夹
chmod 777 *.sh
赋予权限
or
chmod +x *.sh

配置好后就会每2秒检测nginx是否存活,不存活则自动重启nginx,(配置了这里下一次就不需要启动nginx,直接启动keepalived就可以了)

我们也可以设置keepalived开机自启

命令:

chkconfig keepalived on

至此,keepalived的大致配置结束

即实现了服务的高可用!

keepalived高可用工具的更多相关文章

  1. Nginx之keepalived高可用工具

    1.创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2. 将keepalived上传到linux系统当中 3. cd /usr/local目录 4. tar -zxvf keepalive ...

  2. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  3. 高可用群集HA介绍与LVS+keepalived高可用群集

    一.Keepalived介绍 通常使用keepalived技术配合LVS对director和存储进行双机热备,防止单点故障,keepalived专为LVS和HA设计的一款健康检查工具,但演变为后来不仅 ...

  4. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  5. 1. lvs+keepalived 高可用群集

    一. keepalived 工具介绍 1.专为lvs 和HA 设计的一款健康检查工具 2.支持故障自动切换 3.支持节点健康状态检查 二.  keepalived 实现原理剖析 keepalived ...

  6. Linux(13):期中架构(5)--- 前端部分:keepalived高可用 & HTTPS & iptables防火墙

    keepalived 高可用集群 1. keepalived服务概念说明 # 1.1 keepalived软件的作用? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LV ...

  7. rabbitmq+haproxy+keepalived高可用集群环境搭建

    1.先安装centos扩展源: # yum -y install epel-release 2.安装erlang运行环境以及rabbitmq # yum install erlang ... # yu ...

  8. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  9. 第十九章 keepalived高可用

    一.keepalived高可用 1.什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的. 2.高可用使用的工具 1 ...

随机推荐

  1. Mybatis注解开发多表一对一,一对多

    Mybatis注解开发多表一对一,一对多 一对一 示例:帐户和用户的对应关系为,多个帐户对应一个用户,在实际开发中,查询一个帐户并同时查询该账户所属的用户信息,即立即加载且在mybatis中表现为一对 ...

  2. MySql学习-1.MySql的安装:

    1.安装包的下载(mysql-v5.7.25 )(NavicatforMySQL_11.2.15): 链接:https://pan.baidu.com/s/166hyyYd3DMjYhMwdW805F ...

  3. PWN之Canary学习

    Canary 参考链接:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/mitigation/canary-zh/ 0x1 简介: 用于防止栈溢出被利用的一 ...

  4. Python123——测验1: Python基本语法元素 (第1周)程序题2总结

    一.题目 二.解析 (1)官方解析 (2)个人解析 def m1(): """ 法1:暴力破解""" s1 = input('') s2 = ...

  5. 剑指offer-面试题48-最长不含重复字符的子字符串-动态规划

    /* 题目: 最长不含重复字符的子字符串. */ /* 思路: f(i) = f(i-1) + 1,(未出现过当前字符,distance > f(i-1) distance,当前字符和上一次出现 ...

  6. 简单的leetcode题

    简单的leetcode题 环绕字符串中唯一的子字符串 把字符串 s 看作是\("abcdefghijklmnopqrstuvwxyz"\)的无限环绕字符串,所以 s 看起来是这样的 ...

  7. 以下几种情况转换成布尔类型会得到false

    0 -0 '' NaN undefined null false document.all()

  8. 止损+TS

    单策略单品种单策略多品种多策略单品种和加仓多策略多品种静态仓位和动态仓位 金肯特钠(kingKeltner)布林强盗(BollingerBandit)动态突破(DynamicBreakOutII)恒温 ...

  9. Docker入门(windows安装)

    Docker入门(安装)Docker是一种轻量级容器技术,实际中直接运行在当前操作系统(Linux)上,而不是虚拟机中.PaaS提供了存储,数据库,网络,负载均衡,自动扩展等功能,Docker云平台就 ...

  10. C# WinForm MessageBox.Show显示在窗体中间

    一.新建MessageBoxEx类,并添加以下代码. using System; using System.Windows.Forms; using System.Text; using System ...