1. 业务场景:
高频次交易需要多次访问接口,配置单服务器多IP绕过币安单个IP频率限制
2. AWS实例选择:
t3系列,东京A区,ubuntu20
这是我测试的币安延迟最低的配置(平均6ms)
换一个区域、一个系统,延迟变化可能会变大几百ms
Okx需要阿里云香港,B区,同理也可以配置多IP,不过网上的文档很多,也许下一篇我会写(平均8ms)
3. 配置AWS:
4.配置服务器:
使用指令把新加的ip添加到网卡中:
172.31.34.174为分配的内部IP
ip addr add 172.31.34.174/20 dev ens5
echo 'ip addr add 172.31.34.174/20 dev ens5' >> /etc/rc.local
ip a
或者修改文件:
/etc/netplan/50-cloud-init.yaml
修改addresses 节点 把aws分配的内网ip写在 addresses节点下
ethernets:
ens5:
dhcp4: true
dhcp6: false
match:
macaddress: 0a:5e:a8:b4:c3:5e
set-name: ens5
addresses:
- 172.31.1.144/20
- 172.31.0.140/20
version: 2
修改完成后重启
5.Python使用多IP:
'''获取本地ip'''
import netifaces as ni
DuoIp = []
# print('检测服务器网络配置')
for dev in ni.interfaces():
print('dev:',dev)
if 'ens' in dev or 'eth' in dev or 'enp' in dev:
if len(ni.ifaddresses(dev)) > 2:
# print(ni.ifaddresses(dev))
for i in ni.ifaddresses(dev)[2]:
ip=i['addr']
print(f"检测到私有ip:{ip}")
if ip not in DuoIp:
DuoIp.append(ip)
print(f"当前服务器私有ip为{DuoIp}")
from requests_toolbelt.adapters import source #指定出口IP
sb = requests.Session()
new_source = source.SourceAddressAdapter(DuoIp[1])
sb.mount('http://', new_source)
sb.mount('https://', new_source)
print(sb.get("http://ip-api.com/json"))
原文:Python Aws Ubuntu20 配置多IP - 苏慕白的博客