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. Redis入门(介绍、搭建)——Windows、Centos环境

    一.介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cac ...

  2. idea生成构造方法的快捷键(看这篇就够了)

    使用快捷键能加快编写代码的速度和质量 idea生成构造方法的快捷键是Alt+Insert,然后选中Constructor

  3. Android埋点方案的简单实现-AOP之AspectJ

    个人博客 http://www.milovetingting.cn Android埋点方案的简单实现-AOP之AspectJ AOP的定义 AOP为Aspect Oriented Programmin ...

  4. .net core 3.1 webapi后端接收钉钉小程序post的文件/图片

    世上本没路:走的人多了,便成了路. dd.uploadFile({ url: '请使用自己服务器地址', fileType: 'image', fileName: 'file', filePath: ...

  5. Git操作 :从一个分支cherry-pick多个commit到其他分支

    在branch1开发,进行多个提交,这时切换到branch2,想把之前branch1分支提交的commit都[复制]过来,怎么办? 首先切换到branch1分支,然后查看提交历史记录,也可以用sour ...

  6. js对象模型3

    3

  7. sql server通过临时存储过程实现使用参数添加文件组脚本复用

    create procedure #pr_CreateFileGroup @dbname nvarchar(max), @filegroupname nvarchar(max) as begin /* ...

  8. [PAT] A1023 Have Fun with Numbers

    [题目大意] 给一个不超过20位的数字,如果将它乘以2得到的数仅仅是原来的数字重新排列得到的,那就输出Yes,下一行输出加倍后的数.如果不是,输出No,下一行输出加倍后的数. [思路] 20位过于庞大 ...

  9. maven 上传 jar 到本地私服

    You'll need to add a RankLib <dependency> tag set to your existing <dependencies> list. ...

  10. 关于新版vue-cli安装json-server在build文件里没生成出dev-server文件

    今天在安装json-server时遇到一个问题,build文件里并没有生成dev-server.js文件, 开始是怀疑配置有问题,或者安装不正确,然后重新安装了两三次,还是这样,郁闷.. 通过查询资料 ...