腾讯云部署keepalived高可用
使用背景:
- 通过调用python SDK在腾讯云手动部署keepalived高可用
部署环境
系统:centos7.3
Master:192.168.0.100
Slave:192.168.0.14
VIP:192.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上
测试正常