2. 利用keepalived实现高可靠配置(HA)  

2.1. 高可靠概念

  HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。

 

2.2. 高可靠软件keepalived

  keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。Keepalived可以对本机上的进程进行检测,一旦Master检测出某个进程出

现问题,将自己切换成Backup状态,然后通知另外一个节点切换成Master状态。

2.3. keepalived安装

  下载keepalived官网:http://keepalived.org

   将keepalived解压到/usr/local/src目录下:tar -zxvf  keepalived-1.2.19.tar.gz -C /usr/local/src

   进入到/usr/local/src/keepalived-1.2.19目录:cd /usr/local/src/keepalived-1.2.19

   开始configure(检查安装环境,并指定将来要安装的路径):./configure --prefix=/usr/local/keepalived    

   #编译并安装:make && make install

2.4. 将keepalived添加到系统服务中  

  拷贝执行文件:cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

  将init.d文件拷贝到etc下,加入开机启动项:cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived 

  将keepalived文件拷贝到etc下:cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 

  创建keepalived文件夹:mkdir -p /etc/keepalived

  将keepalived配置文件拷贝到etc下:cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf 

  添加可执行权限:chmod +x /etc/init.d/keepalived  

  添加keepalived到开机启动:chkconfig --add keepalived        chkconfig keepalived on

2.4. 配置keepalived虚拟IP

1.基本服务器宕机的主从切换配置

  

  

机器IP

安装软件

角色

虚拟ip

描述

192.168.232.201

Nginx、keepalived

Nginx主机

192.168.232.203

反向代理到tomcat1和tomcat2

192.168.232.205

Nginx、keepalived

Nginx备机

主机挂了切换虚拟ip 192.168.232.203

反向代理到tomcat1和tomcat2

192.168.232.200

Tomcat

Tomcat1

无

192.168.232.204

Tomcat

Tomcat2

无

 

  两台nginx服务器,分别安装keepalived,配置/etc/keepalived/keepalived.conf

主从配置:

  主nginx修改配置文件: /etc/keepalived/keepalived.conf

  #MASTER节点

#全局配置
global_defs {
   notification_email {   #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
  notification_email_from Alexandre.Cassen@firewall.loc   #指定发件人
   smtp_server 192.168.200.1  #指定smtp服务器地址
   smtp_connect_timeout 30    #指定smtp连接超时时间
   router_id LVS_DEVEL  #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state MASTER     #指定A节点为主节点 备分机上设置为BACKUP即可
interface eth0   #设置实例绑定的网卡
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组(同一实例下virtual_router_id必须相同)
priority 100     #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
advert_int 1      #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证信息,两个节点必须一致
auth_type PASS  #主从服务器验证方式
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
192.168.232.203/24 #如果两个nginx的ip分别是192.168.232.201,,...205,则此处的虚拟ip跟它俩同一个网段即可,24子网掩码(255.255.255.0),可以多个虚拟IP,换行即可
}
}

备nginx

修改备nginx下/etc/keepalived/keepalived.conf文件

配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致

#BACKUP节点

global_defs {
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.232.203/24
}
}

#分别启动两台机器上的keepalived:tail  /var/log/message 查看日志。

service keepalived start 

用ip addr查看主从:

主机:

备机:

此时如果主机宕机则(service keepalived stop)备机会顶替主机获得虚拟ip

首先将主机的keepalived关闭:

再次查看主机:ip addr

备机:

至此,基本服务器宕机的主从切换配置完毕

访问虚拟ip是不是还能轮询访问tomcat

2.基于nginx进程死掉的主从切换配置 

  keepalived是通过检测keepalived进程是否存在判断服务器是否宕机,如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换,所以我们需要写

个脚本来监控nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉。

  在主nginx上需要编写nginx进程检测脚本(check_nginx.sh),判断nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉,check_nginx.sh内容如下:

#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
if [ $A -eq 0 ];then ## 如果没有进程值得为 零
service keepalived stop ## 则结束 keepalived 进程
fi

  将check_nginx.sh拷贝至/etc/keepalived下,

  注意修改/etc/keepalived/check_nginx.sh的可执行权限

  修改主nginx的keepalived.conf,添加脚本定义检测:

  注意下边红色标识地方:

#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from miaoruntu@itcast.cn #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ##监控脚本
interval 2 ##时间间隔,2秒
weight 2 ##权重
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
track_script {
check_nginx #监控脚本
}
virtual_ipaddress { #设置vip
192.168.101.100 #可以多个虚拟IP,换行即可
} }

修改后重启keepalived

7.Nginx_Keepalived高可用配置的更多相关文章

  1. MariaDB+Keepalived双主高可用配置MySQL-HA

    利用keepalived构建高可用MySQL-HA,保证两台MySQL数据的一致性,然后用keepalived实现虚拟VIP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换. ...

  2. ResourceManager高可用配置

    ResourceManager高可用配置 1. yarn-site.xml配置 <property> <name>yarn.resourcemanager.cluster-id ...

  3. Redis Sentinel实现高可用配置

    一般情况下yum安装redis的启动目录在:”/usr/sbin” :配置目录在”/etc/redis/”在其目录下会有默认的redis.conf和redis-sentinel.conf redis高 ...

  4. Spring Cloud之踩坑01 -- Eureka高可用配置

    转载:https://blog.csdn.net/dear_Alice_moon/article/details/79373955 问题描述: 在进行Eureka高可用配置时,控制台一直出现“.... ...

  5. Flume 高可用配置案例+load balance负载均衡+ 案例:日志的采集及汇总

    高可用配置案例 (一).failover故障转移 在完成单点的Flume NG搭建后,下面我们搭建一个高可用的Flume NG集群,架构图如下所示: (1)节点分配 Flume的Agent和Colle ...

  6. Keepalived保证Nginx高可用配置

    Keepalived保证Nginx高可用配置部署环境 keepalived-1.2.18 nginx-1.6.2 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1. ...

  7. springcloud-07-eureka HA的高可用配置

    单机版的eureka, 运行时间稍长, 就会在管理界面出现红色的警告, 为了消除这个警告, 可以使用eureka的高可用配置: 只需要写一个工程配置不同的配置文件, 然后启动多实例即可: 请参照单机版 ...

  8. Rabbitmq安装、集群与高可用配置

    历史: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多 ...

  9. linux中keepalived实现nginx高可用配置

    linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...

随机推荐

  1. C#规范整理·资源管理和序列化

    资源管理(尤其是内存回收)曾经是程序员的噩梦,不过在.NET平台上这个噩梦似乎已经不复存在.CLR在后台为垃圾回收做了很多事情,使得我们现在谈起在.NET上进行开发时,都会说还是new一个对象吧!回收 ...

  2. 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs

    (1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失)  ->  AdvGen 我们的工作处理由白盒N ...

  3. 01trie

    前置芝士 二进制,tire 平衡树 一种数据结构,来维护一些数,需要支持以下操作: 1.插入 xx 数 2.删除 xx 数(若有多个相同的数,因只删除一个) 3.查询 xx 数的排名(排名定义为比当前 ...

  4. 通过案例来剖析JQuery与原生JS

    首先来个例子: 我们在登陆或者注册一些网站时,如果某一项点过了但没填,鼠标移走后是不是经常看到网站有相应的红色字体提示呢? 那下面我们就以这个为例来剖析下jQuery和原生JS的一些区别,来上代码: ...

  5. eval 命令

    eval命令用于重新运算求出参数的内容. eval可读取一连串的参数,然后再依参数本身的特性来执行. 语法: eval [参数]示例:eval echo 123

  6. SpringBoot整合MyBatis完成添加用户

    怎么创建项目就不说了,可以参考:https://www.cnblogs.com/braveym/p/11321559.html 打开本地的mysql数据库,创建表 CREATE TABLE `user ...

  7. Oracle - 子查询、TOP - N

    1 子查询 sql 中查询是可以嵌套的,一个查询的结果可以作为另外一个查询的条件.表. SELECT select_list FROM table WHERE expr operator (SELEC ...

  8. 【LOJ】#3031. 「JOISC 2019 Day1」聚会

    LOJ#3031. 「JOISC 2019 Day1」聚会 听说随机可过? 我想了很久想了一个不会被卡的做法,建出前\(u - 1\)个点的虚树,然后找第\(u\)个点的插入位置,就是每次找一条最长链 ...

  9. 排序算法大汇总 Java实现

    一.插入类算法 排序算法的稳定性:两个大小相等的元素排序前后的相对位置不变.{31,32,2} 排序后{2,31,32},则称排序算法稳定 通用类: public class Common { pub ...

  10. TUM 慕尼黑工业大学 MSEI 课程结构介绍 ws19/20

    本文内容 根据德文 tum 官网介绍:https://www.ei.tum.de/studium/master-ei-msei/ 翻译,提取并且翻译成中文信息. 本文适用于ws19/20届的学生. 概 ...