腾讯云部署keepalived高可用

使用背景:

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

部署环境

系统:centos7.3

Master192.168.0.100

Slave192.168.0.14

VIP192.168.0.76

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

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

 

1
2
yum -y install python python-pip
pip install qcloudcli

 

安装命令行自动补齐

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
# .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

 

1
yum -y install keepalived

 

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

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

  

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/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调换即可)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<em id="__mceDel">#!/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
</em>

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
! 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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
! 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服务

1
systemctl start keepalived.service

测试:

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

测试正常

 

 

 

 

 

 

 

posted @   什么都不会的小郭  阅读(2027)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示