• 腾讯云部署keepalived高可用


    使用背景:

    • 通过调用python SDK在腾讯云手动部署keepalived高可用

    部署环境

    系统:centos7.3

    Master192.168.0.100

    Slave192.168.0.14

    VIP192.168.0.76

    =================================================================

    master和slave上部署python命令行环境

    yum -y install python python-pip
    pip install qcloudcli
    

    安装命令行自动补齐

    complete  -C '/usr/bin/qcloud_completer' qcloudcli

    自动补齐永久生效vi ~/.bash_profile 添加上述命令到最后一行

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    	. ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    complete -C '/usr/bin/qcloud_completer' qcloudcli
    

    =========================================================================================================================

    安装keepalived

    yum -y install keepalived
    

    进入到keepalived目录并下载python-sdk

    cd /etc/keepalived/
    wget https://mc.qcloudimg.com/static/archive/b61ee1ce734e7437530304152c20ee14/qcloudapi-sdk-python-master.zip
    unzip qcloudapi-sdk-python-master.zip

      

    调用python-sdk申请VIP vim setup.py,注:master上执行即可   secretID和secretkey需要在云AIP密钥中申请,执行./setup.py

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from src.QcloudApi.qcloudapi import QcloudApi
    module = 'vpc'
    action = 'AssignPrivateIpAddresses'
    config = {
    'Region': 'gz',
    'secretId': '您的secretId',
    'secretKey': '您的secretKey',
    'method': 'post'
    }
    params = {
    'vpcId': 'vpc-53nh7c3p',
    'networkInterfaceId': 'eni-431tr0x5',
    'secondaryPrivateIpAddressCount': '1'
    }
    try:
    service = QcloudApi(module, config)
    print service.generateUrl(action, params)
    print service.call(action, params)
    except Exception, e:
    print 'exception:', e
    

      

    创建vip漂移脚本master:vi vip.py(backup只需要调换oldnetworkinterfaceID和newnetworkinterfaceID调换即可)

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from QcloudApi.qcloudapi import QcloudApi 
    
    #SDK源码直接使用方式使用
    #from src.QcloudApi.qcloudapi import QcloudApi
    
    
    module = 'vpc'
    action = 'MigratePrivateIpAddress'
    config = {
        'Region': 'gz',
        'secretId': '####',
        'secretKey': '####',
        'method': 'post'
    }
    params = {
        'vpcId': 'vpc-53nh7c3p',
        'privateIpAddress': '192.168.0.76',
        'oldNetworkInterfaceId': 'backup网卡ID',
        'newNetworkInterfaceId': 'master网卡ID'
    }
    
    try:
        service = QcloudApi(module, config)
        print service.generateUrl(action, params)
        print service.call(action, params)
    except Exception, e:
        print 'exception:', e
    

    配置keepalived.conf文件vi keepalived.conf (master)

    ! Configuration File for keepalived
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_sync_group G1 {
        group {
            VI_1
        }
        notify_master "/etc/keepalived/vip.py"
    }
    vrrp_instance VI_1 {
        #注意主备参数选择
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        unicast_peer {
            192.168.0.14    #对端设备的IP地址,例如:10.0.0.1
        }
        virtual_ipaddress {
            192.168.0.76  #第一步申请的 VIP
        }
        nopreempt
        garp_master_delay 1
        garp_master_refresh 5
    }
    

      配置keepalived.conf文件vi keepalived.conf (backup)

    ! Configuration File for keepalived
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_sync_group G1 {
        group {
            VI_1
        }
        notify_master "/etc/keepalived/vip.py"
    }
    vrrp_instance VI_1 {
        #注意主备参数选择
        state BACKUP
        interface eth0
        virtual_router_id 51     ###主从必须一致
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        unicast_peer {         ##keepalived单播模式
            192.168.0.100    #对端设备的IP地址,例如:10.0.0.1
        }
        virtual_ipaddress {
            192.168.0.76  #第一步申请的 VIP
        }
        nopreempt
        garp_master_delay 1
        garp_master_refresh 5
        
    

    主从上启动keepalived服务

    systemctl start keepalived.service
    

    测试:

    关闭master上的keepalived服务,查看VIP是否自动漂移到backup上

    测试正常

     

  • 相关阅读:
    HTTP解析
    Linux(CentOS)常用命令
    Windows下虚拟Linux
    国内静态文件CDN服务介绍 国内js公共库
    吐槽一下csdn和博客园
    项目托管 网站 小记
    微软2013年校园实习生招聘笔试题及答案
    最近在折腾VPS(持续完善)
    spring MVC +freemarker + easyui 实现sql查询和执行小工具总结
    Hessian 接口使用示例总结
  • 原文地址:https://www.cnblogs.com/python-cat/p/7454820.html
Copyright © 2020-2023  润新知