如何在 AWS EKS 和 RDS/Aurora 上运行 Apache SkyWalking

Amazon Aurora
Amazon Elastic Kubernetes Service (EKS)
Amazon RDS
0
2
{"value":"## 介绍\n\nApache SkyWalking 是一个开源的 APM 工具,用于监控分布式系统和排除故障,特别是为微服务、云原生和基于容器(Docker、Kubernetes、Mesos)的架构而设计。它提供分布式跟踪、服务网格可观测性、指标聚合和可视化以及警报。\n\n在本文中,我将介绍如何在 AWS EKS 和 RDS/Aurora 上快速设置 Apache SkyWalking,以及几个示例服务,监控服务以观察 SkyWalking 本身。\n\n## 先决条件\n\n- AWS 账号\n- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)\n- [Terraform](https://www.terraform.io/downloads.html)\n- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)\n\n我们可以使用 AWS Web 控制台或 CLI 来创建本教程所需的所有资源,但是当出现问题时,它可能过于繁琐且难以调试。因此,在本文中,我将使用 Terraform 创建所有 AWS 资源、部署 SkyWalking、示例服务和负载生成器服务 (Locust)。\n\n## 架构\n\n演示架构如下:\n\n![image.png](https://dev-media.amazoncloud.cn/4010f03a108145aa868d6201e6080ddc_image.png)\n\n如架构图所示,我们需要创建以下 AWS 资源:\n\n- EKS 集群\n- RDS 实例或 Aurora 集群\n\n听起来很简单,但背后有很多东西,比如 VPC、子网、安全组等。你必须正确配置它们以确保 EKS 集群可以连接到 RDS 实例 / Aurora 集群,否则 SkyWalking 不会不工作。幸运的是,Terraform 可以帮助我们自动创建和销毁所有这些资源。\n\n我创建了一个 Terraform 模块来创建本教程所需的所有 AWS 资源,您可以在 [GitHub 存储库](https://github.com/kezhenxu94/oap-load-test/tree/main/aws)中找到它。\n\n## 创建 AWS 资源\n\n首先,我们需要将 GitHub 存储库克隆 `cd` 到文件夹中:\n\n```bash\\ngit clone https://github.com/kezhenxu94/oap-load-test.git\\n```\n\n然后,我们需要创建一个文件 `terraform.tfvars` 来指定 AWS 区域和其他变量:\n\n```bash\\ncat > terraform.tfvars <<EOF\\naws_access_key = \\"\\"\\naws_secret_key = \\"\\"\\ncluster_name = \\"skywalking-on-aws\\"\\nregion = \\"ap-east-1\\"\\ndb_type = \\"rds-postgresql\\"\\nEOF\\n```\n\n如果您已经配置了 AWS CLI,则可以跳过 `aws_access_key` 和 `aws_secret_key` 变量。要使用 RDS postgresql 安装 SkyWalking,请将 `db_type` 设置为 `rds-postgresql`,要使用 Aurora postgresql 安装 SkyWalking,请将 `db_type` 设置为 `aurora-postgresql`。\n\n您可以配置许多其他变量,例如标签、示例服务计数、副本等,您可以在 variables.tf 中找到[它们](https://github.com/kezhenxu94/oap-load-test/blob/main/aws/variables.tf)。\n\n然后,我们可以运行以下命令来初始化 Terraform 模块并下载所需的提供程序,然后创建所有 AWS 资源:\n\n```bash\\nterraform init\\nterraform apply -var-file=terraform.tfvars\\n```\n\n键入 `yes` 以确认所有 AWS 资源的创建,或将标志 `-auto-approve` 添加到 `terraform apply` 以跳过确认:\n\n```bash\\nterraform apply -var-file=terraform.tfvars -auto-approve\\n```\n\n现在你需要做的就是等待所有 AWS 资源的创建完成,这可能需要几分钟的时间。您可以在 AWS Web 控制台查看创建进度,也可以查看 EKS 集群内部服务的部署进度。\n\n## 产生流量\n\n除了创建必要的 AWS 资源外,Terraform 模块还将 SkyWalking、示例服务和 Locust 负载生成器服务部署到 EKS 集群。\n\n您可以访问 Locust Web UI 以生成到示例服务的流量:\n\n```bash\\nopen http://\$(kubectl get svc -n locust -l app=locust-master -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}'):8089\\n```\n\n该命令将浏览器打开到 Locust web UI,您可以配置用户数量和孵化率以生成流量。\n\n## 观察 SkyWalking\n\n您可以访问 SkyWalking Web UI 来观察示例服务。\n\n首先需要将 SkyWalking UI 端口转发到本地:\n\n```bash\\nkubectl -n istio-system port-forward \$(kubectl -n istio-system get pod -l app=skywalking -l component=ui -o name) 8080:8080\\n```\n\n然后在浏览器中打开 http://localhost:8080 访问 SkyWalking web UI。\n\n## 观察 RDS/Aurora\n\n您也可以访问 RDS/Aurora web 控制台,观察 RDS/Aurora 实例 / Aurora 集群的性能。\n\n## 试验结果\n\n### 测试 1:使用 EKS 和 RDS PostgreSQL 的 SkyWalking\n\n#### 服务流量\n\n![image.png](https://dev-media.amazoncloud.cn/0106d211a1c647e2a098445342c4b542_image.png)\n![image.png](https://dev-media.amazoncloud.cn/eaa22e73a2964c22975dbd2e0f8fe4b6_image.png)\n\n#### RDS 性能\n\n![image.png](https://dev-media.amazoncloud.cn/0e5ec41a0eff4a7bb3a199eb66b7aa8c_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/ce6a0d76e7b942ddaaf2e79f3a5aadaf_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/a4e02114b8bd41b2b2c06dfd2b9265d7_image.png)\n\n#### SkyWalking 性能\n\n![image.png](https://dev-media.amazoncloud.cn/820e206c7d0e43e19449b038b5ee3aa6_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/fab22f4f206a4ad785826e07bdedc309_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/d49476326f644bbe94d08d084ed232d9_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/9fb1e28c23eb4fe48c57fcf8072f01a2_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/340bc3b43a41457898f015a5fc3fbabd_image.png)\n\n### 测试 2:使用 EKS 和 Aurora PostgreSQL 的 SkyWalking\n\n#### 服务流量\n\n![image.png](https://dev-media.amazoncloud.cn/0f97fe2b524448f9b88d332724a69923_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/aa57abd49f1241be838cd1338906bbcf_image.png)\n\n#### RDS 性能\n\n![image.png](https://dev-media.amazoncloud.cn/2db358e93708482a97f1e1e4ab7c3990_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/63967bb0e87547ea879372efcd8d36e4_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/90f825e00038460892ce4ab329af56d9_image.png)\n\n#### SkyWalking 性能\n\n![image.png](https://dev-media.amazoncloud.cn/72d85f50068d4b2090c88c71ce9f6afd_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/8f34982d66014548923914f3e932da95_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/93a4e375c8b1423fadbee54f6d1f1be5_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/cdf6006ed1074316a1eddb4b97b1fba4_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/701a23ffc69c42a1b17202bcbf38089f_image.png)\n\n## 清理\n\n完成演示后,您可以运行以下命令销毁所有 AWS 资源:\n\n```bash\\nterraform destroy -var-file=terraform.tfvars -auto-approve\\n```\n","render":"<h2><a id=\\"_0\\"></a>介绍</h2>\\n<p>Apache SkyWalking 是一个开源的 APM 工具,用于监控分布式系统和排除故障,特别是为微服务、云原生和基于容器(Docker、Kubernetes、Mesos)的架构而设计。它提供分布式跟踪、服务网格可观测性、指标聚合和可视化以及警报。</p>\n<p>在本文中,我将介绍如何在 AWS EKS 和 RDS/Aurora 上快速设置 Apache SkyWalking,以及几个示例服务,监控服务以观察 SkyWalking 本身。</p>\n<h2><a id=\\"_6\\"></a>先决条件</h2>\\n<ul>\\n<li>AWS 账号</li>\n<li><a href=\\"https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html\\" target=\\"_blank\\">AWS CLI</a></li>\\n<li><a href=\\"https://www.terraform.io/downloads.html\\" target=\\"_blank\\">Terraform</a></li>\\n<li><a href=\\"https://kubernetes.io/docs/tasks/tools/#kubectl\\" target=\\"_blank\\">kubectl</a></li>\\n</ul>\n<p>我们可以使用 AWS Web 控制台或 CLI 来创建本教程所需的所有资源,但是当出现问题时,它可能过于繁琐且难以调试。因此,在本文中,我将使用 Terraform 创建所有 AWS 资源、部署 SkyWalking、示例服务和负载生成器服务 (Locust)。</p>\n<h2><a id=\\"_15\\"></a>架构</h2>\\n<p>演示架构如下:</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/4010f03a108145aa868d6201e6080ddc_image.png\\" alt=\\"image.png\\" /></p>\n<p>如架构图所示,我们需要创建以下 AWS 资源:</p>\n<ul>\\n<li>EKS 集群</li>\n<li>RDS 实例或 Aurora 集群</li>\n</ul>\\n<p>听起来很简单,但背后有很多东西,比如 VPC、子网、安全组等。你必须正确配置它们以确保 EKS 集群可以连接到 RDS 实例 / Aurora 集群,否则 SkyWalking 不会不工作。幸运的是,Terraform 可以帮助我们自动创建和销毁所有这些资源。</p>\n<p>我创建了一个 Terraform 模块来创建本教程所需的所有 AWS 资源,您可以在 <a href=\\"https://github.com/kezhenxu94/oap-load-test/tree/main/aws\\" target=\\"_blank\\">GitHub 存储库</a>中找到它。</p>\\n<h2><a id=\\"_AWS__30\\"></a>创建 AWS 资源</h2>\\n<p>首先,我们需要将 GitHub 存储库克隆 <code>cd</code> 到文件夹中:</p>\\n<pre><code class=\\"lang-bash\\">git clone https://github.com/kezhenxu94/oap-load-test.git\\n</code></pre>\\n<p>然后,我们需要创建一个文件 <code>terraform.tfvars</code> 来指定 AWS 区域和其他变量:</p>\\n<pre><code class=\\"lang-bash\\">cat &gt; terraform.tfvars &lt;&lt;EOF\\naws_access_key = &quot;&quot;\\naws_secret_key = &quot;&quot;\\ncluster_name = &quot;skywalking-on-aws&quot;\\nregion = &quot;ap-east-1&quot;\\ndb_type = &quot;rds-postgresql&quot;\\nEOF\\n</code></pre>\\n<p>如果您已经配置了 AWS CLI,则可以跳过 <code>aws_access_key</code> 和 <code>aws_secret_key</code> 变量。要使用 RDS postgresql 安装 SkyWalking,请将 <code>db_type</code> 设置为 <code>rds-postgresql</code>,要使用 Aurora postgresql 安装 SkyWalking,请将 <code>db_type</code> 设置为 <code>aurora-postgresql</code>。</p>\\n<p>您可以配置许多其他变量,例如标签、示例服务计数、副本等,您可以在 variables.tf 中找到<a href=\\"https://github.com/kezhenxu94/oap-load-test/blob/main/aws/variables.tf\\" target=\\"_blank\\">它们</a>。</p>\\n<p>然后,我们可以运行以下命令来初始化 Terraform 模块并下载所需的提供程序,然后创建所有 AWS 资源:</p>\n<pre><code class=\\"lang-bash\\">terraform init\\nterraform apply -var-file=terraform.tfvars\\n</code></pre>\\n<p>键入 <code>yes</code> 以确认所有 AWS 资源的创建,或将标志 <code>-auto-approve</code> 添加到 <code>terraform apply</code> 以跳过确认:</p>\\n<pre><code class=\\"lang-bash\\">terraform apply -var-file=terraform.tfvars -auto-approve\\n</code></pre>\\n<p>现在你需要做的就是等待所有 AWS 资源的创建完成,这可能需要几分钟的时间。您可以在 AWS Web 控制台查看创建进度,也可以查看 EKS 集群内部服务的部署进度。</p>\n<h2><a id=\\"_69\\"></a>产生流量</h2>\\n<p>除了创建必要的 AWS 资源外,Terraform 模块还将 SkyWalking、示例服务和 Locust 负载生成器服务部署到 EKS 集群。</p>\n<p>您可以访问 Locust Web UI 以生成到示例服务的流量:</p>\n<pre><code class=\\"lang-bash\\">open http://\$(kubectl get svc -n locust -l app=locust-master -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}'):8089\\n</code></pre>\\n<p>该命令将浏览器打开到 Locust web UI,您可以配置用户数量和孵化率以生成流量。</p>\n<h2><a id=\\"_SkyWalking_81\\"></a>观察 SkyWalking</h2>\\n<p>您可以访问 SkyWalking Web UI 来观察示例服务。</p>\n<p>首先需要将 SkyWalking UI 端口转发到本地:</p>\n<pre><code class=\\"lang-bash\\">kubectl -n istio-system port-forward \$(kubectl -n istio-system get pod -l app=skywalking -l component=ui -o name) 8080:8080\\n</code></pre>\\n<p>然后在浏览器中打开 http://localhost:8080 访问 SkyWalking web UI。</p>\n<h2><a id=\\"_RDSAurora_93\\"></a>观察 RDS/Aurora</h2>\\n<p>您也可以访问 RDS/Aurora web 控制台,观察 RDS/Aurora 实例 / Aurora 集群的性能。</p>\n<h2><a id=\\"_97\\"></a>试验结果</h2>\\n<h3><a id=\\"_1_EKS__RDS_PostgreSQL__SkyWalking_99\\"></a>测试 1:使用 EKS 和 RDS PostgreSQL 的 SkyWalking</h3>\\n<h4><a id=\\"_101\\"></a>服务流量</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/0106d211a1c647e2a098445342c4b542_image.png\\" alt=\\"image.png\\" /><br />\\n<img src=\\"https://dev-media.amazoncloud.cn/eaa22e73a2964c22975dbd2e0f8fe4b6_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"RDS__106\\"></a>RDS 性能</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/0e5ec41a0eff4a7bb3a199eb66b7aa8c_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/ce6a0d76e7b942ddaaf2e79f3a5aadaf_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/a4e02114b8bd41b2b2c06dfd2b9265d7_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"SkyWalking__114\\"></a>SkyWalking 性能</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/820e206c7d0e43e19449b038b5ee3aa6_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/fab22f4f206a4ad785826e07bdedc309_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/d49476326f644bbe94d08d084ed232d9_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/9fb1e28c23eb4fe48c57fcf8072f01a2_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/340bc3b43a41457898f015a5fc3fbabd_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_2_EKS__Aurora_PostgreSQL__SkyWalking_126\\"></a>测试 2:使用 EKS 和 Aurora PostgreSQL 的 SkyWalking</h3>\\n<h4><a id=\\"_128\\"></a>服务流量</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/0f97fe2b524448f9b88d332724a69923_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/aa57abd49f1241be838cd1338906bbcf_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"RDS__134\\"></a>RDS 性能</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/2db358e93708482a97f1e1e4ab7c3990_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/63967bb0e87547ea879372efcd8d36e4_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/90f825e00038460892ce4ab329af56d9_image.png\\" alt=\\"image.png\\" /></p>\n<h4><a id=\\"SkyWalking__142\\"></a>SkyWalking 性能</h4>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/72d85f50068d4b2090c88c71ce9f6afd_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/8f34982d66014548923914f3e932da95_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/93a4e375c8b1423fadbee54f6d1f1be5_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/cdf6006ed1074316a1eddb4b97b1fba4_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/701a23ffc69c42a1b17202bcbf38089f_image.png\\" alt=\\"image.png\\" /></p>\n<h2><a id=\\"_154\\"></a>清理</h2>\\n<p>完成演示后,您可以运行以下命令销毁所有 AWS 资源:</p>\n<pre><code class=\\"lang-bash\\">terraform destroy -var-file=terraform.tfvars -auto-approve\\n</code></pre>\n"}
2
目录
关闭