双点服务器HA架构

LNMP主备服务器架构

一、数据库服务器迁移

server01 WEB服务器master 192.168.17.102

server02数据库服务器192.168.17.103

server03 WEB服务器backup 192.168.17.101

1、服务器环境基本配置

因为是克隆获取虚拟机,所以只需要进行IP和MAC地址的修改即可。

#1、删除原有网卡mac地址记录信息
cd /etc/udev/rules.d
rm -rf 70-persistent-net.rules
#2、删除eth0里的mac地址项 HWADDR参数
#3、修改主机名称
sed -i "s/server01/server02/" /etc/sysconfig/network;
#4、启动之后,把hosts文件对应也做解析
192.168.17.103    server02(数据库服务器是server02) 域名
2、数据备份和迁移

①源数据库服务器导出数据

#源数据库是server01在server01上操作把tp5数据库导出到/root目录
mysqldump -uroot -p --database tp5shop > /root/tp5shop.sql

②导入数据到新数据库服务器

#因为数据库服务器克隆来的,所有本身具有数据可以删除了库,模拟新机器,重新导入
mysql > drop database tp5shop;
#创建数据库并导入数据
mysql > create database tp5shop;
mysql > use tp5shop;
mysql > source /root/tp5shop.sql;

③在server02 MySQL服务器中建立远程连接用户tp5shop并授予权限

grant all on tp5shop.* to 'tp5shop'@'192.168.17.%' identified by '123456';

④修改项目数据库配置文件

vim /usr/local/nginx/html/tp5shop/application/database.php

⑤访问页面,查看业务使用情况

二、高可用服务搭建
1、高可用概念

高可用HA 是分布式系统架构设计中必须考虑的因素之一,它通常是指通过设计,减少系统服务不可用的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。=很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

实现高可用的核心点:

①冗余(多台服务器)

②自动切换

备份服务器:

冷备服务器不启用(域名不解析),使用的时候再开启,需要手动切换

热备服务器在等待状态(监控主服务器状态),一旦主宕机,备就接管,自动切换实现热备,

引入VIP的切换

通过vip(虚拟主机)的方式,切换主备服务器

①默认VIP绑定在主服务器(master)

②master不可用,就切换VIP到备份服务器(backup)

③用户可以使用到连续性更好的服务,通过vip访问服务器常用来单独实现高可用的软件:

keepalived

2、keepalived介绍

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如: Nginx、Haproxy(高可用代理服务)、MysQL等)的高可用解决方案软件

3、keepalived组成和原理

Keepalived软件主要是通过VRRP协议实现高可用功能的。

VRRP(虚拟路由器冗余协议),VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip (该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。

内核空间:

主要包括IPVS (IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。

用户空间:

WatchDog:负载监控checkers和VRRP进程的状况

VRRP Stack:负载均衡器之间的失败切换FailOver,如果只用一个负载均衡器,则VRRP不是必须的。

Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有VRRP Stack,但健康检查healthchecking是一定要有的。

IPVS wrapper:用户发送设定的规则到内核ipvs代码

Netlink Reflector:用来设定vrrp的vip地址等。

keepalived主要使用三个模块,分别是core、check和vrrp。

core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。

vrrp模块是来实现VRRP协议的。

4、安装配置启动keepalived

文件或者目录 作用

/etc/keepalived/keebalived.conf 生效的配置文件

/etc/init.d/keepalived 服务器管理脚本

/var/logs/messages 日志信息

主机名称 服务器IP

server01 192.168.17.102 master

server03 192.168.17.101 backup

配置keepalived

①备份主备服务器的配置文件

cd /etc/keepalived
cp keepalived.conf keepalived.conf_bak

②分别修改主备服务器配置文件

vim keepalived.conf

keepalived示例配置文件说明

#vrrp协议的配置
    vrrp_instance VI_1 {
    #工作模式
    state MASTER#监听的网卡
    interface eth0
    #虚拟路由id 需要和备服务器一致
    virtual_router_id 51
    #权重优先级
    priority 100
    #vrrp包的发送周期 1s
    advert_int 1
    #权限验证
    authentication {
    auth_type PASSauth_pass 1111
    }
    #需要绑定切换的VIP
    virtual_ipaddress {
        192.168.17.1
    ...
)

#master默认只需要修改使用VIP即可
    virtual_ipaddress {
        192.168.17.208
    }
}
#备用服务器需要改两处
    vrrp_instance VI_1 {
    #修改工作模式为备
    state BACKUP
    interface ethe
    virtual_router_id 51
    priority 180
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }

     virtual_ipaddress {
     192.168.17.288
}

③分别按照顺序启动主服务器和备服务器的keepalived

service keepalived start

④查看主备服务器的网卡信息

需要通过ip a命令查看

分别在server01和server03查看

ip a

vim /etc/init.d/keepalived (管理服务脚本)

vim keepalived.conf(主备配置文件)

MASTER

BACKUP

服务器整机不可用,常见于服务器断网,或者断电关机等。

方法一︰模拟主服务器断电关闭

#关闭主服务器VIP所在服务器

poweroff

方法二:模拟主服务器断网

#关闭VIP所在服务器的网卡使其不能够联网

service network stop

tail -f /var/log/messages  //查看keepalived服务器日志可以看到vip自动切换过程

三、实现服务HA

实现过程分析:

VIP实际是由keepalived进行绑定的,所以当nginx服务不可用时,就关闭当前机器的keepalived即可,释放VIP。进而绑定到其他备用服务器。

①编写服务检测脚本,实现检测nginx是否可用,不可用则关闭当前所在主机的keepalived

②在keepalived配置中调用检测服务脚本

1、脚本实现监控nginx控制keepalived

①编写测试脚本赋予执行权限(主备都需要配置脚本检查)

cd /etc/keepalived

vim check_nginx.sh

脚本内容:

#!/bin/bash
#反撇号是获取结果
nginx_status=`ps -C nginx --no-header | wc -l`
    if [ $nginx_status -eq 0 ];then
    service keepalived stop
fi

赋予脚本执行权限方便之后其他软件调用执行

chmod +x check_nginx.sh

②测试脚本可用性

启动nginx和keepalived

关闭nginx执行脚本查看keepalived是否也关闭

2、keepalived自动切换服务脚本

多台服务器中配置keepalived定时触发检测nginx的脚本模块

killall nginx 关掉所有nginx进程

vim keepalived.conf 配置文件会每隔3秒自动调用check_nginx.sh脚本检测nginx服务

#在vrrp_instance外 上面定义
    vrrp_script check_nginx {
    #调用脚本地址
    script /etc/keepalived/check_nginx.sh
    #检测间隔时间
    interval 3
}
#在vrrp_instance里调用
    track_script {
    #上线定义的名称
    check_nginx
    }

实现主备自动切换高可用

四、Keepalived配置补充

脑裂:vip出现在了多台机器上。网络不通畅,禁用了数据包,

主备服务器没法通讯,造成备服务器认为主服务器不可用,绑定VIP,主服务器VIP不会释放。

解决方案:

①双备或者多备模式 BACKUP通过priority权重来区分谁的优先级更高

②单播(定向广播)的方式(一些特定环境禁用了组播方式)

  1. 非抢占模式

配置nopreempt主备服务器的配置文件,vrrp_instance段中

设置state工作模式都为BACKUP

两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟

2、单播模式

一些特定环境下不允许发送组播(局域网的话会发vrrp包给其他人,浪费带宽)造成备服务器无法收到vrrp包,可能会造成脑裂现象。可以通过单播的方式解决。

单播示例配置:注意此语法在keepalived1.2.11版本以上支持

    unicast_src_ip 192.168.1.21##(本地IP地址)
    unicast_peer {
    #(备服务器IP地址)此地址—定不能忘记
    192.168.1.22
    }

#主服务器server01配置
#在vrrp_instace段中加入#本地IP
    unicast_src_ip 192.168.17.102
    unicast_peer {
    #对象IP﹑发送vrrp包给备服务器
    192.168.17.101
}

单播模式主备都必须设置,并且ip位置刚好相反

  1. tcpdump抓vrrp包

tcpdump抓vrrp包的方式:

tcpdump vrrp -n   //tcpdump抓所有的包,抓vrrp包是指定的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值