华为云用户手册
-
集群(Cluster) 集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。您可以理解为集群是“同一个子网中一个或多个弹性云服务器(又称:节点)”通过相关技术组合而成的计算机群体,为容器运行提供了计算资源池。 云容器引擎支持的集群类型如下: 集群类型 描述 CCE Standard集群 CCE Standard集群是云容器引擎服务的标准版本集群,提供商用级容器集群服务,并完全兼容开源 Kubernetes 集群标准功能。 CCE Standard集群为您提供简单、低成本、高可用的解决方案,无需管理和运维控制节点,并且可根据业务场景选择使用容器隧道网络模型或VPC网络模型,适合对性能和规模没有特殊要求的通用场景。 CCE Turbo 集群 CCE Turbo集群是基于云原生基础设施构建的云原生2.0容器引擎服务,具备软硬协同、网络无损、安全可靠、调度智能的优势,为用户提供一站式、高性价比的全新容器服务体验。 CCE Turbo集群提供了面向大规模高性能的场景云原生2.0网络,容器直接从VPC网段内分配IP地址,容器和节点可以分属不同子网,支持VPC内的外部网络与容器IP直通,享有高性能。 CCE Autopilot集群 CCE Autopilot是云容器引擎服务推出的Serverless版集群,提供免运维的容器服务,并提供经过优化的Kubernetes兼容能力。 CCE Autopilot集群提供了无用户节点的部署方式,简化了应用部署流程。您无需购买节点,也无需对节点的部署、管理和安全性进行维护,只需要关注应用业务逻辑的实现,可以大幅降低您的运维成本,提高应用程序的可靠性和可扩展性。 关于集群的更多操作请参见购买Standard/Turbo集群。
-
Readiness Probe高级配置 与Liveness Probe相同,Readiness Probe也有同样的高级配置选项,上面nginx Pod的describe命令回显如下: Readiness: exec [ls /var/ready] delay=0s timeout=1s period=10s #success=1 #failure=3 这一行表示Readiness Probe的具体参数配置,其含义如下: delay=0s 表示容器启动后立即开始探测,没有延迟时间 timeout=1s 表示容器必须在1s内做出相应反馈给probe,否则视为1次探测失败 period=10s 表示每10s探测一次 #success=1 探测连续1次成功表示成功 #failure=3 探测连续3次失败表示失败 这些是创建时默认设置的,您也可以手动配置,如下所示。 readinessProbe: # Readiness Probe exec: # 定义 ls /readiness/ready 命令 command: - ls - /readiness/ready initialDelaySeconds: 10 # 容器启动后多久开始探测 timeoutSeconds: 2 # 表示容器必须在2s内做出相应反馈给probe,否则视为探测失败 periodSeconds: 30 # 探测周期,每30s探测一次 successThreshold: 1 # 连续探测1次成功表示成功 failureThreshold: 3 # 连续探测3次失败表示失败
-
Exec Exec方式与HTTP GET方式一致,如下所示,这个探针执行ls /ready命令,如果这个文件存在,则返回0,说明Pod就绪了,否则返回其他状态码。 使用以下YAML文件创建Deployment。假设使用的nginx镜像中缺少/ready文件,验证该Deployment中的Pod是否能够就绪。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi readinessProbe: # Readiness Probe exec: # 定义 ls /ready 命令 command: - ls - /ready imagePullSecrets: - name: default-secret 将上面Deployment的定义保存到deploy-ready.yaml文件中,删除之前创建的Deployment,用deploy-ready.yaml创建这个Deployment。 # kubectl delete deploy nginx deployment.apps "nginx" deleted # kubectl create -f deploy-ready.yaml deployment.apps/nginx created 如下所示,nginx镜像不包含/ready这个文件,所以在创建的Pod不在Ready状态,即READY这一列的值为0/1。 # kubectl get po NAME READY STATUS RESTARTS AGE nginx-7955fd7786-686hp 0/1 Running 0 7s nginx-7955fd7786-9tgwq 0/1 Running 0 7s nginx-7955fd7786-bqsbj 0/1 Running 0 7s 创建Service。 apiVersion: v1 kind: Service metadata: name: nginx spec: selector: app: nginx ports: - name: service0 targetPort: 80 port: 8080 protocol: TCP type: ClusterIP 查看Service,发现Endpoints一行的值为空,表示没有Endpoints。 $ kubectl describe svc nginx Name: nginx ...... Endpoints: ...... 如果此时给容器中创建一个/ready的文件,让Readiness Probe成功,则容器会处于Ready状态。再查看Pod和Endpoints,发现创建了/ready文件的容器已经Ready,Endpoints也已经添加。 # kubectl exec nginx-7955fd7786-686hp -- touch /ready # kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP nginx-7955fd7786-686hp 1/1 Running 0 10m 192.168.93.169 nginx-7955fd7786-9tgwq 0/1 Running 0 10m 192.168.166.130 nginx-7955fd7786-bqsbj 0/1 Running 0 10m 192.168.252.160 # kubectl get endpoints NAME ENDPOINTS AGE nginx 192.168.93.169:80 14d
-
TCP Socket 同样,TCP Socket类型的探针如下所示。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi readinessProbe: # readinessProbe tcpSocket: # TCP Socket定义 port: 80 imagePullSecrets: - name: default-secret
-
HTTP GET Readiness Probe的配置与存活探针(liveness probe)一样,在Pod Template的containers中进行配置。如下所示,该工作负载中涉及3个Pod,且每个Pod中仅涉及一个容器。当每个Pod中的容器探测成功后,Pod将被标记为“就绪(Ready)”状态。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi readinessProbe: # readinessProbe httpGet: # HTTP GET定义 path: /read port: 80 imagePullSecrets: - name: default-secret
-
容器与Docker 容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。 容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟化了操作系统而不是硬件,更加便携和高效。 图1 容器 vs 虚拟机 相比于使用虚拟机,容器有如下优点: 更高效地利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,容器对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 更快速的启动时间 传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间,大大节约了开发、测试、部署的时间。 一致的运行环境 开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些问题并未在开发过程中被发现。而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。 更轻松的迁移 由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机,其运行结果是一致的。因此可以很轻易地将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。 更轻松的维护和扩展 Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker团队同各个开源项目团队一起维护了大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
-
Docker容器典型使用流程 Docker容器有如下三个主要概念: 镜像:Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。 镜像仓库:Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。 容器:Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。 典型的使用流程如图2所示: 图2 Docker容器典型使用流程 首先开发者在开发环境机器上开发应用并制作镜像。 Docker执行命令,构建镜像并存储在机器上。 开发者发送上传镜像命令。 Docker收到命令后,将本地镜像上传到镜像仓库。 开发者向生产环境机器发送运行镜像命令。 生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。
-
为什么需要Label 当资源变得非常多的时候,如何分类管理就非常重要了,Kubernetes提供了一种机制来为资源分类,那就是Label(标签)。Label非常简单,但是却很强大,Kubernetes中几乎所有资源都可以用Label来组织。 Label的具体形式是key-value的标记对,可以在创建资源的时候设置,也可以在后期添加和修改。 以Pod为例,当Pod变得多起来后,就显得杂乱且难以管理,如下图所示。 图1 没有分类组织的Pod 如果我们为Pod打上不同标签,那情况就完全不同了,如下图所示。 图2 使用Label组织的Pod
-
修改Label 对于已存在的Label,如果要修改的话,需要在命令中带上--overwrite,如下所示。 $ kubectl label pod nginx env=debug --overwrite pod/nginx labeled $ kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 50s app=nginx,creation_method=manual,env=debug
-
添加Label Label的形式为key-value形式,使用非常简单,如下,为Pod设置了app=nginx和env=prod两个Label。 apiVersion: v1 kind: Pod metadata: name: nginx labels: # 为Pod设置两个Label app: nginx env: prod spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi imagePullSecrets: - name: default-secret Pod有了Label后,在查询Pod的时候带上--show-labels就可以看到Pod的Label。 $ kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 50s app=nginx,env=prod 还可以使用-L只查询某些固定的Label。 $ kubectl get pod -L app,env NAME READY STATUS RESTARTS AGE APP ENV nginx 1/1 Running 0 1m nginx prod 对已存在的Pod,可以直接使用kubectl label命令直接添加Label。 $ kubectl label pod nginx creation_method=manual pod/nginx labeled $ kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 50s app=nginx, creation_method=manual,env=prod
-
为什么需要Namespace Label虽然好,但只用Label的话,那Label会非常多,有时候会有重叠,而且每次查询之类的动作都带一堆Label非常不方便。Kubernetes提供了Namespace来做资源组织和划分,使用多Namespace可以将包含很多组件的系统分成不同的组。Namespace也可以用来做多租户划分,这样多个团队可以共用一个集群,使用的资源用Namespace划分开。 不同的Namespace下的资源名称可以相同,Kubernetes中大部分资源可以用Namespace划分,不过有些资源不行,例如Node、PV等,它们属于全局资源,不属于某一个Namespace,后面会逐步接触到。 通过如下命令可以查询到当前集群下的Namespace。 $ kubectl get ns NAME STATUS AGE default Active 36m kube-node-realease Active 36m kube-public Active 36m kube-system Active 36m 到目前为止,我们都是在default Namespace下操作,当使用kubectl get而不指定Namespace时,默认为default Namespace。 看下kube-system下面有些什么东西。 $ kubectl get po --namespace=kube-system NAME READY STATUS RESTARTS AGE coredns-7689f8bdf-295rk 1/1 Running 0 9m11s coredns-7689f8bdf-h7n68 1/1 Running 0 11m everest-csi-controller-6d796fb9c5-v22df 2/2 Running 0 9m11s everest-csi-driver-snzrr 1/1 Running 0 12m everest-csi-driver-ttj28 1/1 Running 0 12m everest-csi-driver-wtrk6 1/1 Running 0 12m icagent-2kz8g 1/1 Running 0 12m icagent-hjz4h 1/1 Running 0 12m icagent-m4bbl 1/1 Running 0 12m 可以看到kube-system有很多Pod,其中coredns是用于做服务发现、everest-csi是用于对接存储服务、icagent是用于对接监控系统。 这些通用的、必须的应用放在kube-system这个命名空间中,能够做到与其他Pod之间隔离,在其他命名空间中不会看到kube-system这个命名空间中的东西,不会造成影响。
-
创建Namespace 使用如下方式定义Namespace。 apiVersion: v1 kind: Namespace metadata: name: custom-namespace 使用kubectl命令创建。 $ kubectl create -f custom-namespace.yaml namespace/custom-namespace created 您还可以使用kubectl create namespace命令创建。 $ kubectl create namespace custom-namespace namespace/custom-namespace created 在指定Namespace下创建资源。 $ kubectl create -f nginx.yaml -n custom-namespace pod/nginx created 这样在custom-namespace下,就创建了一个名为nginx的Pod。
-
路由到多个服务 Ingress可以同时路由到多个服务,配置如下所示。 当访问“http://foo.bar.com/foo”时,访问的是“s1:80”后端。 当访问“http://foo.bar.com/bar”时,访问的是“s2:80”后端。 Ingress转发策略中的path路径要求后端应用内存在相同的路径,否则转发无法生效。 例如,Nginx应用默认的Web访问路径为“/usr/share/nginx/html”,在为Ingress转发策略添加“/test”路径时,需要应用的Web访问路径下也包含相同路径,即“/usr/share/nginx/html/test”,否则将返回404。 ... spec: rules: - host: foo.bar.com # host地址 http: paths: - path: "/foo" backend: service: name: s1 port: number: 80 - path: "/bar" backend: service: name: s2 port: number: 80 ...
-
Ingress工作机制 要想使用Ingress功能,必须在Kubernetes集群上安装Ingress Controller。Ingress Controller有很多种实现,最常见的就是Kubernetes官方维护的ingress-nginx;不同厂商通常有自己的实现,例如CCE使用弹性负载均衡服务ELB实现Ingress的七层负载均衡。 外部请求首先到达Ingress Controller,Ingress Controller根据Ingress的路由规则,查找到对应的Service,进而通过Endpoint查询到Pod的IP地址,然后将请求转发给Pod。 图2 Ingress工作机制
-
创建Ingress 下面例子中,使用http协议,关联的后端Service为“nginx:8080”,使用ELB作为Ingress控制器(metadata.annotations字段都是指定使用哪个ELB实例),当访问“http://192.168.10.155:8080/”时,流量转发“nginx:8080”对应的Service,从而将流量转发到对应Pod。 示例如下(适用于v1.23及以上版本的集群): apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress annotations: kubernetes.io/elb.class: union kubernetes.io/elb.port: '8080' kubernetes.io/elb.id: aa7cf5ec-7218-4c43-98d4-c36c0744667a spec: rules: - host: '' http: paths: - path: / backend: service: name: nginx port: number: 8080 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: cce
-
授权 GaussDB (DWS)通过GRANT语法对角色和用户进行授权操作,普通用户如果要访问某张表,如果没有系统管理员dbadmin或者表的owner进行GRANT授权,是无法访问的,此默认机制有效地控制用户对数据的访问,防止数据泄露。 使用GRANT命令进行用户授权包括以下三种场景: 将系统权限授权给角色或用户 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和 LOG IN。 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。 将数据库对象授权给角色或用户 将数据库对象(表和视图、指定字段、数据库、函数、模式等)的相关权限授予特定角色或用户; GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。 GaussDB(DWS)会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。当然,对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外,这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。 将角色或用户的权限授权给其他角色或用户 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。
-
GaussDB(DWS)权限 默认情况下, IAM 管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 GaussDB(DWS)部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京四)对应的项目(cn-north-4)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问GaussDB(DWS)时,需要先切换至授权区域。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对GaussDB(DWS)服务,IAM管理员能够控制IAM用户仅能对某一类资源进行指定的管理操作。 多数细粒度策略以API接口为粒度进行权限拆分,GaussDB(DWS)支持的API授权项请参见权限策略和授权项。 细粒度策略的创建方法,请参见GaussDB(DWS)自定义策略。 如表1所示,包括了GaussDB(DWS)的所有系统权限。 表1 GaussDB(DWS)系统权限 系统角色/策略名称 描述 类别 依赖关系 DWS ReadOnlyAccess 数据仓库 服务只读权限,拥有该权限的用户仅能查看数据仓库服务资源。 系统策略 无 DWS FullAccess 数据仓库服务数据库管理员权限,拥有数据仓库服务所有权限。 系统策略 无 DWS Administrator DWS数据库管理员权限,拥有对数据仓库服务的所有执行权限。 拥有VPC Administrator权限的GaussDB(DWS)用户可以创建VPC或子网。 拥有 云监控 Administrator权限的GaussDB(DWS)用户,可以查看GaussDB(DWS)集群的监控指标信息。 使用此权限场景下,如果使用到创建委托场景,还需配置对应Security Administrator权限。 系统角色 依赖Tenant Guest和Server Administrator策略,需要在同项目中勾选依赖的策略。 DWS Database Access GaussDB(DWS)数据库访问权限,拥有该权限的用户,可以基于IAM用户生成临时数据库用户凭证以连接GaussDB(DWS)集群数据库。 系统角色 依赖DWS Administrator,需要在同项目中勾选依赖的策略。 表2列出了GaussDB(DWS)常用操作与系统权限的授权关系,您可以参照该表选择合适的系统策略。 每个区域的每个项目首次使用弹性IP绑定功能时,系统将提示创建名称为“DWSAccessVPC”委托以授权GaussDB(DWS)访问VPC。授权成功后,GaussDB(DWS)可以在绑定弹性IP的虚拟机故障时切换至健康虚拟机。 在实际业务中,除了具备策略权限外还需要给不同角色的用户授予不同的资源操作权限。例如创建快照、重启集群等操作,详情请参见策略语法:细粒度策略。 默认情况下,只有华为云账号或拥有Security Administrator权限的用户才具备查询委托和创建委托的权限。账号中的IAM用户,默认没有查询委托和创建委托的权限,在使用弹性IP绑定功能时页面会屏蔽绑定按钮,此时需联系有“DWS Administrator”权限的用户在当前页面完成对GaussDB(DWS)的委托授权,详情请参见委托GaussDB(DWS)管理资源。 表2 GaussDB(DWS)常用操作与系统权限的关系 操作 DWS FullAccess DWS ReadOnlyAccess DWS Administrator DWS Database Access 创建/恢复集群 √ x √ x 获取集群列表 √ √ √ x 获取单个集群详情 √ √ √ x 设置自动快照 √ x √ x 设置安全参数/参数组 √ x √ x 重启集群 √ x √ x 扩容集群 √ x √ x 重置密码 √ x √ x 删除集群 √ x √ x 设置可维护时间段 √ x √ x 绑定EIP x x √ x 解绑EIP x x √ x 创建DNS 域名 √ x √ x 释放DNS域名 √ x √ x 修改DNS域名 √ x √ x 创建 MRS 连接 √ x √ x 更新MRS连接 √ x √ x 删除MRS连接 √ x √ x 添加/删除标签 √ x √ x 编辑标签 √ x √ x 创建快照 √ x √ x 获取快照列表 √ √ √ √ 删除快照 √ x √ x 复制快照 √ x √ x
-
产品类型概述 存算一体:面向数据分析场景,为用户提供高性能、高扩展、高可靠、高安全、低时延、易运维的企业级数仓服务,支持2048节点、20PB级超大规模数据分析能力,适用于“库、仓、市、湖”一体化的融合分析业务。 存算分离:采用存算分离云原生架构,计算、存储分层弹性伸缩,极致性价比,采用多逻辑集群(Virtual Warehouse,以下简称VW)共享存储技术,实现不同负载的计算隔离和并发扩展,适用于OLAP分析场景。 GaussDB(DWS)数仓之间暂不支持互相访问,用户可通过创建的OBS外表,将两个数据库关联在同一个数据目录下进行数据查询。
-
功能特性对比 表1 功能特性对比 功能模块 功能模块 存算一体 存算分离 总览 资源 支持 支持 告警 支持 支持 近期事件 支持 支持 集群监控指标(DMS) 支持(单机版不支持) 支持 数据 - 支持 支持 集群管理 SQL编辑器 支持 支持 监控面板(DMS) 支持(单机版不支持) 支持 查看监控指标(Cloud Eye) 支持(单机版不支持) 支持 重启 支持 支持 启动 支持 支持 停止 支持 支持 扩容 支持(单机版不支持) 支持 缩容 支持(单机版不支持) 支持 重分布 支持(单机版不支持) 支持,备注1 查看重分布详情 支持(单机版不支持) 支持 弹性变更规格 支持 支持 经典变更规格 支持(单机版不支持) 不支持 重置密码 支持 支持 创建快照 支持(单机版不支持) 支持 解除只读 支持 支持 删除 支持 支持 管理CN节点 支持(单机版不支持) 支持 磁盘扩容 支持 支持 集群详情 基本信息 支持 支持 ELB负载均衡 支持(单机版不支持) 支持 资源管理 支持(单机版不支持) 支持 智能运维 支持(单机版不支持) 支持 逻辑集群 支持(单机版不支持) 支持 快照 支持(单机版不支持) 支持 参数修改 支持 支持 安全设置 支持 支持 MRS数据源 支持(单机版不支持) 支持 标签 支持 支持 节点管理 支持(单机版不支持) 支持 升级管理 支持(单机版不支持) 支持 日志服务 支持(单机版不支持) 支持 用户管理 支持(单机版不支持) 支持 集成 数据迁移 支持(单机版不支持) 支持 容灾管理 容灾管理 支持(单机版不支持) 不支持 快照管理 恢复 支持(单机版不支持) 支持 删除 支持(单机版不支持) 支持 复制 支持(单机版不支持) 支持 事件管理 事件管理(通用) 支持 支持 告警管理 告警管理 支持 支持 连接客户端 连接客户端 支持 支持 其他模块 巡检 支持(单机版不支持) 支持 智能运维 支持(单机版不支持) 支持 节点修复 支持(单机版不支持) 支持 租户侧温备 支持(单机版不支持) 支持 备注1:存算分离表数据存储在OBS上,无需重分布,但是元数据和索引存储在本地,仍然需要进行重分布。存算分离表在重分布时,表只支持读,元数据的重分布时间一般比较短,但是,如果表上创建了索引,索引会影响重分布的性能,重分布完成时间与索引的数据量成正比关系,在此期间,表只支持读。 存算一体(单机部署)不支持分布式模式,因此不支持扩缩容、逻辑集群、资源管理等操作。 存算一体(单机部署)不支持快照、监控面板、MRS数据源等功能。 存算一体(单机部署)中,原有指定分布列语法将被忽略,此外不支持job定时任务、SEQUENCE类型、HDFS/OBS外表导入导出(其中OBS外表导入导出8.2.0及以上版本支持)、多温存储、自增分区表等功能。 存算分离集群仅9.0.2及以上集群版本支持快照功能。
-
存算一体与存算分离产品形态对比 表2 存算分离与存算一体差异 数仓类型 存算一体 存算分离 存储介质 数据存储在计算节点的本地磁盘。 列存数据存储在华为云对象存储,本地磁盘主要作为OBS数据的查询缓存,行存仍然存储在计算节点本地磁盘。 产品优势 数据存储在计算节点本地,性能高。 存算分离,计算、存储分层弹性,存储按需使用,计算快速伸缩,无限算力、无限容量。 数据存储在对象存储上,存储成本更低,多VW支持的并发更高。 支持数据共享,支持湖仓一体。
-
存算分离架构 GaussDB(DWS)全新推出云原生数仓存算分离版本,利用云基础设施提供的资源池化和海量存储能力,结合MPP数据库技术,采用计算存储分离架构,实现了极致弹性、实时入库、数据实时共享和湖仓一体等特性。 云原生数仓存算分离采用计算存储分离架构,解决了计算存储必须等比例缩放的问题。赋能用户面向业务峰谷时,对计算能力进行快速且独立的扩缩要求,同时保证存储无限扩展、按需付费,快速、敏捷的响应业务变化,同时具有更高的性价比,进一步助力企业降本增效。 存算分离具有以下优势: 湖仓一体:提供简单、易维护的湖仓一体体验,无缝对接 DLI ,支持元数据自动导入、外部表查询加速、内外表关联查询,支持 数据湖 格式读写,简化数据入湖入仓。 实时写入:提供H-Store存储引擎,对实时写入场景进行了设计优化,支持高吞吐实时写入与更新,同时支持大批量写入场景。 极致弹性:计算资源快速伸缩,存储空间按需使用,同时大幅度降低存储成本。历史数据无需再迁移到其他存储介质上,让数据分析更简单,一站式解决金融、互联网等行业快速增长的数据分析需求。 数据共享:一份数据承载多样负载,数据实时共享,多写多读的使用模式,在支持不同业务数据快速共享的同时,具备良好的计算资源隔离能力。 图5 存算分离架构 极致弹性 逻辑集群(Virtual Warehouse) 随业务需求并发扩展。 多VW间数据实时共享,一份数据承载多样负载,无需拷贝。 通过多VW实现吞吐/并发的线性提升,同时具备良好的读写分离、负载隔离能力。 湖仓一体 数据湖与数据仓库数据无缝混合查询。 数据湖分析体验数仓的极致性能和精准管控度。
-
存算一体架构 GaussDB(DWS)基于Shared-nothing分布式架构,具备MPP(Massively Parallel Processing)大规模并行处理引擎,由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。 图4 产品架构 应用层 数据加载工具、ETL(Extract-Transform-Load)工具、以及商业智能BI工具、数据挖掘和分析工具,均可以通过标准接口与GaussDB(DWS)集成。GaussDB(DWS)兼容PostgreSQL生态,且SQL语法进行了兼容MySQL、Oracle和Teradata的处理。应用只需做少量改动即可向GaussDB(DWS)平滑迁移。 接口 支持应用程序通过标准JDBC和ODBC连接GaussDB(DWS)。 GaussDB(DWS) 一个GaussDB(DWS)集群由多个在相同子网中的相同规格的节点组成,共同提供服务。集群的每个DN负责存储数据,其存储介质是磁盘。协调节点(Coordinator)负责接收来自应用的访问请求,并向客户端返回执行结果。此外,协调节点还负责分解任务,并调度任务分片在各DN上并行执行。 自动数据备份 支持将集群快照自动备份到EB级 对象存储服务 OBS(Object Storage Service)中,方便利用业务空闲期对集群做周期备份以保证集群异常后的数据恢复。 快照是GaussDB(DWS)集群在某一时间点的完整备份,记录了该时刻指定集群的所有配置数据和业务数据。 工具链 提供了数据并行加载工具GDS(General Data Service)、SQL语法迁移工具DSC(Database Schema Convertor)、SQL开发工具Data Studio、迁移工具GDS-Kafka,并支持通过控制台对集群进行运维监控。
-
集群逻辑架构 GaussDB(DWS)集群逻辑架构如图1所示。实例的详细介绍请参见表1。 图1 集群逻辑架构图 表1 集群架构说明 名称 描述 说明 CM 集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。 CM由CM Agent、OM Monitor和CM Server组成。 CM Agent:负责监控所在主机上主备GTM、CN、主备DN的运行状态并将状态上报给CM Server。同时负责执行CM Server下发的仲裁指令。集群的每台主机上均有CM Agent进程。 OM Monitor:看护CM Agent的定时任务,其唯一的任务是在CM Agent停止的情况下将CM Agent重启。如果CM Agent重启不了,则整个主机不可用,需要人工干预。 说明: CM Agent重启的情况很少发生,如果出现可能是因为系统资源不够用导致无法启动新进程。 CM Server:根据CM Agent上报的实例状态判定当前状态是否正常,是否需要修复,并下发指令给CM Agent执行。 GaussDB(DWS)提供了CM Server的主备实例方案,以保证集群管理系统本身的高可用性。正常情况下,CM Agent连接主CM Server,在主CM Server发生故障的情况下,备CM Server会主动升为主CM Server,避免出现CM Server单点故障。 GTM 全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。 整个集群只有一组GTM:主、备GTM各一个。 WLM 工作负载管理器(Workload Manager)。控制系统资源的分配,防止过量业务负载对系统的冲击而导致业务拥塞和系统崩溃。 不同于集群中的实例(GTM、CM、CN、DN)模块,不需要在安装过程中指定主机名称。安装程序会自动在各主机上安装此模块。 CN 协调节点(Coordinator)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。 集群中,CN有多个并且CN的角色是对等的(执行DML语句时连接到任何一个CN都可以得到一致的结果)。只需要在CN和应用程序之间增加一个负载均衡器,使得CN对应用是透明的。CN故障时,由负载均衡自动路由连接到另外一个CN,请参见集群绑定和解绑ELB。 当前分布式事务框架下无法避免CN之间的互连,为了减少GTM上线程过多导致负载过大,建议CN配置数目≤10个。 GaussDB(DWS)通过CCN(Central Coordinator )负责集群内的资源全局负载控制,以实现自适应的动态负载管理。CM在第一次集群启动时,通过集群部署形式,选择编号最小的CN作为CCN。若CCN故障之后,由CM选择新的CCN进行替换。 DN 数据节点(Datanode)。负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。 在集群中,DN有多个。每个DN存储了一部分数据。GaussDB(DWS)对DN提供了高可用方案:主DN、备DN、从备DN。三者的工作原理如下: 主、备DN同步数据期间,如果主DN突然故障不可用,备DN会升为主DN。 在原主DN恢复前,新升为主的DN会将数据日志同步到从备DN。 原主DN恢复后将成为备DN,并且会使用“从备DN”上的数据日志恢复异常期间的数据。 也就是说从备DN永远只作为从备使用,不会因为主DN或备DN故障而升级为主DN或备DN,从备DN只存放原主DN故障时,新升为主的DN同步到从备DN的Xlog数据和数据通道复制产生的数据。因此从备DN不额外占用存储资源,相比传统三副本节约了三分之一的存储空间。 Storage 服务器的本地存储资源,持久化存储数据。 - 集群的每个DN上负责存储数据,其存储介质也是磁盘。图2从逻辑上介绍了每个DN上都有哪些对象,以及这些对象之间的关系,其中: Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 数据有三种分布方式,可以在建表的时候指定:REPLICATION、ROUNDROBIN 、HASH。 图2 数据库逻辑结构图
-
资源访问控制(IAM权限控制) 如果您需要对华为云上的GaussDB(DWS)资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用 统一身份认证 服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制华为云资源的访问。通过IAM,您可以在华为云账号中给员工创建IAM用户,并授权控制他们对华为云资源的访问范围。 场景一:您的员工中有负责软件开发的人员,您希望他们拥有GaussDB(DWS)的使用权限,但是不希望他们拥有删除集群等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用GaussDB(DWS),但是不允许删除集群的权限,控制他们对GaussDB(DWS)资源的使用范围。 场景二:您希望您的员工只有GaussDB(DWS)的资源使用权限,不希望拥有其他云资源的权限,以防止资源滥用。例如只开通GaussDB(DWS)的操作权限,不能使用其他云服务。 通过IAM权限控制,有效达到云资源访问控制,避免云资源误操作。了解更多请参见创建用户并授权使用GaussDB(DWS)。 父主题: 身份认证与访问控制
-
集群运维操作限制 表5 集群运维操作限制 限制项 说明 扩容集群 扩容期间集群会有闪断,请谨慎操作。 正在扩容的集群将禁用重启集群、停止集群、启动集群、规格变更、增删CN、扩容集群、缩容集群、创建快照、重置数据库管理员密码等功能。 如果当前集群是包年/包月计费模式,那么新增节点也是按照包年包月模式进行计费。 只有在扩容之后,集群任务信息为“待重分布”状态时才能手动使用“重分布”功能,其他时段该功能不可使用。 缩容集群 存算一体(集群部署)不支持缩容至单机部署集群。 正在缩容的集群禁用重启集群、扩容集群、创建快照、节点管理、智能运维、资源管理、参数修改、安全设置、日志服务、重置数据库管理员密码和删除集群的功能。 弹性规格变更 弹性规格变更仅支持E CS +EVS云盘的存算一体及存算分离集群,ECS本地盘的集群不支持。 弹性变更规格需要停止虚拟机,仅支持离线变更,变更时间大约需要5~10分钟。 包年/包月计费模式集群可进行弹性变更规格升配操作,默认按照包年包月计费,不支持直接降配操作,用户需转按需后再进行降配操作。 经典规格变更 存算一体(单机部署)及存算分离集群暂不支持经典变更规格功能。 如果当前集群是包年/包月计费模式,将不支持该功能。 经典变更规格最大支持调整到240节点,且原节点数量加调整后节点数量不大于480节点。 逻辑集群不支持经典变更规格。 备份恢复集群 对于有数据可靠性要求的用户,尤其是针对业务方无法通过上游重新导入进行数据恢复的场景,集群需要备份操作,避免人为或其他因素造成数据丢失后无法恢复。 存算一体(单机部署)暂不支持快照功能。 正在创建快照的集群,暂时无法提供完整服务,如无法执行重启、扩容、重置密码、修改集群配置信息等操作。 升级集群 8.1.3以前集群版本下发升级任务后,完成集群升级前不支持回滚或提交操作。 集群安装热补丁后无法建立容灾。 容灾管理 存算一体(单机部署)、存算分离以及多AZ集群不支持容灾功能。 灾备集群在容灾任务停止或者异常但灾备集群正常的情况下,可以提供读服务,灾备切换成功后可以提供读写服务。 容灾创建后,生产集群快照功能正常使用,但是灾备集群禁用快照功能,以及生产、灾备集群均禁用恢复功能。 不支持逻辑集群和资源池。 日志管理 非OBS场景下,此功能不可用。 经典变更规格、增删CN等变更CN场景会导致数据丢失,建议在执行变更期间关闭审计日志转储。
-
配额限制 表2 配额限制 资源类型 限制 说明 节点数 256 设置的节点数量不能大于用户可使用的节点配额或256个。如果可使用的节点配额不足,用户可以单击“申请扩大配额”以提工单的形式申请更多节点配额。 标签 每个集群最多可以添加20个标签。 更多信息请参见标签简介。 快照存储空间 GaussDB(DWS)提供了部分免费存储空间,用于存放您的快照数据,免费空间内不计费。 当快照数据存储空间超过免费空间大小时,超出部分按照对象存储服务(OBS)的计费规则进行计费,参见OBS价格详情。 免费空间大小是您的集群的总存储空间大小,即单节点存储空间大小 (副本)x 节点数。 自动备份保留天数 可设置为1~31天,默认为7天 系统会在保留期结束时删除到期快照。
-
命名限制 表3 命名限制 限制项 说明 集群名称 集群名称长度为4到64个字符,且不超过64个字节,1个中文字符为3个字节,其他字符为1个字节,不区分大小写,必须以字母或中文开头,可以包含中文、字母、数字、中划线或者下划线,不能包含其他的特殊字符。 管理员用户 只能由小写字母、数字或下划线组成。 必须以小写字母或下划线开头。 长度为6~64个字符。 用户名不能为GaussDB(DWS)数据库的关键字。GaussDB(DWS)数据库的关键字,具体请参见《SQL语法参考》中关键字章节。 角色名称 以字母开头,可以包含字母、数字、下划线,长度不超过63个字符。 用户名称 以字母开头,可以包含字母、数字、下划线,长度不超过63个字符。 快照名称 快照名称长度为4~64个字符,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符。 快照策略名称 策略名称要求在4位到92位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他特殊字符,并且名称唯一。 告警规则名称 规则名称长度为6到64个字符,且只能是首位非数字的中文、英文、数字、斜线组合。 容灾名称 容灾名称在4位到64位之间,不区分大小写,必须以字母开头,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符。
-
集群基础操作限制 表4 集群基础操作限制 限制项 说明 绑定负载均衡 绑定ELB时,需创建和GaussDB(DWS)集群相同的区域、VPC以及企业项目的ELB进行绑定。 GaussDB(DWS)的ELB功能仅支持独享型ELB规格,不支持共享型ELB绑定操作。 解绑ELB时,GaussDB(DWS)侧会清除ELB中集群相关信息,但并不会删除用户ELB,请注意ELB本身的计费影响,防止不必要的成本支出。 增删CN节点 资源发放时默认CN数量为3,用户可以根据实际发放节点数量调整CN数量,范围为2~20。 删除CN节点过程中,如果只有一个节点异常,只能删除这个异常的节点;如果有两个及以上节点异常,不能删除CN节点,需要先处理恢复异常的节点后,才能删除CN节点。 资源负载管理 离线扩容过程中不支持资源管理功能,如开启了资源管理计划,请在进行离线扩容操作之前停止。 存算一体(单机部署)不支持资源管理功能。 逻辑集群管理 在实际业务场景中,建议用户尽可能将同一个数据库的表创建到同一个逻辑集群中。 物理集群切换逻辑集群时,如果原物理集群有数据则不支持切换。用户请确保切换时原物理集群数据为空。 重启集群 重启期间集群将无法提供服务。因此,在重启前,请确定集群中没有正在运行的任务,并且所有数据都已经保存。 如果集群正在处理业务数据,如导入数据、查询数据、创建快照或恢复快照时,一旦重启集群,有可能会导致文件损坏或重启失败。因此,建议停止所有集群任务后,再重启集群。 启动/停止集群 集群停止后实例关机,ECS场景下基础资源(vCPU、内存)不再保留,当再次启动云服务时,可能由于资源不足无法正常开机,请耐心等待,稍后再试。
-
责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
-
与统一身份认证服务的关系 数据仓库服务使用统一身份认证服务(Identity and Access Management,简称IAM)实现认证和鉴权功能。 需要拥有DWS Administrator权限的用户才能完整使用数据仓库服务。如需开通该权限,请联系拥有Security Administrator权限的用户或者申请新的具有DWS Administrator权限的用户。拥有DWS Database Access权限的用户,可以基于IAM用户生成临时数据库用户凭证以连接GaussDB(DWS)集群数据库。
共100000条
- 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
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- ...
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333