首页
登录 | 注册

Centos7.5 配置 Nginx+Keepalived 搭建高可用负载均衡

一、系统要求:
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

二、IP 地址规划:

主机名 IP VIP

linux-node1 192.168.10.10 192.168.10.30

linux-node1 192.168.10.20

三、安装部署:

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

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

[[email protected] ~]# yum -y install keepalived

[[email protected] ~]# yum -y install keepalived

3.1.2 [主] 编辑配置文件:
[[email protected] ~]# vi /etc/keepalived/keepalived.conf

global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server [email protected]
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.10.10
#相当于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.10.30/24
}
#本vrrp_instance所引用的脚本配置,名称就是vrrp_script 定义的容器名
track_script {
chk_nginx
}
#状态切换,使用上述配置发送邮件通知
smtp_alert
}

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

state MASTER改为 state BACKUP
mcast_src_ip 192.168.10.20改为backup服务器实际的IP mcast_src_ip 192.168.10.30
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漂移后的结果

[[email protected] ~]#rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[[email protected] ~]# yum -y install nginx

4.1 设置Nginx开机启动。

[[email protected] ~]# systemctl enable nginx.service
[[email protected] ~]# service nginx start

4.2 访问本机查看nginx是否正常

[[email protected] ~]#curl -i localhost

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

[[email protected] ~]#vi /usr/share/nginx/html/index.html

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

4.4 双机热备高可用测试:
[[email protected] ~]# service keepalived start

4.5 curl 访问 VIP:
[[email protected] ~]# curl -i 192.168.10.30
此时返回的为主服务器的Nginx 默认页面。

4.6 重启主服务器或停止keepalived 服务。
[[email protected] ~]#reboot

[[email protected] ~]#service keepalived stop

4.7 再访问 VIP 地址
[[email protected] ~]# curl -i 192.168.10.30
这个时候可以看到返回的内容已经变为备份服务器的nginx默认页192.168.10.20 说明VIP已经从主服务器漂移到了备份服务器。

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

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

[[email protected] ~]ip add

###################################################

结束。


相关文章

  • 【纯干货】CentOS7上基于nginx搭建tomcat9.0版本的负载均衡群集管理
    [纯干货]CentOS7上基于nginx搭建tomcat9.0版本的负载均衡群集管理 前言 前面咱们介绍了CentOS7上的LVS负载均衡群集管理之LVS-NAT,下面就在给大家介绍一种负载均衡群集:基于nginx搭建tomcat9.0(版 ...
  • haproxy安装+结合keepalived实现高可用的简单配置
    一.HAProxy简介   代理的作用:web缓存(加速).反向代理.内容路由(根据流量及内容类型等将请求转发至特定服务器).转码器(将后端服务器的内容压缩后传输给client端).缓存的作用:减少冗余内容传输:节省带宽.缓解网络瓶颈:降低 ...
  • keepalived+nginx+tomcat搭建高性能web服务器集群
    使用keepalived+nginx+tomcat搭建高性能web服务器集群,前端用nginx做反向代理实现负载均衡,同时结合keepalived对nginx实现高可用,后端使用tomcat做动态jsp解析,实现了动静分离.(本文永久地址: ...
  • 目录概述环境准备keepalived搭建mysql搭建mysql双主搭建mysql双主高可用搭建概述    传统(不借助中间件)的数据库主从搭建,如果主节点挂掉了,从节点只能读取无法写入,只能把人肉去恢复故障,既不想引用中间件也不想人肉恢复 ...
  • 一.nginx基本配置nginx开启文件目录浏览功能(web上显示目录) 1location / { 2 root /data/www/file //指定实际目录绝对路径: 3 autoindex on; //开启目录浏览功能: 4 aut ...
  • Haproxy+keepalived实现sphinx高可用负载均衡  引自:http://www.ttlsa.com/archives/299 环境如下: [node3] haproxy:192.168.1.189 [node4] hapr ...

2019 jeepyurongfu.net webmaster#jeepyurongfu.net
12 q. 0.031 s.
京ICP备10005923号