《云计算与虚拟化技术丛书 Service Mesh实战》—3.2环境准备
3.2 环境准备
对Linkerd本身来说,它是平台无关的,可运行于任何平台,其原生支持容器编排工具Kubernetes和DC/OS,当然也可运行于其他编排工具如HashiCorp Nomad,还可以直接运行于虚拟机或者物理机上。但本章并不想依赖某种编排方案来讲解Linkerd的配置,而是从一个通用、普遍的演示平台着手,这样更有利于大家对Linkerd的学习及理解,无需关注容器编排工具方面的知识及相关依赖。一旦对Linkerd有深入的理解和认识,然后再考虑特定的容器编排工具,比如Kubernetes,后续我们有专门章节详细讨论如何使用Linkerd作为Kubernetes的Service Mesh工具。
为了讲解Linkerd配置,我们需要准备如下资源以构建演示环境。
三台虚拟机:基于VirtualBox。
Docker引擎:部署于每台虚拟机。
示例应用:UserService、BookingService和ConcertService以及MySQL数据库。
Linkerd:以容器方式部署于每台虚拟机。
服务发现工具Consul:以容器方式部署于每台虚拟机。
服务注册工具Registrator:以容器方式部署于每台虚拟机。
注意 本章所使用的脚本及其他配置信息均存放在示例源码chapter3目录下,启动虚拟机后被同步到/vagrant目录。
3.2.1 虚拟机及Docker引擎
同第2章,我们仍然使用Vagrant和VirtualBox管理虚拟机,为此,首先切换目录到chapter3,根据如下Vagrantfile执行命令vagrant up启动三台虚拟机linkerd01、linkerd02和linkerd03:
# -*- mode;ruby -*-
# vi;set ft=ruby :
LINKERD_COUNT = 3
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
(1..LINKERD_COUNT).each do |i|
config.vm.define "linkerd0#{i}" do |subconfig|
subconfig.vm.hostname = "linkerd0#{i}"
subconfig.vm.network :private_network, ip: "192.168.1.#{i + 10}"
# to access Linkerd admin dashboard from local
subconfig.vm.network :forwarded_port, guest: 9990, host: "#{i + 9990}"
end
end
config.vm.provision "provision", type: "shell", :path => "provision.sh"
end
其中provision.sh脚本内容为:
#!/bin/bash
# install docker engine
yum install -y docker-1.13.1
systemctl enable docker
systemctl start docker
# disable selinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
# install tool sets
yum install -y wget telnet tree net-tools unzip
# install jq
wget -qO /usr/local/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64
chmod +x /usr/local/bin/jq
# install dnsmasq
yum install -y dnsmasq
sed -i 's/\(^search\)/\1 service.consul/g' /etc/resolv.conf
sed -i '/^search/a nameserver 127.0.0.1' /etc/resolv.conf
# configure dnsmasq to cache consul dns query
cat << EOF > /etc/dnsmasq.d/consul
interface=*
addn-hosts=/etc/hosts
bogus-priv
server=/service.consul/127.0.0.1#8600
EOF
systemctl enable dnsmasq && systemctl start dnsmasq
如上所述,在启动虚拟机过程中执行provision.sh安装Docker引擎以及相关工具软件。
- 点赞
- 收藏
- 关注作者
评论(0)