IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> [每周一更]-(第12期):采用Ali HaVip Keepalived 配置高可用服务 -> 正文阅读

[系统运维][每周一更]-(第12期):采用Ali HaVip Keepalived 配置高可用服务

在这里插入图片描述

Keepalived 说明

Keepalived是基于vrrp协议的一款高可用软件

Keepalived 是运行在 lvs 之上,是一个用于做双机热备(HA)的软件,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性。

运行原理

Keepalived 通过选举(看服务器设置的权重)挑选出一台热备服务器做 MASTER 机器,MASTER 机器会被分配到一个指定的虚拟 ip,外部程序可通过该 ip 访问这台服务器,如果这台服务器出现故障(断网,重启,或者本机器上的 keepalived crash 等),keepalived 会从其他的备份机器上重选(还是看服务器设置的权重)一台机器做 MASTER 并分配同样的虚拟 IP,充当前一台 MASTER 的角色。

选举策略

选举策略是根据 VRRP 协议,完全按照权重大小,权重最大(0~255)的是 MASTER 机器,下面几种情况会触发选举

  • Keepalived 启动的时候
  • Master 服务器出现故障(断网,重启,或者本机器上的keepalived crash 等,而本机器上其他应用程序 crash 不算)
  • 有新的备份服务器加入且权重最大

ALI 只能支持单播,且只能两台ECS绑定

Aliyun必须用他们分配的虚拟ip、还得申请弹性公网ip,要不然部署的集群对外起不到作用

如下配置可以看到我们配置,HAVIP 绑定了EIP公网,HAVIP又分别绑定到集群keepalived的master和backup的ECS中,我们访问EIP公网即可。

  • 1、Master 和 Backup 都正常工作,则访问EIP时,会访问到Master对应的Nginx服务。
  • 2、当我手动将Master的Nginx服务杀死,则访问EIP时,会访问到Backup的Nginx服务
  • 3、我们修复Master的Nginx服务,然后开启Keepalived服务,访问EIP时,会访问到Master对应的nginx服务。

术语解释

  • EIP (Elastic IP Address)
  • HaVip (High-Availability Virtual IP Address)
  • LB (Load Balancer 负载均衡)
  • HA (High Available 高可用)
  • Failover (失败切换)
  • Cluster (集群)
  • LVS (Linux Virtual Server Linux 虚拟服务器)
  • DS (Director Server),指的是前端负载均衡器节点
  • RS (Real Server),后端真实的工作服务器
  • VIP (Virtual IP),虚拟的 IP - 地址,向外部直接面向用户请求,作为用户请求的目标的 IP - 地址
  • DIP (Director IP),主要用于和内部主机通讯的 IP 地址
  • RIP (Real Server IP),后端服务器的 IP 地址
  • CIP (Client IP),访问客户端的 IP 地址

集群中使用到的IP信息如下:

  • EIP公网: xxxx
  • HaVip: 172.18.78.119
  • 集群Master: 001 (172.18.78.117)
  • 集群Backup: 002 (172.18.78.118)

主从服务器配置文件位置

主从服务器:/etc/nginx/sites-enabled/*

主服务器web地址:/var/www/html/index.html
备服务器web地址:/var/www/html/index.html

请求地址:http://xxxx

check_nginx_pid.sh 配置

/etc/keepalived/check_nginx_pid.sh

#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then            #如果nginx没有启动就启动nginx                        
      #systemctl start nginx    #重启nginx,模拟故障;生产环境可打开
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              systemctl stop keepalived
      fi
fi

MASTER

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0c:51:53 brd ff:ff:ff:ff:ff:ff
    inet 172.18.78.117/20 brd 172.18.79.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.18.78.119/32 scope global eth0
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:08:46:d7:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

/etc/keepalived/keepalived.conf

global_defs {
    router_id 172.18.78.117  # 你的ip地址
    #router_id LVS_DEVEL
}
vrrp_script chk_http_port {
    script "/etc/keepalived/check_nginx_pid.sh" # 心跳执行的脚本,检测nginx是否启动
    interval 2                                  #(检测脚本执行的间隔)
    weight 2
}
vrrp_instance VI_1 {
    state MASTER         # 备份服务器上将 MASTER 改为 BACKUP
    interface eth0       # 网卡,可以通过ifconfig查看
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 99          # 主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1

    # 如果两节点的上联交换机禁用了组播,则采用 vrrp 单播通告的方式
    unicast_src_ip 172.18.78.117
    unicast_peer {
        172.18.78.118
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port     # 调用检测脚本
    }
    virtual_ipaddress {
        172.18.78.119  # ali havip
    }
}

BACKUP 服务器

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0e:a5:13 brd ff:ff:ff:ff:ff:ff
    inet 172.18.78.118/20 brd 172.18.79.255 scope global eth0
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:60:48:73:12 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

/etc/keepalived/keepalived.conf

global_defs {
    router_id 172.18.78.118  # 你的ip地址
    #router_id  LVS_DEVEL
}
vrrp_script chk_http_port {
    script "/etc/keepalived/check_nginx_pid.sh"
    interval 2               #(检测脚本执行的间隔)
    weight 2
}
vrrp_instance VI_1 {
    state BACKUP         # 备份服务器上将 MASTER 改为 BACKUP
    interface eth0       # 网卡,可以通过ifconfig查看
    virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    priority 90          # 主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1

    # 如果两节点的上联交换机禁用了组播,则采用 vrrp 单播通告的方式
    unicast_src_ip 172.18.78.118
    unicast_peer {
        172.18.78.117
    }

    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port
    }
    virtual_ipaddress {
        172.18.78.119  # ali havip
    }
}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 01:04:54  更:2022-09-21 01:06:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:13:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计