使用背景:

  • 通过调用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上

测试正常

 

 

 

 

 

 

 

版权声明:本文为python-cat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/python-cat/p/7454820.html