文档章节

linkerd ab部署测试

super-wen
 super-wen
发布于 2017/05/26 15:26
字数 894
阅读 176
收藏 0

环境

deepin jdk1.8 linkerd 1.0.2

部署

创建服务app1

mkdir /data/linkerd_tmp1/app1
cd /data/linkerd_tmp1/app1
echo 'app1' > index.html
/usr/bin/python -m SimpleHTTPServer 9999
##这里笔者使用python 快速启动了一个占用端口为9999的服务.

curl http://127.0.0.1:9999
## 返回app1,服务正常

linkerd配置,通过linkerd访问app1服务

笔者linkerd安装目录:/opt/soft/linkerd-1.0.2/ 配置目录:/data/linkerd_tmp1/config.yaml

配置如下

admin:
  port: 9990

routers:
- protocol: http
  servers:
  - ip: 0.0.0.0
    port: 4140
  dtab: >-
    /svc/app1 => /$/inet/127.1/9999;
  label: app

启动

/opt/soft/linkerd-1.0.2/linkerd-1.0.2-exec /data/linkerd_tmp1/config.yaml

访问

http_proxy=http://127.0.0.1:4140/ curl http://app1
##返回app1,正常linkerd通过app1代理9999端口服务成功.

同理配置app2服务.使用端口9998,返回app2

mkdir /data/linkerd_tmp1/app2
cd /data/linkerd_tmp1/app2
echo 'app2' > index.html
/usr/bin/python -m SimpleHTTPServer 9998
##这里笔者使用python 快速启动了一个占用端口为9999的服务.

curl http://127.0.0.1:9998
## 返回app1,服务正常

修改linkerd配置,使之代理app2

admin:
  port: 9990

routers:
- protocol: http
  servers:
  - ip: 0.0.0.0
    port: 4140
  dtab: >-
    /svc/app1 => /$/inet/127.1/9999;
    /svc/app2 => /$/inet/127.1/9998; #多了这行,app2代理9998端口服务.
  label: app

重启linkerd服务

http_proxy=http://127.0.0.1:4140/ curl http://app2
##返回app2,正常linkerd通过app1代理9998端口服务成功.

修改linkerd配置,使访问app1服务的流量分50%到app2

admin:
  port: 9990

routers:
- protocol: http
  servers:
  - ip: 0.0.0.0
    port: 4140
  dtab: >-
    /svc/app1 => /$/inet/127.1/9999;
    /svc/app2 => /$/inet/127.1/9998;
    /svc/app1 => 5 * /$/inet/127.1/9999  & 5 * /svc/app2;
  label: app      

重启linkerd服务.

for k in $( seq 1 100 ); do http_proxy=http://127.0.0.1:4140/ curl http://app1; done

循环100次访问app1,可以从linkerd admin管理页面看到两个服务的访问频率大致平衡

将比例切换为2:8.

/svc/app1 => 2 * /$/inet/127.1/9999  & 8 * /svc/app2;

循环100次结果如下.

紫色线条为app2服务,与app1访问频比为2:8

使用namer动态变更dtab

上面讲了修改配置文件重启的方式,但是这种方式是不可取的,在生产环境中,每时每刻都有请求,每次变更都要重启造成的影响太大了.

使用namer参数,将服务发现从配置中摘取出来,每次变动不需要修改配置.

基于文件的服务发现机制. io.l5d.fs

任然是上面两个服务 app1: 9999 app2: 9998

配置文件地址: /data/linkerd_tmp2

config.yaml配置如下

admin:
  port: 9990

namers:
- kind: io.l5d.fs
  rootDir: root

routers:
- protocol: http
  dtab: |
    /svc => /#/io.l5d.fs;
  label: int
  servers:
  - port: 4140
    ip: 0.0.0.0

命令行:

root@superwen2-pc:/data/linkerd_tmp2/root# ls
root@superwen2-pc:/data/linkerd_tmp2/root# echo '127.1 9999' > app1
root@superwen2-pc:/data/linkerd_tmp2/root# cat app1 
127.1 9999
root@superwen2-pc:/data/linkerd_tmp2/root# http_proxy=http://127.0.0.1:4140/ curl http://app1
app1
root@superwen2-pc:/data/linkerd_tmp2/root# echo '127.1 9998' > app1
root@superwen2-pc:/data/linkerd_tmp2/root# cat app1 
127.1 9998
root@superwen2-pc:/data/linkerd_tmp2/root# http_proxy=http://127.0.0.1:4140/ curl http://app1
app2
root@superwen2-pc:/data/linkerd_tmp2/root# echo -e '127.1 9999\n127.1 9998' > app1
root@superwen2-pc:/data/linkerd_tmp2/root# cat app1
127.1 9999
127.1 9998
root@superwen2-pc:/data/linkerd_tmp2/root# http_proxy=http://127.0.0.1:4140/ curl http://app1
app1
root@superwen2-pc:/data/linkerd_tmp2/root# http_proxy=http://127.0.0.1:4140/ curl http://app1
app2

执行下面命令,返回app1和app2的数量大致相同.

for k in $( seq 1 100 ); do http_proxy=http://127.0.0.1:4140/ curl http://app1; done

注意的一些坑.

  1. 如果配置写错了,并不会生效,还是会使用上次正确的配置.例如
root@superwen2-pc:/data/linkerd_tmp2/root# echo 'asdfad' > app1
root@superwen2-pc:/data/linkerd_tmp2/root# http_proxy=http://127.0.0.1:4140/ curl http://app1
app2

2.不能使用下面这种配置了,linkerd解析到了这层,不会再去递归解析/svc/app2地址,而是直接转发了.

127.1 9999
/svc/app2

  1. 由于Java中的文件监视器的隐含,该namer消耗大量CPU,不适合生产使用。

https://linkerd.io/config/1.0.2/linkerd/index.html#namers

© 著作权归作者所有

下一篇:
super-wen
粉丝 5
博文 37
码字总数 13546
作品 0
徐汇
程序员
私信 提问
API Gateway性能比较:NGINX vs. ZUUL vs.Cloud Gateway vs. Linkerd[译]

2018-03-04 15:07 联发科的反思 前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay elik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx ...

sunsky303
2018/05/11
0
0
基于微服务的原生云应用开源“服务网格”项目 - Linkerd

Linkerd 是一个提供弹性云端原生应用服务网格(service mesh)的开源项目,也是面向微服务的开源 RPC 代理。它的核心是一个透明代理。 linkerd(发音 "linker-DEE")是一个透明的服务网格,旨...

匿名
2017/04/26
0
3
《Linkerd官方文档》与Istio一起运行Linkerd

与Istio一起运行 Istio是一个连接,管理和保护微服务的开放平台。Linkerd是云本机应用程序的开源服务网格。Istio和Linkerd可以一起工作,Istio可作为跨Linkerd实例的控制平面。 Linkerd的Ist...

萍韵众生
2018/01/19
0
0
Istio和Linkerd的CPU基准测试报告

作者:Michael Kipper 译者:马若飞 审校:宋净超 原文:https://medium.com/@michael_87395/benchmarking-istio-linkerd-cpu-c36287e32781 编者按 作者是Shopify的工程师,公司在引入Istio...

ServiceMesher
05/06
0
0
Service Mesh 现在如此火热,你了解多少?

作者:杨章显,思科高级系统工程师,多年企业级在线会议系统的运维以及软件发布、变更管理经验,熟悉容器技术、容器编排、自动化运维、部署、监控等,目前为思科内部容器 PaaS 主要负责人,负...

gitchat
2017/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

gradle grovvy中的闭包

1. 无参数的闭包 //这b1就是一个闭包def b1={ println "hello b1"}//定义方法,包含闭包类型的参数def method1(Closure closure){closure()}//执行method1method1(b1) 执行结果 ...

edison_kwok
35分钟前
3
0
基于Spring Boot + Dubbo的全链路日志追踪(一)

一、 概要 当前公司后端整体架构为:Spring Boot + Dubbo。由于早期项目进度等原因,对日志这块没有统一的规范,基本上是每个项目自己管自己的日志。这也对后面的问题排查带来了很大的困难,...

明天以后
今天
7
0
安装fastdfs文件服务器步骤

1、安装libfastcommon wget https://github.com/happyfish100/libfastcommon/archive/master.zip 解压后安装 cd fastcommon-master ./make.sh ./make.sh install 2、安装 FastDFS,从sourcef......

lsjlgo
今天
3
0
MySQL 5.7 免安装版配置

下载地址:https://dev.mysql.com/downloads/mysql/ 安装步骤 1.下载zip解压到目录下 2.配置环境变量 新建系统变量:MYSQL_HOME,值:D:\DevelopmentTool\Mysql-5.7.26-winx64 修改path变量:...

华山猛男
今天
7
0
java map的遍历

//从大的角度可以分为两类Set<String> set=map.keySet();这里面还可以分为3类, 从set的角度来分 //Set<Map.Entry<String, String>> entery=map.entrySet(); public class Test { public sta......

南桥北木
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部