<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ratelimit | 伪架构师</title>
    <link>/tags/ratelimit/</link>
      <atom:link href="/tags/ratelimit/index.xml" rel="self" type="application/rss+xml" />
    <description>ratelimit</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>zh</language><lastBuildDate>Sat, 23 Mar 2019 01:55:47 +0800</lastBuildDate>
    <image>
      <url>/img/logo-wide.png</url>
      <title>ratelimit</title>
      <link>/tags/ratelimit/</link>
    </image>
    
    <item>
      <title>Istio 1.1 中的限流问题</title>
      <link>/post/ratelimit-in-istio-1-1/</link>
      <pubDate>Sat, 23 Mar 2019 01:55:47 +0800</pubDate>
      <guid>/post/ratelimit-in-istio-1-1/</guid>
      <description>

&lt;p&gt;在 &lt;a href=&#34;https://blog.fleeto.us/post/servicemesh-and-chasm/&#34; target=&#34;_blank&#34;&gt;Istio 1.1 发布&lt;/a&gt;之后，对 &lt;a href=&#34;https://item.jd.com/12527008.html&#34; target=&#34;_blank&#34;&gt;《深入浅出 Istio》&lt;/a&gt;一书中的例子&lt;a href=&#34;https://blog.fleeto.us/post/istio-book-update-for-1-1/&#34; target=&#34;_blank&#34;&gt;进行了一遍快速的检查&lt;/a&gt;，发现限流功能已经无法使用了。&lt;/p&gt;

&lt;p&gt;在解决了 &lt;a href=&#34;https://blog.fleeto.us/post/handler-in-istio-1-1/&#34; target=&#34;_blank&#34;&gt;Prometheus 的 Handler 问题&lt;/a&gt;之后，开始查看限流的问题。&lt;/p&gt;

&lt;h2 id=&#34;mixer-日志控制的两个小技巧&#34;&gt;Mixer 日志控制的两个小技巧&lt;/h2&gt;

&lt;p&gt;Mixer 策略相关内容比较多，经常需要查看 Policy 和 Telemetry 的日志，然而这两种进程的缺省日志都是很多的，可以用一点小技巧来进行清理。&lt;/p&gt;

&lt;h3 id=&#34;godebug&#34;&gt;GODEBUG&lt;/h3&gt;

&lt;p&gt;首先，Mixer 的两个 Deployment 中都会带有 &lt;code&gt;GODEBUG&lt;/code&gt; 环境变量，用于开启调试信息，可以使用 &lt;code&gt;kubectl edit&lt;/code&gt; 命令删除环境变量。&lt;/p&gt;

&lt;h3 id=&#34;controlz&#34;&gt;ControlZ&lt;/h3&gt;

&lt;p&gt;Istio 组件都带有 ControlZ 接口，可以用于控制和查看核心组件的一些配置信息，其端口都开放在 9876，可以用端口转发的方式打开进行调整，例如：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-shell&#34;&gt;$ kubectl port-forward -n istio-system \
&amp;gt; istio-telemetry-c545bb9bd-x7jpz 9876:9876
Forwarding from 127.0.0.1:9876 -&amp;gt; 9876
Forwarding from [::1]:9876 -&amp;gt; 9876
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;然后就可以用浏览器打开 &lt;code&gt;http://127.0.0.1:9876&lt;/code&gt; 进行调整了。&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;images/controlz.png&#34; alt=&#34;controlz&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;言归正传&#34;&gt;言归正传&lt;/h2&gt;

&lt;p&gt;应用书中的 YAML 代码的同时，可以打开 Mixer 的日志，会发现其中有几行错误：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-plain&#34;&gt;error  failed to evaluate expression for field &#39;Dimensions[destination]&#39;; unknown attribute destination.service
error  Instance not found: instance=&#39;dest-quota.quota&#39;
error  No valid instances found                                                error  No valid actions found in rule
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;这里发现了一个无法识别的属性：&lt;code&gt;destination.service&lt;/code&gt;。翻查文档发现，该属性在 &lt;a href=&#34;https://archive.istio.io/v1.0/docs/reference/config/policy-and-telemetry/attribute-vocabulary/#deprecated-attributes&#34; target=&#34;_blank&#34;&gt;Istio 1.0 的 Reference&lt;/a&gt; 中声明即将过期;在 1.1 中已经停用，因此将其改为 &lt;code&gt;destination.service.host&lt;/code&gt; 即可正常使用。更新代码已经上传到随书代码库的 &lt;a href=&#34;https://github.com/fleeto/istio-for-beginner/tree/1.1&#34; target=&#34;_blank&#34;&gt;1.1 分支&lt;/a&gt;中的第八章内容里。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
