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分布式集群架构做出更改:

1a88065cfb4de1d0b8c0ba565fb506c2.png

这就是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

许可协议。转载请注明出处,严禁商业用途!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值