搭建3scale的高可用架构
发布日期:2020年12月16日
作者:田畑义之,日立制作所有限公司(GitHub账号:@y-tabata)
首先
3scale是一款开源的API管理产品。本次我们将使用3scale的OpenShift Operator来构建最新版本2.9.1的高可用(HA)配置。有关3scale的详细信息,请参阅Think IT的连载文章《基于开源软件的API管理平台3scale入门》。
这篇文章仅代表作者的观点,不是日立制作所和Red Hat的官方文件。
3scale的高可用性配置是什么?
3scale的HA架构是什么?由于3scale在OpenShift上运行,即使发生故障,也可以通过OpenShift的功能,如存活探测、就绪探测和重启策略,设计使障碍点自动恢复,并在最短的停机时间内恢复。
しかし、システムによってはこの最小のダウンタイムでさえも許されないことがあります。そのようなシステムでは、システムのコンポーネントを冗長化し、一方のコンポーネントに障害が発生しても他方のコンポーネントで業務を継続できるように、HA構成をとることが一般的です。3scaleでも、そのような目的のためにHA構成をとることができます。
3scaleは以下のようなPodで構成されています。HA構成では、重要なPodはレプリカ数を増やして冗長化します。また重要な情報を持つDBやファイルストレージは、レプリケーション構成を組むために、OpenShift外に構築します。
尝试构建3scale的高可用架构。
那么,让我们实际上搭建一个3scale的高可用配置。这次我们将使用AWS上的OpenShift 4.5环境来进行搭建。
预先准备
首先,让我们做好事前准备。我们将在OpenShift之外建立DB和文件存储。这次我们将使用以下AWS服务。
安装3scale运算符



以上是3scale运算符的安装已完成。
安装3scale
让我们开始安装3scale。
首先,我们将创建四个Secret,以便连接到在OpenShift外部创建的数据库和文件存储。
(1) 用于代替系统-mysql的数据库连接机密
apiVersion: v1
kind: Secret
metadata:
name: system-database
stringData:
URL: "mysql2://root:<rootユーザのパスワード>@<Amazon RDSのエンドポイント>/system"
DB_USER: "root"
DB_PASSWORD: "<rootユーザのパスワード>"
type: Opaque
(2)用于替代system-redis的数据库连接的秘密。
apiVersion: v1
kind: Secret
metadata:
name: system-redis
stringData:
URL: "redis://<Amazon ElastiCache for Redisのプライマリエンドポイント>/1"
NAMESPACE: ""
MESSAGE_BUS_URL: "redis://<Amazon ElastiCache for Redisのプライマリエンドポイント>/8"
MESSAGE_BUS_NAMESPACE: ""
type: Opaque
(3)用于替代后端Redis进行数据库连接的Secret
apiVersion: v1
kind: Secret
metadata:
name: backend-redis
stringData:
REDIS_STORAGE_URL: "redis://<Amazon ElastiCache for Redisのプライマリエンドポイント>/0"
REDIS_STORAGE_SENTINEL_HOSTS: ""
REDIS_STORAGE_SENTINEL_ROLE: ""
REDIS_QUEUES_URL: "redis://<Amazon ElastiCache for Redisのプライマリエンドポイント>/1"
REDIS_QUEUES_SENTINEL_HOSTS: ""
REDIS_QUEUES_SENTINEL_ROLE: ""
type: Opaque
(4) 用于文件存储连接的秘密凭证
apiVersion: v1
kind: Secret
metadata:
name: aws-auth
stringData:
AWS_ACCESS_KEY_ID: <Amazon S3にアクセスできるAWS IAMユーザのアクセスキーID>
AWS_SECRET_ACCESS_KEY: <Amazon S3にアクセスできるAWS IAMユーザのシークレットアクセスキー>
AWS_BUCKET: <Amazon S3バケット名>
AWS_REGION: ap-northeast-1
type: Opaque

在APIManager创建界面的YAML视图中,编写以下类似的YAML,并点击“创建”。
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
namespace: 3scale
spec:
wildcardDomain: apps.<OCPクラスタ名>.<OCPクラスタのベースドメイン名>
system:
fileStorage:
simpleStorageService:
configurationSecretRef:
name: aws-auth
appSpec:
replicas: 2
sidekiqSpec:
replicas: 2
backend:
listenerSpec:
replicas: 2
workerSpec:
replicas: 2
cronSpec:
replicas: 2
apicast:
productionSpec:
replicas: 2
stagingSpec:
replicas: 2
zync:
appSpec:
replicas: 2
queSpec:
replicas: 2
highAvailability:
enabled: true
以上是3scale安装完成。您可以按照以下方式确认已经创建了满足3scale高可用配置的Pod。
NAME READY STATUS RESTARTS AGE
3scale-operator-f8f74c985-rtbjw 1/1 Running 0 10m
apicast-production-1-deploy 0/1 Completed 0 3m
apicast-production-1-ftghr 1/1 Running 0 2m55s
apicast-production-1-vn87t 1/1 Running 0 2m54s
apicast-staging-1-6wfsv 1/1 Running 0 2m57s
apicast-staging-1-9ng79 1/1 Running 0 2m57s
apicast-staging-1-deploy 0/1 Completed 0 3m
backend-cron-1-deploy 0/1 Completed 0 3m59s
backend-cron-1-m752m 1/1 Running 0 3m55s
backend-cron-1-ng7hl 1/1 Running 0 3m55s
backend-listener-1-deploy 0/1 Completed 0 3m59s
backend-listener-1-md5wt 1/1 Running 0 3m55s
backend-listener-1-z69w5 1/1 Running 0 3m55s
backend-worker-1-56dvv 1/1 Running 0 3m55s
backend-worker-1-deploy 0/1 Completed 0 3m59s
backend-worker-1-pp8bg 1/1 Running 0 3m55s
system-app-1-deploy 0/1 Completed 0 3m38s
system-app-1-hook-post 0/1 Completed 0 66s
system-app-1-hook-pre 0/1 Completed 0 3m35s
system-app-1-t6wch 3/3 Running 0 2m38s
system-app-1-x57dd 3/3 Running 0 2m38s
system-memcache-1-deploy 0/1 Completed 0 3m38s
system-memcache-1-rsmj2 1/1 Running 0 3m34s
system-sidekiq-1-deploy 0/1 Completed 0 3m38s
system-sidekiq-1-jknvg 1/1 Running 0 3m35s
system-sidekiq-1-tcclr 1/1 Running 0 3m35s
system-sphinx-1-2m22d 1/1 Running 0 3m34s
system-sphinx-1-deploy 0/1 Completed 0 3m37s
zync-1-4txrj 1/1 Running 1 3m16s
zync-1-deploy 0/1 Completed 0 3m23s
zync-1-kmng2 1/1 Running 0 3m16s
zync-database-1-b7hl5 1/1 Running 0 3m16s
zync-database-1-deploy 0/1 Completed 0 3m23s
zync-que-1-2g8b5 1/1 Running 2 3m15s
zync-que-1-deploy 0/1 Completed 0 3m23s
zync-que-1-sfw6r 1/1 Running 2 3m15s




最后、
在本文中,我们介绍了构建3scale高可用结构的方法。通过实现高可用结构,我们相信3scale的应用场景将更加广泛。现在就利用这个机会来试试如何呢?