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. 上传NUnit的单元测试结果和OpenCover的单元测试覆盖率到SonarQube服务中

    SonarQube.Scanner.MSBuild.exe begin /k:"OMDCCQuotes" /d:sonar.host.url="http://myip:9 ...

  2. HashPump用法

    做哈希长度扩展攻击的时候用到这个工具,但是没找到这个工具详解办法 我这篇不算是详解,只是收集例子做出的一个用法 HashPump一种在各种散列算法中利用散列长度扩展攻击的工具.目前支持的算法:MD5, ...

  3. python之函数对象、名称空间、嵌套、作用域、闭包

    函数对象 # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象​# 函数对应的原因# 1 可以直接被引用# 2 可以当作函数参数传递# 3 可以作为函数的返回值 ...

  4. [转帖]如何在VirtualBox中运行macOS Catalina Beta版本

    如何在VirtualBox中运行macOS Catalina Beta版本 secist2019-08-03共2179人围观系统安全 https://www.freebuf.com/articles/ ...

  5. linux下对服务器性能监控shell脚本

    #!/bin/bash #提取本服务器的IP地址信息 ENO1=`ifconfig | sed -n '1,1p' | awk -F ' ' '{print $1}'` IP=` -d -d &quo ...

  6. 【Life】 今天的思考

    今天一个实习生来问我问题,他要用python操作outlook发送邮件,代码是从网上找的. 在其他人的电脑上可以成功运行,但在他的电脑上就失败. 处理过程 (1)我查看了他method里的代码, 发现 ...

  7. spark内核篇-task数与并行度

    每一个 spark job 根据 shuffle 划分 stage,每个 stage 形成一个或者多个 taskSet,了解了每个 stage 需要运行多少个 task,有助于我们优化 spark 运 ...

  8. redis 事务 事务机制详解 MULTI、EXEC、DISCARD、WATCH

    1. Redis服务端是个单线程的架构,不同的Client虽然看似可以同时保持连接,但发出去的命令是序列化执行的,这在通常的数据库理论下是最高级别的隔离2. 用MULTI/EXEC 来把多个命令组装成 ...

  9. go 表单

    package main import ( "fmt" "io" "net/http" ) const form = `<html&g ...

  10. 北电之死:谁谋杀了华为的对手?——银湖资本(Silver Lake)董事总经理爱德华·詹德出任CEO,既不了解华为,也不重视中国,直截了当地否决了收购华为

    作者:戴老板:微信公众号:饭统戴老板(ID: worldofboss) 2003年5月,北京SARS疫情紧张,摩托罗拉集团总裁迈克·扎菲罗夫斯基(Mike Zafirovski)却准备不走寻常路,决定 ...