公有云——天翼云4.0及负载均衡相关介绍

公有云——天翼云4.0及负载均衡相关介绍作为第七代云主机 采用第三代 Intel 至强可扩展处理器 IceLake 基于新一代虚拟化平台 使用 NUMA 绑定技术

大家好,欢迎来到IT知识分享网。

目录

1 云计算的价值

1.1 公有云的价值

1.2 公有云的一条龙服务

1.3 天翼云强推的现有产品

1.3.1 云电脑

1.3.2 Aone (All In One):又称Access One,该产品基于CDN网络,涵盖Web应用防火墙(WAF) 和 CDN加速。

2 云上架构

2.1 架构图

2.2 负载均衡算法

3 资源池——天翼云4.0

3.1 广义的天翼云4.0——SateCloud


1 云计算的价值

1.1 公有云的价值

快速部署 弹性伸缩 按需使用 高可用 简化易用 开放共享

1.2 公有云的一条龙服务

服务提供涵盖:

上云咨询、设计规划、部署迁移、测试调优、运维支撑

天翼云的核心优势:

云网融合

什么是云网融合

云网融合 = 渠道+产品+技术+运维+安全+服务

1.3 天翼云强推的现有产品
1.3.1 云电脑
1.3.2 Aone (All In One):又称Access One,该产品基于CDN网络,涵盖Web应用防火墙(WAF) 和 CDN加速。

2 云上架构

2.1 架构图

下面一图看懂云架构

公有云——天翼云4.0及负载均衡相关介绍
云架构

2.2 负载均衡算法

拓展知识——基于分布式系统的特性,我们先普及一下负载均衡算法(此处只重点介绍公有云中常用的三种)

公有云——天翼云4.0及负载均衡相关介绍

源地址哈希法(Hash)

源地址哈希法是根据请求来源的地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一源地址的请求,当服务器列表不变时,它每次都会映射到同一台服务器进行访问。

具体可以参考这位老师的文章:负载均衡算法–源地址哈希法(Hash)-CSDN博客

最少连接数(Least Connections)

将新的请求发送到同时连接最少的服务实例。

代码示例,以下是使用 Least Connections 负载均衡算法,实现了对 HTTP 和 HTTPS 两种协议的负载均衡:

import http.client import http.server import socket import ssl import threading from typing import List # HTTP server configuration HTTP_HOSTNAME = 'localhost' HTTP_PORT = 8080 # HTTPS server configuration HTTPS_HOSTNAME = 'localhost' HTTPS_PORT = 8443 SSL_CERTIFICATE = 'localhost.crt' SSL_PRIVATE_KEY = 'localhost.key' # Servers and their weights # Format: (hostname, port, weight) SERVERS = [ ('localhost', 5001, 3), ('localhost', 5002, 2), ('localhost', 5003, 1) ] class LeastConnectionsBalancer: def __init__(self, servers: List): self.servers = servers self.connections = [0 for _ in servers] self.mutex = threading.Lock() def get_best_server(self): with self.mutex: index = 0 current_connections = self.connections[0] for i, conn in enumerate(self.connections[1:]): if conn < current_connections: index = i + 1 current_connections = conn self.connections[index] += 1 return self.servers[index] def release_server(self, server_index): with self.mutex: self.connections[server_index] -= 1 class LoadBalancerHTTPHandler(http.server.BaseHTTPRequestHandler): balancer = LeastConnectionsBalancer(SERVERS) def do_GET(self): server = self.balancer.get_best_server() conn = http.client.HTTPConnection(server[0], server[1]) conn.request('GET', self.path) response = conn.getresponse() self.send_response(response.status) for header, value in response.getheaders(): self.send_header(header, value) self.end_headers() self.wfile.write(response.read()) conn.close() self.balancer.release_server(SERVERS.index(server)) class LoadBalancerHTTPSHandler(http.server.BaseHTTPRequestHandler): balancer = LeastConnectionsBalancer(SERVERS) def do_GET(self): server = self.balancer.get_best_server() context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE conn = http.client.HTTPSConnection(server[0], server[1], context=context) conn.request('GET', self.path) response = conn.getresponse() self.send_response(response.status) for header, value in response.getheaders(): self.send_header(header, value) self.end_headers() self.wfile.write(response.read()) conn.close() self.balancer.release_server(SERVERS.index(server)) if __name__ == '__main__': # Start HTTP server in a new thread. http_server = http.server.HTTPServer((HTTP_HOSTNAME, HTTP_PORT), LoadBalancerHTTPHandler) http_thread = threading.Thread(target=http_server.serve_forever) http_thread.daemon = True http_thread.start() print('HTTP server started on %s:%d' % (HTTP_HOSTNAME, HTTP_PORT)) # Start HTTPS server in a new thread. context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.load_cert_chain(SSL_CERTIFICATE, SSL_PRIVATE_KEY) https_server = http.server.HTTPServer((HTTPS_HOSTNAME, HTTPS_PORT), LoadBalancerHTTPSHandler) https_server.socket = context.wrap_socket(https_server.socket, server_side=True) https_thread = threading.Thread(target=https_server.serve_forever) https_thread.daemon = True https_thread.start() print('HTTPS server started on %s:%d' % (HTTPS_HOSTNAME, HTTPS_PORT)) # Wait for threads to finish. http_thread.join() https_thread.join()

③静态算法——轮询(Round Robin):将客户端请求按顺序发送到不同的服务实例。服务通常需要是无状态的。2.粘性轮询(Sticky Round Robin):是轮询算法的改进版本。如果Alice的第一个请求发送到服务A,则以下请求也发送到服务A。3.权重轮询(Weighted Round Robin):管理员可以为每个服务指定权重。权重更高的服务处理的请求更多。4.散列(Hash):该算法对传入请求的IP或URL应用哈希函数。根据哈希函数结果,将请求路由到相关实例。

下面为代码示例,轮询算法的实现非常简单,可以定义一个服务器的列表和当前服务器指针: 

# 服务器列表 servers = ["ServerA", "ServerB", "ServerC"] # 当前服务器 current_server = 0 # 轮询算法 if(req): # 选择当前服务器来处理请求 process_request(servers[current_server]) # 将当前服务器移到服务器列表的末尾 if current_server == length(servers): current_server = 0 else: # 指针+1 current_server += 1

当客户端有新的请求到达时,负载均衡器会选择服务器指针(current_server)指向的服务器来处理请求,然后将当前服务器指针移到下一个服务器(current_server += 1), 如果current_server=服务器总数,则把current_server设置为0,进行下一场轮询。

3 资源池——天翼云4.0

广义的天翼云4.0——SateCloud

全面自研——全新一代,始于2021,拥有 分布式云架构云网融合创新 两大核心优势,从“2+4+21+X”的天翼云3.0到“千城万池”的天翼云4.0

4 “西南1”产品介绍

4.1 多AZ ——公有云的核心灵魂

作为第七代云主机,采用第三代Intel至强可扩展处理器(Ice Lake),基于新一代虚拟化平台,使用NUMA绑定技术。

4.2 云容灾 CT—CDR(Cloud disaster recovery)

关键特性(注意 ,容灾迁移两边的地址不一样):

ESC跨AZ容灾能力

PS : 块存储不加容灾能力无法跨AZ容灾

4.3 服务能力

4.3.1 内网 DNS 

4.3.2 数据迁移服务

注意,云硬盘并非利用了纠错冗余码技术,而是采用了三分块技术使得数据不丢失。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/106559.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信