《云计算与虚拟化技术丛书 Service Mesh实战》—2.4.2传统安装方式
2.4.2 传统安装方式
到此,所有Linkerd需要的运行环境及其依赖已准备好,我们可在CentOS虚拟机里安装Linkerd,首先创建安装目录,比如/root/install/local,然后下载最新版本的Linkerd安装包,本书写作时的Linkerd最新版本是1.3.6。
# mkdir -p /root/linkerd/local
# cd /root/linkerd/local
# wget -q https://github.com/linkerd/linkerd/releases/download/1.3.6/linkerd-1.3.6-exec
# chmod +x linkerd-1.3.6-exec
注意 本书所有关于Linkerd的配置及演示示例都是基于版本1.3.6的。
除此之外,还需在/root/linkerd/local目录下创建如下文件目录:
# mkdir config disco logs
config目录:存放Linkerd配置文件于该目录。
disco目录:若采用基于文件方式进行服务发现时,服务相关配置信息存于该目录。
logs目录:存放Linkerd运行时日志和访问应用产生的访问日志。
为了能正常启动Linkerd进程,首先我们需要为其创建配置文件,其配置文件采用YAML或JSON格式,现假设配置文件为linkerd.yml:
# touch config/linkerd.yml
其内容配置为:
admin:
port: 9990
# 默认admin使用loopback地址,修改成0.0.0.0是为了能从宿主机访问Linkerd管理页面
ip: 0.0.0.0
usage:
enabled: false
namers:
- kind: io.l5d.fs
rootDir: disco
routers:
- protocol: http
dtab: |
/svc => /#/io.l5d.fs;
httpAccessLog: logs/access.log
label: demo
servers:
- port: 4140
ip: 0.0.0.0
配置文件主要配置如下模块。
admin模块:设置Linkerd管理接口,默认监听loopback地址的9990端口,示例中我们将其配置为0.0.0.0。
namers模块:设置如何通过服务发现工具进行服务发现,这里配置为基于文件的服务发现,服务相关信息存储在disco目录的文件中,文件以服务名字命名,若服务名为consul,则文件名为consul,内容为一系列主机名字/IP地址及空格分隔的端口配置对构成,比如127.0.0.1 8500。
routers模块:设置服务通信协议,默认为http;dtab路由规则,其根据请求信息如请求主机头从namers指定的服务发现工具中找到需要访问的服务实例,示例中配置为从namers模块配置指定的文件目录读取服务信息;日志写入路径,默认logs目录下的access.log文件;配置router服务器的监听地址和端口,默认为0.0.0.0的4140端口;其他配置如router的标签设置为demo。需注意的是该模块中还有一个很重要的参数—identifer被省略,identifer的主要作用是将应用请求转化为逻辑名字,Linkerd通过逻辑名字以及一系列的转换获取对应的IP地址和端口信息,默认identifer为io.l5d.header.token,即根据HTTP请求头部信息提取逻辑名字,默认提取Host头部信息。
然后通过linkerd.yml启动Linkerd进程。
# ./linkerd-1.3.6-exec config/linkerd.yml
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
-XX:+AggressiveOpts -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:InitialHeapSize=33554432 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=87244800 -XX:MaxTenuringThreshold=6 -XX:OldPLABSize=16 -XX:+PrintCommandLineFlags -XX:+ScavengeBeforeFullGC -XX:-TieredCompilation -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseStringDeduplication
Mar 07, 2018 3:39:18 PM com.twitter.finagle.http.HttpMuxer$ $anonfun$new$1
INFO: HttpMuxer[/admin/metrics.json] = com.twitter.finagle.stats.MetricsExporter(<function1>)
Mar 07, 2018 3:39:18 PM com.twitter.finagle.http.HttpMuxer$ $anonfun$new$1
INFO: HttpMuxer[/admin/per_host_metrics.json] = com.twitter.finagle.stats.HostMetricsExporter(<function1>)
I 0307 15:39:18.501 UTC THREAD1: linkerd 1.3.6 (rev=48a2a63d47fd0f6713c74ec03b8588bbc067e1de) built at 20180302-131809
I 0307 15:39:19.205 UTC THREAD1: Finagle version 7.1.0 (rev=37212517b530319f4ba08cc7473c8cd8c4b83479) built at 20170906-132024
I 0607 15:39:21.355 UTC THREAD1: Tracer: com.twitter.finagle.zipkin.thrift.ScribeZipkinTracer
I 0307 15:39:21.663 UTC THREAD1: serving http admin on /0.0.0.0:9990
I 0307 15:39:21.689 UTC THREAD1: serving demo on /0.0.0.0:4140
I 0307 15:39:21.755 UTC THREAD1: initialized
从输出信息可知以下内容。
Linkerd的版本是1.3.6。
Finagle的版本是7.1.0。
Linkerd admin运行于9990端口,可通过0.0.0.0:9990进行访问。
名为demo的router运行于4140端口,通过0.0.0.0:4140访问。
现在访问http://127.0.0.1:9990/admin/ping,如果返回pong,则认为Linkerd已正常启动,否则需查看未启动原因。还有,在宿主机浏览器访问http://127.0.0.1:9990可进入Linkerd管理界面,如图2-3所示,从管理界面可以看到Linkerd运行时相关信息,如请求数量、成功率、失败率、router名字、router监听地址及端口等:
图2-3 Linkerd管理界面
除此之外,还可以从页面进行dtab(delegation table)调测工作,如图2-4所示。
图2-4 Linkerd dtab调试界面
图2-4中显示的dtab来源Linkerd配置文件,后续章节会讲解Linkerd的dtab可存储于外部键值存储系统中,如Consul、Zookeeper等。
另外,还可在Linkerd管理界面调整日志打印级别。
- 点赞
- 收藏
- 关注作者
评论(0)