上云无忧 > 文档中心 > 百度智能云私有网络VPC使用Keepalived在VPC实现高可用架构
私有网络VPC
百度智能云私有网络VPC使用Keepalived在VPC实现高可用架构

文档简介:
Keepalived的作用是检测服务器的状态,通常用来搭建高可用服务,比如Nginx、MySQL等。通常高可用主备集群包含2台服务器,一台主服务器处于某种业务的激活状态(即Active状态),另一台备服务器处于该业务的备用状态(即Standby状态),主服务器上绑定了一个辅助IP,当主服务器出现问题时,主服务器释放该辅助IP,然后备用服务器绑定该辅助IP继续提供服务。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠



简介

Keepalived的作用是检测服务器的状态,通常用来搭建高可用服务,比如Nginx、MySQL等。通常高可用主备集群包含2台服务器,一台主服务器处于某种业务的激活状态(即Active状态),另一台备服务器处于该业务的备用状态(即Standby状态),主服务器上绑定了一个辅助IP,当主服务器出现问题时,主服务器释放该辅助IP,然后备用服务器绑定该辅助IP继续提供服务。

示例场景

3台云主机,其中2台作为主备,其中一台进行流量测试。弹性网卡辅助IP为172.16.0.100。

云主机名称 虚机ID 网卡ID 内网IP 角色
VM1 i-U63mWIg9 eni-jdbx8ddgpsz1 172.16.0.202
VM2 i-jW72IAK8 eni-1jvkdmai1iu1 172.16.0.203
VM3 i-Y99AbvOF eni-h5242i8788v0 172.16.0.201 测试机

操作步骤

1.在主服务器和备服务器上搭建Keepalived,使用 yum 方式安装软件包。

# yum install keepalived -y

2.设置抢占默认,配置脚本来check服务。keeplived check脚本/tmp/check_status.sh如下:

#!/bin/sh
if [ ! -f /tmp/down ]; then
    exit 1
fi
exit 0

如何获取AKSK

生成POST token的文件 post_sign.py

生成DELETE token的文件 delete_sign.py

地址切换脚本changed_ip.sh如下:


#!/bin/bash

STATUS=$1
MASTERENI=$2
BACKUPENI=$3
IP=$4

set_master_eni_ip()
{
    TOKEN=`cat /proc/sys/kernel/random/uuid`
    SIGN=`python /root/post_sign.py $MASTERENI $TOKEN`
    curl -H "Host:bcc.bj.baidubce.com" -H "Content-Type:application/json;charset=UTF-8" 
-H "Authorization:$SIGN"  -X POST --data '{"privateIpAddress":"'$IP'"}' "http://bcc.bj.baidubce.com/v1/
eni/$MASTERENI/privateIp?clientToken=$TOKEN"
}

del_backup_eni_ip()
{
    TOKEN=`cat /proc/sys/kernel/random/uuid`
    SIGN=`python /root/delete_sign.py $BACKUPENI $IP $TOKEN`
    curl -H "Host:bcc.bj.baidubce.com" -H "Content-Type:application/json;charset=UTF-8" -H "
Authorization:$SIGN"  -X DELETE "http://bcc.bj.baidubce.com/v1/eni/$BACKUPENI/privateIp/$IP?clientToken=$TOKEN"
}

case "$1" in
    master)
        del_backup_eni_ip
        set_master_eni_ip
        ;;
    backup)
        ;;
esac


注:changed_ip.sh $role $master_eni $backup_eni $ip

  • role: 切换的角色,目前脚本仅实现了 master
  • master_eni:需要新增IP的网卡
  • backup_eni:需要删除IP的网卡
  • ip: 需要变动的IP,一般为内网IP

    3.登录主服务器,执行/etc/keepalived/keepalived.conf,修改相关配置。

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
    #   vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.16.0.100
        }
        unicast_src_ip 172.16.0.202
        unicast_peer {
            172.16.0.203
        }
        notify_master "/usr/bin/echo master >> /tmp/keep_status;date >> /tmp/keep_status;/

    4.登录备服务器,执行/etc/keepalived/keepalived.conf,修改相关配置。

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
    #   vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.16.0.100
        }
        unicast_src_ip 172.16.0.203
        unicast_peer {
            172.16.0.202
        }
        notify_master "/usr/bin/echo master >> /tmp/keep_status;date >> 
  • /tmp/keep_status;/root/changed_ip.sh master eni-1jvkdmai1iu1 eni-jdbx8ddgpsz1  172.16.0.100;date >> /tmp/keep_status;"
        notify_backup "/usr/bin/echo backup >> /tmp/keep_status"
        notify_fault "/usr/bin/echo fault >> /tmp/keep_status"
    }
  • root/changed_ip.sh master eni-jdbx8ddgpsz1 eni-1jvkdmai1iu1 172.16.0.100;date >> /tmp/keep_status;"
        notify_backup "/usr/bin/echo backup >> /tmp/keep_status"
        notify_fault "/usr/bin/echo fault >> /tmp/keep_status"
    }

说明

  • keepalived 启动时可能会设置防火墙,因此测试流量连通性时删除即可。
iptables -D INPUT 1

5.功能验证,在云服务器1生成down文件

touch /tmp/down

删除此文件,会自动切回主,断网时间5秒左右。



相似文档
  • 如今实施网络攻击的门槛越来越低,服务器被黑的情况屡屡发生,企业一旦遭受网络攻击,损失严重。如果想要避免被攻击,网络控制是必不可少的措施。 VPC是一个用户能够自定义的虚拟网络,灵活设置网络地址空间,实现不同业务之间的网络隔离。
  • 为了方便用户使用网络服务的API,百度智能云提供了可以通过命令行工具BCE CLI(Command Line Interface)调用VPC服务的方式,该工具基于BCE Python SDK实现。 前提条件 BCE CLI命令行工具基于Python 2.7开发,根据操作系统安装相应Python 2.7,目前支持Linux。
  • 配置支持中文显示的CLI环境 如需要配置支持中文显示的CLI环境,请执行如下命令配置: $ export LANG=en_US.UTF-8 说明:可先执行$ locale命令查看当前环境的语言支持情况,若不是LANG=en_US.UTF-8,可执行上述命令进行修改。
  • BCE CLI通过VPC子命令来访问VPC服务,操作VPC、Subnet(子网)和Route(路由)等资源。 CLI使用多层命令结构,所有的命令以bce开头,[options]表示BCE CLI支持的选项,表示CLI所支持的服务,如BOS、CDN等,每个服务拥有多个特定的子命令。
  • 创建VPC 描述: 创建VPC实例。 命令格式: $ bce vpc create-vpc [-des DESCRIPTION] 说明: name: VPC名称,不能取值"default",长度不超过65个字符,可由数字,字符,下划线组成。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部