说明

本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念.

两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由于华为云每台机器只能绑定一个私有的浮动IP(VIP),所以本次示例只能实现一主一备(Master-Backup).

环境:

Server1:192.168.0.70

Server2:192.168.0.71

VIP:192.168.0.10

安装Keepalived(两台服务器步骤相同,只有细微的配置差别)

创建etc下的keepalived目录,编辑配置文件

yum -y install keepalived
mkdir /etc/keepalived
vi /etc/keepalived/keepalived.conf

配置文件内容如下

global_defs {
notification_email {
localhost@163.com
}
notification_email_from Keepalived@localhost
smtp_server 163@smtp.com
smtp_connect_timeout 30
router_id 192.168.0.70
}
#配置vrrp_script,主要用于健康检查,以及检查失败后执行的动作。
vrrp_script chk_nginx {
#健康检查脚本,当脚本返回值不为0时认为失败
script "/etc/keepalived/ck_ng.sh"
#检查频率,以下配置每2秒检查1次
interval 2
#当检查失败后,将vrrp_instance的priority减小5
weight -5
#连续监测失败3次,才认为真的健康检查失败。并调整优先级
fall 3
#连续监测2次成功,就认为成功。但不调整优先级
rise 2
} #定义对外提供服务的VIP vrrp_instance配置
vrrp_instance VI_1 {
#指定vrrp_instance的初始状态,是MASTER还是BackUP主要还是看优先级。
state MASTER
#指定vrrp_instance绑定的网卡,最终会通过指定的网卡宣告VIP
interface eth0
#发送心跳包的源IP,可使用绑定的网卡IP,也可以使用本服务器上的其他IP
mcast_src_ip 192.168.0.70
#相当于VRID,用于在一个网内区分组播,需要组播域内内唯一。
virtual_router_id 55
#本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER
priority 100
#心跳间隔,下面配置,MASTER会每隔1秒发送一个报文高职组内其他机器,自己还活着。
advert_int 1
#定义主从的验证方式以及密码,一般使用PASS(最长8位,超过了只会识别前8位作为密码)
authentication {
auth_type PASS
auth_pass 123456
}
#VIP
virtual_ipaddress {
192.168.0.10/24
}
#本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名
track_script {
chk_nginx
}
#状态切换,使用上述配置发送邮件通知
smtp_alert
}

BACKUP服务器的配置需要几处修改

state MASTER改为  state BACKUP
mcast_src_ip 192.168.0.70改为backup服务器实际的IP mcast_src_ip 192.168.0.71
priority 100改为priority 99

添加Nginx监控脚本,监控Nginx的运行状态,如果发现异常并不能重启成功则关闭Keepalived,让VIP漂移到备份服务器.

vi /etc/keepalived/ck_ng.sh

配置内容如下

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi

增加监控脚本的执行权限,设置keepalived开机启动

chmod +x /etc/keepalived/ck_ng.sh
systemctl enable keepalived.service

安装Nginx

这里Nginx当做Server使用,方便查看VIP漂移后的结果

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx

设置Nginx开机启动

systemctl enable nginx.service

启动Nginx

service nginx start

访问本机查看nginx是否正常

 curl -i localhost

修改nginx的默认启动页,标识当前主机的IP地址

vi /usr/share/nginx/html/index.html

在Welcome to nginx!后加上IP地址192.168.0.70,保存后再次访问本机查看是否已经更改.另一台服务器是同样的步骤

华为云中一个很重要的配置

登录华为云,进入到管理控制台,进入云服务器的详情页面(如果你使用的是华为云ECS的话,其他云服务器提供商不晓得是否也是这样)

点击网卡选项,点击管理私有IP地址,添加VIP192.168.0.10(注意两台服务器都要配置!)

VIP漂移测试

启动Keepalived

service keepalived start

curl访问VIP

curl -i 192.168.0.10

此时返回的为主服务器的nginx默认页面

重启主服务器或停止Keepalived服务

reboot
或
service keepalived stop

在另一台服务器上访问VIP

curl -i 192.168.0.10

这个时候可以看到返回的内容已经变为备份服务器的nginx默认页192.168.0.71  说明VIP已经从主服务器漂移到了备份服务器

如果你使用reboot命令重启了服务器,过了一会之后再次访问VIP,发现又返回192.168.0.70的页面内容,因为主服务器已经重启完成,keepalived启动之后会重新把vip抢夺回来.

在测试过程中,可以查看服务器是否已绑定上vip,使用命令

ip a

在eth0网卡上可以看到除了本机内网IP外,还有一个VIP

总结

如果某台服务器宕机或者keepalived和nginx出现问题,vip会自动漂移到另一台备份服务器.

如果是自己测试练着玩的话,本机直接访问vip就可以了.如果应用到生产环境,还需有一个外网IP映射到VIP,然后申请一个域名解析到这个外网IP.

本文主要实现高可用,nginx只是当做一个静态网站的server.后面会基于此文记录nginx配置负载均衡.

Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)的更多相关文章

  1. 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  2. Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建

    Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建 Nginx 是一个高性能的 HTTP反向代理服务器 Keepalived 是一个基于VRRP协议来实现的LVS服务高可 ...

  3. 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  4. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  5. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  6. LVS+Keepalived 实现高可用负载均衡

    前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...

  7. haproxy+keepalived实现高可用负载均衡

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...

  8. haproxy+keepalived实现高可用负载均衡(转)

      软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. ...

  9. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

随机推荐

  1. CentOS下安装Nginx服务器

    一.nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos7作为安装环境. 1.1  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果 ...

  2. 48. leetcode 105题 由树的前序序列和中序序列构建树结构

    leetcode 105题,由树的前序序列和中序序列构建树结构.详细解答参考<剑指offer>page56. 先序遍历结果的第一个节点为根节点,在中序遍历结果中找到根节点的位置.然后就可以 ...

  3. Scala 令人着迷的类设计

    尽管 Scala 和 Java 有很多相同的地方, 但是在类的声明, 构造, 访问控制上存在很大的差异, 通过本文你也能看到相比较 Java 很多啰嗦的模板代码, Scala 更加的简洁, 使用 Sc ...

  4. MacOS下安装gdb、mgo

    安装gdb:http://blog.panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/ 注意最后两步: killall ...

  5. .NET Standard 2.0 特性介绍和使用指南

    .NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...

  6. 自适应Simpson积分

    自适应Simpson积分 作用 如标题所示,这玩意就是当你不会微积分的时候来求积分的. 总所周知,积分的定义就是函数的某一段与坐标轴之间的面积. 那么,自适应Simpson积分就是一种可以再某些精度下 ...

  7. 吃奶酪 洛谷 p1433

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  8. Session获取不到的情况及解决办法(源码解析)

    本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处,请尊重他人努力成果,谢谢. 1. 当有连个sessionFactory时,容易产生获取不到session的情况 ...

  9. YUM安装东西提示PYCURL ERROR 6 - "Couldn't错误的解决办法

    执行yum install命令时提示PYCURL ERROR 6 - "Couldn't resolve host 错误,原来是dns设置出错,具体错误代码:  Loaded plugins ...

  10. 理解LGWR,Log File Sync Waits以及Commit的性能问题[转]

    理解LGWR,Log File Sync Waits以及Commit的性能问题 一.概要: 1.  Commit和log filesync的工作机制 2.  为什么log file wait太久 3. ...