
博客:http://nginxs.blog.51cto.com/ github:https://github.com/bashhu
能力说明:
了解Python语言的基本特性、编程环境的搭建、语法基础、算法基础等,了解Python的基本数据结构,对Python的网络编程与Web开发技术具备初步的知识,了解常用开发框架的基本特性,以及Python爬虫的基础知识。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明阿里云大多数服务都提供成熟的python SDK,方便我们快速调用,下面是我自己使用负载均衡SLB的调用过程: github地址:https://github.com/bashhu/blog/blob/master/utils/aliyun_slb.py # -*- coding: utf8 -*- from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkslb.request.v20140515 import DescribeRegionsRequest,AddBackendServersRequest,RemoveBackendServersRequest,SetBackendServersRequest,DescribeHealthStatusRequest from aliyunsdkecs.request.v20140526 import StopInstanceRequest # 创建 AcsClient 实例 client = AcsClient( "xxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxx", "cn-beijing" ); def add_server(slbid, server_list): ''' 创建 request,并设置参数 slbid=>'lb-2zekxu2elibyexxoo9hlw' server_list=>[{"ServerId": "slb_id_1", "Weight": "100"}, {"ServerId": "slb_id_2", "Weight": "100"} ] ''' request = AddBackendServersRequest.AddBackendServersRequest() # 发起 API和参数 请求 request.set_accept_format('json') request.set_LoadBalancerId(slbid) request.set_BackendServers(server_list) # 并打印返回 response = client.do_action_with_exception(request) print response def remove_server(slbid, ecsid_list): '''创建 request,并设置参数 slbid:是负载均衡ID ecsid_list:['slb_id_1','slb_id_2','slb_id_3'] ''' request = RemoveBackendServersRequest.RemoveBackendServersRequest() request.set_accept_format('json') request.set_LoadBalancerId(slbid) request.set_BackendServers(ecsid_list) response = client.do_action_with_exception(request) print response def set_wight(slbid, server_list): ''' 创建 request,并设置参数 slbid=>'lb-2zekxu2elibyexxoo9hlw' server_list=>[{"ServerId": "slb_id_1", "Weight": "100"}, {"ServerId": "slb_id_2", "Weight": "100"} ] ''' request = SetBackendServersRequest.SetBackendServersRequest() # 发起 API和参数 请求 request.set_accept_format('json') request.set_LoadBalancerId(slbid) request.set_BackendServers(server_list) # 并打印返回 response = client.do_action_with_exception(request) print response def health_status(slbid, port): '''创建 request,并设置参数 slbid:是负载均衡ID ecsid_list:['slb_id_1','slb_id_2','slb_id_3'] ''' request = DescribeHealthStatusRequest.DescribeHealthStatusRequest() request.set_accept_format('json') request.set_LoadBalancerId(slbid) request.set_ListenerPort(port) response = client.do_action_with_exception(request) print response def create_slb(LoadBalancerName, AddressType, VSwitchId): ''' LoadBalancerName='test-slb-01' AddressType='intranet' VSwitchId='vsw-2ze130t0mdnzmtvx7uyck' create_slb(LoadBalancerName, AddressType, VSwitchId) ''' from aliyunsdkslb.request.v20140515 import CreateLoadBalancerRequest request = CreateLoadBalancerRequest.CreateLoadBalancerRequest() request.set_accept_format('json') request.set_LoadBalancerName(LoadBalancerName) request.set_AddressType(AddressType) request.set_VSwitchId(VSwitchId) response = client.do_action_with_exception(request) print response def slb_regionid(): ''' slb_regionid():查看区域列表 ''' from aliyunsdkslb.request.v20140515 import DescribeRegionsRequest request = DescribeRegionsRequest.DescribeRegionsRequest() request.set_accept_format('json') response = client.do_action_with_exception(request) print response
在2014年刚开始使用阿里云的时候python才刚入门,当时有个需求比较急就发现了几乎万能的aliyuncli。阿里云的命令行是基于对应服务的python SDK基础上的,所以aliyuncli操作SLB的时候会需要aliyun-python-sdk-slb这个包。 1. 先安装对应服务包: pip install aliyun-python-sdk-slb==2.1.2 pip install aliyuncli==2.1.2 2.想调用API怎么样, ecs , ess, mts, rds, slb四个服务的接口使用pip安装sdk后aliyuncli既可以使用。 其它服务使用下面方法切换对应的version即可 aliyuncli ram ConfigVersion --version v20150501 v20150501则是SDK的版本,可以从你的SDK代码结构内发现。 [root@test-node1 ~]# ls /usr/lib/python2.6/site-packages/aliyunsdkram/request/ __init__.py __init__.pyc v20150501 命令行帮助[root@test-node1 ~]# aliyuncli slb --help usage: aliyuncli <command> <operation> [options and parameters] [slb] valid operations as follows: AddBackendServers | AddListenerWhiteListItem AddTags | AddVServerGroupBackendServers ConfigVersion | CreateLoadBalancer CreateLoadBalancerHTTPListener | CreateLoadBalancerHTTPSListener CreateLoadBalancerTCPListener | CreateLoadBalancerUDPListener CreateRules | CreateVServerGroup DeleteCACertificate | DeleteLoadBalancer DeleteLoadBalancerListener | DeleteRules DeleteServerCertificate | DeleteVServerGroup DescribeCACertificates | DescribeHealthStatus DescribeListenerAccessControlAttribute | DescribeLoadBalancerAttribute DescribeLoadBalancerHTTPListenerAttribute | DescribeLoadBalancerHTTPSListenerAttribute DescribeLoadBalancerTCPListenerAttribute | DescribeLoadBalancerUDPListenerAttribute DescribeLoadBalancers | DescribeRegions DescribeRuleAttribute | DescribeRules DescribeServerCertificates | DescribeTags DescribeVServerGroupAttribute | DescribeVServerGroups DescribeZones | ModifyLoadBalancerInternetSpec ModifyVServerGroupBackendServers | RemoveBackendServers RemoveListenerWhiteListItem | RemoveTags RemoveVServerGroupBackendServers | SetBackendServers SetCACertificateName | SetListenerAccessControlStatus SetLoadBalancerHTTPListenerAttribute | SetLoadBalancerHTTPSListenerAttribute SetLoadBalancerName | SetLoadBalancerStatus SetLoadBalancerTCPListenerAttribute | SetLoadBalancerUDPListenerAttribute SetRule | SetServerCertificateName SetVServerGroupAttribute | ShowVersions StartLoadBalancerListener | StopLoadBalancerListener UploadCACertificate | UploadServerCertificate 下面展示一个操作脚本 #!/bin/bash #自动创建负载均衡并添加后端服务器并开启监听 #author:new.nginxs.net #date:20170718 CTIME=$(date "+%Y-%m-%d-%H-%m") #创建负载均衡 /usr/local/bin/aliyuncli slb CreateLoadBalancer > /tmp/create.txt SLBID=$(grep "LoadBalancerId" /tmp/create.txt | awk -F '"' '{print $4}') VIP=$(grep "Address" /tmp/create.txt | awk -F '"' '{print $4}') #创建http监听,监听80端口后端也是80端口,带宽-1表示不限制,,关闭粘性session,关闭健康检查 /usr/local/bin/aliyuncli slb CreateLoadBalancerHTTPListener --LoadBalancerId "$SLBID" --ListenerPort 80 --BackendServerPort 80 --Bandwidth -1 --XForwardedFor on --StickySession off --HealthCheck off #i-u1cv2vgd9:要添加到后端ECS ID /usr/local/bin/aliyuncli slb AddBackendServers --LoadBalancerId "$SLBID" --BackendServers [\{\"ServerId\":\"i-udsg4vgd9\",\"Weight\":\"100\"\}] #启动监听 /usr/local/bin/aliyuncli slb StartLoadBalancerListener --LoadBalancerId "$SLBID" --ListenerPort 80 #测试通过slb是否可以访问后端服务器 sleep 10; STATUS1=$(curl -s --head http://"$VIP"/heath.html | grep '200 OK') if [ -n "$STATUS1" ] ;then echo "=====SLB access OK=====" else echo "=====SLB access error=====" exit 1; fi 总结: aliyuncli可以在阿里云的python SDK基础上进行调用。具体命令参数可以直接参考各个服务的 API的参数进行填写,所以特别好用, 适合不会开发的运维同学使用。
我也是从13年才正式开始接触阿里云的,在2014年才开始用,当时可能有些自动化的需求一直使用aliyuncli,但是效率太低,而且记得当时有些地方使用不方便,所以自己就写了个简单的通用SDK。最近发现用阿里云的朋友越来越多,今天分享给大家,这里以负载均衡服务为例子。 阿里云API核心:拼接请求参数把“Access Key ID”放到请求参数里面“相当于用户名”,把url的参数用“Access Key Secret”进行sha1混淆加密生成签名,把签名追加入请求参数。这样这个签名就可以保证参数的完整和安全不可逆转。 [公共参数参考传送门] [签名机制传送门] 我尝试用图片流程还原了整个API的请求过程,大家可以参考这个过程进行API调用: 首先API是通过http/https进行访问的,以GET请求为例, 1. 参数内分为:user_param,公共参数,url编码参数并拼接成url使用的参数形式。 2. 这里详细说下签名的获取方法:url使用的参数形式添加HTTPmethod“&”拼接后,使用“Access Key Secret”为salt调用hashlib.sha1算法加密,然后使用base64编码使用生成签名 3.把访问服务的"http协议"+"域名"+"参数"+"签名"=请求地址 下面是我要分享的自己写的代码,欢迎各位拍砖QQ:850900633 https://github.com/bashhu/blog/blob/master/test/aliyun_api_sdk_v2.py # coding=utf-8 """ __created__ = 2017/6/9 17:33 __author__ = 'baishaohua' # @Site : https://github.com/bashhu """ import os, sys import hashlib import hmac import base64 import urllib import time import uuid import requests def get_iso8601_time(): '''返回iso8601格式的时间''' TIME_ZONE = "GMT" FORMAT_ISO8601 = "%Y-%m-%dT%H:%M:%SZ" return time.strftime(FORMAT_ISO8601, time.gmtime()) def get_uuid(): '''返回uuid''' return str(uuid.uuid4()) def get_parameters(user_param, Action, AccessKeyId, Version): ''' 拼接参数字典 user_param: {"RegionId":"cn-beijing", "LoadBalancerName":"test-node1", "AddressType":"intranet", "VSwitchId":"vsw-2zevjlczuvp2mkhhch12x"} Action操作例如:CreateLoadBalancer AccessKeyId:access key ID Version: 接口的版本 ''' parameters = {} parameters['HTTPMethod'] = 'GET' parameters['AccessKeyId'] = AccessKeyId parameters['Format'] = 'json' parameters['Version'] = Version parameters['SignatureMethod'] = 'HMAC-SHA1' parameters['Timestamp'] = get_iso8601_time() parameters['SignatureVersion'] = '1.0' parameters['SignatureNonce'] = get_uuid() parameters['Action'] = Action for (k, v) in sorted(user_param.items()): parameters[k] = v return parameters def get_param(parameters): '''把公共参数拼接成字符串''' param_str = '' for (k, v) in sorted(parameters.items()): param_str += "&" + urllib.quote(k, safe='') + "=" + urllib.quote(v, safe='') param_str = param_str[1:] return param_str def get_StringToSign(parameters, param_str): '''拼接生成签名的字符串''' StringToSign = parameters['HTTPMethod'] + "&%2F&" + urllib.quote(param_str, safe='') return StringToSign def get_signature(StringToSign, AccessKeySecret): '''构建签名''' h = hmac.new(AccessKeySecret, StringToSign, hashlib.sha1) signature = base64.encodestring(h.digest()).strip() return signature def build_request(server_url, param_str, signature, AccessKeySecret): '''拼接url并进行请求''' Signature = "Signature=" + urllib.quote(signature) param = param_str + "&" + Signature request_url = server_url + param s = requests.get(request_url) print s.content def get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version): '''对请求进行模块 server_url: slb.aliyun.com Action = 'DescribeRegions' AccessKeySecret, AccessKeyId:也就是ak user_param = {'LoadBalancerId': 'lb-2zekxu2elibyexxoo9hlw'} Version:例如slb的版本是2014-05-15,每个服务都不相同 ''' server_url = 'https://' + server_url + '/?' AccessKeySecret = AccessKeySecret AccessKeyId = AccessKeyId parameters = get_parameters(user_param, Action, AccessKeyId, Version) param_str = get_param(parameters) StringToSign = get_StringToSign(parameters, param_str) signature = get_signature(StringToSign, AccessKeySecret + '&') build_request(server_url, param_str, signature, AccessKeySecret) ''' #create slb Action = 'CreateLoadBalancer' user_param = {"RegionId":"cn-beijing", "LoadBalancerName":"test-node1", "AddressType":"intranet", "VSwitchId":"vsw-2zevjlczuvp2mkhhch12x"} server_url = 'slb.aliyuncs.com' Version = '2014-05-15' AccessKeySecret='xxx' AccessKeyId='xxxx' get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version) #create user Action = 'CreateUser' user_param = {"UserName":"new.nginxs.net", "DisplayName":"xxxxx", "Email":"xxxx@126.com", "Comments":"测试用户"} server_url = 'ram.aliyuncs.com' AccessKeySecret='xxx' AccessKeyId='xxx' Version = '2015-05-01' get_regions(server_url, Action, user_param, AccessKeySecret, AccessKeyId, Version) ''' 防爬虫:http://new.nginxs.net http://nginxs.blog.51cto.com/ 下期预告=》【STS使用SDK临时授权】
弹性伸缩服务是一个高效和人性化的服务。创建步骤如下,详情可以查询官网文档。 在使用过程中大家会发现,无论是定时还是触发式的增加节点,都无法解决新节点状态和老节点同步的问题,这里提出几个步骤:1.可以创建一个注册中心,注册节点,下载初始化脚本2.创建一个自定义的镜像,在开机启动的时候执行ECS初始化脚本,这个可以是镜像自带,也可以是网络上下载的(建议是网络下载方便变更)3.每次弹性伸缩组增加节点自动在注册中心:注册监控统计,同步代码版本,同步各项配置 根据上面几个关键步骤我们就可以完成完美的弹性伸缩的无缝使用。
小型阿里云架构搭建 1. 创建VPC网络并购买共享带宽包(公网IP) 2. 创建专用网络下ECS 3. 创建专用网络下RDS 4. 创建专用网络下的KvStore(Redis) 5. 创建专用网络下SLB 开始教程 1. 首先需要创建一个VPC网络,使你的服务和公网隔离,保证基本网络安全 1.1 创建VPC 所有在VPC里面创建的应用都会占用一个内网IP 1.1.1 创建交换机 __注意__:有部分区域不支持VPC网络,例如:华北2C区不支持VPC的 1.2 创建网关SNAT 这里的网关和公司路由器差不多是整个VPC流量的出入口功能如下: 端口转发 IP映射 带宽包绑定show: 1.3 创建共享带宽包 因为VPC本身是一个隔离网络,外部无法访问访问,所以我们需要购买宽带,带宽自带公网IP购买带宽的时候需要注意: 需要的公网IP数 按需付费还是按带宽(如果流量稳定建议按带宽,如果浮动大建议按需付费)show: 2. 创建专用网络下ECS 2.1 选择区域 注意:这里分为区域和可用区, 专用网络同一区域内不同可用区是可以通讯(所以你可能看到你华北2A区的主机连接到华北2B区redis)总结有一下几个关注点: 同一地域的VPC下交换机可以是任何区域 同地区不通区域服务器的品类不通 不同区域公共资源储量不一样 2.2 选择网络 2.2.1 这里只介绍专有网络(VPC) 2.2.2 选择你创建好的VPC和虚拟交换机,这决定你的ecs将运行的ip网段 2.2.3 公网地址绑定 注意:公网IP地址尽量别分配,ecs创建时分配的公网IP会跟随ecs一生,无法解绑。它会破还你网络隔离的现状让云主机暴露在公网。 2.2.4 安全组 安全组是个好东西,它可以帮你限制暴露在网络中端口,限制IP访问,达到IP和端口黑名单的效果 2.3 选择实例型号 选对型号很重要决定你的应用单机计算量: 系列1比较老旧版本,硬件没有经过优化同等配置效率要比系列2的低>30%. 系列1的部分主机的IO优化是可以选择的,一旦选择非IO优化就无法挂载SSD和高效云盘 正常情况你可以选择系列2提供对用场景下的机型。 系列3是系列2CPU升级版本。系列之间不能互相升降配。 2.4 选择实例镜像和硬盘 2.3.1 实例镜像 公共镜像提供有centos,Ubuntu,windows(激活码单独收费)等等,记得选择你需要的系统版本 即使你选择错系统后也不需要着急,购买后也可以改系统 2.3.2 硬盘 分为两部分:系统盘和数据盘云盘也分为三种:普通云盘,高效云盘,SSD云盘读写效率也依次提高(价格也不一样) 2.5 选择实例购买量和密码 这里只要注意你的需求是够长期,如果超过1年尽量一次购买这个会有优惠 一次购买多台同等配置直接填好几台 密码这里能改成密钥当然是最好的 3. 创建专用网络下RDS RDS的区域和ECS特性差不多,主要区别在于RDS型号可以使用‘双机高可用’,‘独享套餐(独享CPU和IO)’,‘单机实例’我们目前中小型业务,实时性能要求一般的双机高可用就可以。 默认主备,备份实例只能做故障切换 默认自动备份 支持读写分离 支持sql分析 数据库配置和使用信息概览 性能仪表盘 SQL命令窗口 4. 创建专用网络下的KvStore(Redis) 缓存主要关注三点: 访问速度 存储容量 数据安全 注意:阿里云专用网络内的redis不会提供公网地址 因为都是内存缓存速度已经极快,我们亲身实践中阿里云主从实例可达到6w+的QPS. 阿里云的KvStore架构分为集群版和标准版: 集群版支持最低64G最大256G内存配置费用较为高昂. 标准版:包含单副本和双副本,双副本又包括主从版本和高配版,这里的高配是指__连接数__和__带宽__ 5. 创建专用网络下SLB 介绍 负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务。阿里云因为无法提供可以创建自定义IP的环境,所以我们可以免费使用内网负载均衡分发内部应用流量。 5.1 采购 5.2 添加监听 5.3 添加健康检测 5.4 添加服务器 添加服务器到负载均衡,主要主要的参数就是添加每台机器的权重
下面是最流行的快速持续集成系统,这里选用的都是一些开源的软件,方便大家自行构建,之后会介绍一些持续交付的软件如何与下面的系统进行结合 当然阿里云本身容器服务就带有上图的这些功能,因为本身阿里的docker源 在国内更适合我们在阿里云的VPC网络使用容器服务,无论是速度还是体验上要比docker官方的云要好很多。
介绍 虽然使用阿里云已经3年多了,但是2017年6月5日第一次使用博客功能 测试一下__Markdown__好不好用 文章 这么多年公有云和私有云的使用在这里公布 阿里云中小型通用架构 阿里云大型通用架构 VPC SLB ECS RDS KvStore快速入门 10分钟教你使用阿里云API [谈谈如何让你的架构更健壮]() [如何做一个合格的运维?]() [如何提高运维的睡眠质量?]() [互联网的发展方向“下一个风口”在哪?我要怎么才能站在风口走的更远一些?]() 上面是我们经常会去想的几个问题,我也想了很久,得出了一部分心得之后会分享在我的博客里 结束
如果是移动应用统计方式如下:
1.划定街区区域范围(经纬度区域)
2.统计单位时间区域内进入和出去的移动设备
1.可能你访问的是目录,web服务不允许直接访问目录
2.可能你的文件权限不对
好像没有办法直接备份,只能你想备份哪个用户邮箱就用foxmail下载邮件,然后使用foxmail再归档成文件就行
感觉香港的还不错
这个配置投递需要先填写 accesskey,然后再指定你·日志数据列·映射到·maxcompute列·之间的关系。
你这个应该是接入了百度或者谷歌等广告联盟类的东西,他们会自动推荐广告,也就是可能你最近看过的东西都可能被推荐
一般会有短信和邮件的通知,过后会直接停止提供解析服务
1.首先通过RAM给对应员工创建子账户并开启web控制台
2.然后每个人在数据库创建一个独立用户。
3.在数据管理里面对指定子用户授权指定数据库或服务器
4.这样员工只能通过DMS才能登录平台,一旦员工离职可以先关闭RAM对应子用户,离职人员就不可再登陆,再关闭对应数据库或服务器账户。
正确流程:购买域名==》实名认证(域名解析服务才可以使用)==》域名备案(才可能合法正常指定国内服务器)==》绑定域名(可以通过域名访问当服务器)
如果域名已备案,每增加一个机房的解析这个域名就需要在一个机房进行备案接入(公有云和机房同理)
使用代理,例如http代理或http负载均衡
你的专用网络是不是安全组没有开启端口,或者没有绑定公网IP到这个主机
这个是网站请求失败,重新刷新下试试
账户密码不对吧
国外区域没有备案流程
公司与公司之间有合同条款限制比 人和公司之间的约束要大
你可以把你的yum源换成离你更近的,例如你是哪个公有云的可以切换到公有云,如果是国内的就用国内的。
如果其它的都慢可以自建一个repo
你的web服务里面是不是只配置了www,没有配置@的
负载均衡是http负载均衡模式么?
可以实时elastsearch
看看是不是ECS的带宽是按流量付费的