linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案
前言
LNMP 分布式集群的部署实践 系列文章:
衡量一个集群的高可用性在于没有单点故障,即其中任何一台服务器宕机都不会造成整个服务中断。
之前的LNMP分布式集群的实践中,显然在将Nginx作为负载均衡服务器时,upstream机制能检测出后端服务器是否可用,如果其中一台服务器宕机,Nginx能自动转移到后端正常的服务器中,以保持系统持续可用。
但现在只有一台负载均衡服务器,一旦该服务器发生故障,就会造成整个集群服务中断,为此,使用 keepalived 部署备用服务器,实现故障转移。
Keepalived 内置了 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)功能,用于解决静态路由出现的单点故障问题,它通过IP多播的方式通信,当发现路由故障时,通过选举策略将备用路由更换为主路由,从而继续提供服务。
Keepalived 实现了将提供对外访问的IP地址(Virtual IP)自动在主服务器(Master)和备用服务器(Backup)之间切换,正常情况下用Master,当它故障了那么监控它的Backup会通过优先级机制竞争接管Virtual IP继续对外服务,其他落选的就继续监控当前使用的 Virtual IP 服务器。
高可用环境中的服务器:
角色
Real IP(RIP)
Virtual IP(VIP)
说明
Master
192.168.177.21
192.168.177.11
Nginx + Keepalived
Backup
192.168.177.22
192.168.177.11
Nginx + Keepalived
-
192.168.177.1X
-
后端服务器集群
然后我们对之前的LNMP分布式集群架构做出更改:
这就是LNMP高可用分布式集群!
但是为了演示我们不加入集群,使用两个简单的后端服务器,RIP分别为192.168.177.23和192.168.177.24,Keepalived 服务的虚拟IP改为192.168.177.20:
角色
Real IP(RIP)
Virtual IP(VIP)
说明
Master
192.168.177.21
192.168.177.20
Nginx + Keepalived
Backup
192.168.177.22
192.168.177.20
Nginx + Keepalived
-
192.168.177.23
-
后端服务器1
-
192.168.177.24
-
后端服务器2
部署
安装和配置 keepalived 服务
部署和配置主服务器
cd /usr/local/nginx/html
echo 'This is Master' > index.html
curl http://localhost
tar -zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure
make && make install && cd ..
cd /usr/local/etc/rc.d/init.d
cp keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
chkconfig keepalived on
cd /usr/local/etc/sysconfig
ln -s `pwd`/keepalived /etc/sysconfig/keepalived
cd /usr/local/sbin
ln -s `pwd`/keepalived /usr/sbin/keepalived
# 配置主服务器的 keepalived
less /usr/local/etc/keepalived/keepalived.conf # 查看配置文件模板
mkdir /etc/keepalived # 手动创建默认加载的配置文件
vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { # 配置一个虚拟路由
state MASTER
interface ens33 # 指定监测的网卡
virtual_router_id 21 #虚拟路由的标识,同一个 VRRP 的 Master 和 Backup 应一致
mcast_src_ip 192.168.177.21 # 设置 real IP,可省略,有默认自动使用主IP
priority 100 # 优先级、权重(权重最高的主机将接管 Virtual IP),范围0-254
advert_int 1 # MASTER 和 BACKUP 之间同步检查的时间间隔,单位秒
authentication {
auth_type PASS # 验证类型,PASS表示密码验证
auth_pass 123456 # 设置密码
}
virtual_ipaddress { # 配置 虚拟IP地址池,每行一个
192.168.177.20 # 为 MASTER 和 Backup 设置相同的虚拟IP
}
}
# 启动 keepalived 服务
service keepalived start
ps aux | grep keepalived
ip a | grep 192.168.177.20
#### 配置备用服务器的 keepalived
基于主服务器克隆出一台备用服务器,IP为192.168.177.22。然后打开 keepalived 配置:
```bash
vrrp_instance VI_1 {
state BACKUP # 修改身份为 BACKUP
priority 90 # 修改优先级为90(低于MASTER)
……
}
# Master 和 Backup 通过 VRRP 的 112 端口通信
iptables -I INPUT -s192.168.177.21 -p112 -jACCEPT
service iptables save
iptables -I INPUT -s192.168.177.22 -p112 -jACCEPT
service iptables save
service keepalived start # 启动 Backup服务器的 Keepalived 服务
# 区分当前访问的是哪一台服务器
cd /usr/local/nginx/html
echo 'This is Backup' > index.html
# 测试,访问192.168.177.20
service network stop
service network start
复制代码
至此就部署完毕了。
使用Keepalived 监控本机服务
除了可以监控其他服务器中的Keepalived是否正常,也可以监控本机中的某个服务是否正常:
监控本机Nginx服务
vrrp_script chk_nginx {
script "/chk_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
……
track_script {
chk_nginx
}
}
vi /chk_nginx.sh # 创建监控脚本
# !/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service nginx start
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service keepalived stop
fi
fi
chmod +x /chk_nginx.sh
service keepalived reload
复制代码
高可用测试
service nginx stop # 手动停用
ps -C nginx --no-header # 等待2秒,查看是否恢复启动
# 创建停止 Nginx 服务并立即取消 Nginx 程序执行权限的脚本
cd /usr/local/nginx/sbin
vi test.sh
#! /bin/bash
service nginx stop
chmod -x nginx
chmod +x test.sh
./test.sh
# 看是否自动切换到备用服务器
复制代码
LNMP 分布式集群的部署实践 系列文章:
dfface 的版权声明:所有文章除特别声明外,均采用 CC BY-NC-SA 4.0
许可协议。转载请注明出处,严禁商业用途!
linux lnmp分布式集群,LNMP 分布式集群(六):keepalived 高可用方案相关推荐
- Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统
Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...
- MySQL集群之五大常见的MySQL高可用方案(转)
1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...
- MySQL集群之五大常见的MySQL高可用方案
1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...
- PostgreSQL HA集群高可用方案介绍 pgpool-II+PostgreSQL HA方案部署
PostgreSQL HA集群高可用方案介绍 & pgpool-II+PostgreSQL HA方案部署 一.PostgreSQL HA集群高可用方案介绍 二.pgpool-II+Postgr ...
- keepalived高可用集群技术介绍及实战演练
一.Keepalived是什么 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务 ...
- rocketmq docker集群_【解构云原生】RocketMQ高可用方案调研及On K8S设计展望(下)...
本文由作者授权网易云发布,未经许可,请勿转载. 作者:李海燕,网易杭州研究院云计算技术部工程师 上文链接:[解构云原生]RocketMQ高可用方案调研及On K8S设计展望(上) 四.RocketMQ ...
- 让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布!
摘要:在华为全联接2021期间,华为云GaussDB(for openGauss)正式推出重大内核新特性--同城双集群高可用方案,提供金融级高可用服务,支持RPO=0 .RTO<60s的同城双集 ...
- Redis高可用方案:sentinel(哨兵模式)和集群
一. redis高可用方案–sentinel(哨兵模式) 当我们搭建好redis主从复制方案后会发现一个问题,那就是当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力, ...
- Redis高可用方案-哨兵与集群
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良 Redis高可用方案 一.名词解释 二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不 ...
最新文章
- C# 语言规范_版本5.0 (第10章 类)
- linux命令详解-useradd,groupadd
- 浅谈“领域驱动设计”
- Java基础学习总结(26)——JNDI入门简介
- printf 指针地址_c语言入门 第十四章指针
- win7 一些快捷系统工具命令
- s:selected的用法
- spring batch_Spring Batch作为Wildfly模块
- Unity的camera组件
- 软件测试——测试基础
- openfire无法启动
- web压力测试工具(小而精)
- 关闭cmd快速编辑模式
- 计算机漏洞安全相关的概念POC 、EXP 、VUL 、CVE 、0DAY
- 投资组合理论的简单介绍
- 云栖大会马总演讲:《未来属于善于拥抱未来的人》
- C函数参数中的三个点
- 大数据高级开发工程师——Spark学习笔记(6)
- 微型计算机主要技术指标是啥,微型计算机的主要技术指标
- 传输层安全---SSL