第四章 consul cluster

2016-12-30 09:53:05来源:oschina作者:abcijkxyz人点击

1、vagrant


为了模拟集群效果,使用vagrant。


1.1、首先下载vagrant


https://www.vagrantup.com/downloads.html


说明:浏览器下载可能比较慢,可以通过迅雷下载。


1.2、下载之后,安装vagrant


mac中下一步到底就可以。


说明:虽然vagrant需要依赖于virtualbox,需要事先安装。


1.3、打开终端,启动vagrant


1.3.1、初始化:



说明:以上是安装64bit的Linux系统(Ubuntu),32bit的将数字改为32即可。


参考:https://liuzhichao.com/p/1940.html


1.3.2、修改Vagrantfile文件



说明:ruby写的,内容改为如下:


1 # -*- mode: ruby -*-
2 # vi: set ft=ruby :
3 $script = < 9 wget https://releases.hashicorp.com/consul/0.6.1/consul_0.6.1_linux_amd64.zip -O consul.zip 10 echo Installing Consul... 11 unzip consul.zip 12 sudo chmod +x consul 13 sudo mv consul /usr/bin/consul 14 sudo mkdir /etc/consul.d 15 sudo chmod a+w /etc/consul.d 16 SCRIPT 17
18 # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
19 VAGRANTFILE_API_VERSION = "2"
20
21 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
22 config.vm.box = "debian/wheezy64"
23
24 config.vm.provision "shell", inline: $script 25
26 config.vm.define "n1" do |n1|
27n1.vm.hostname = "n1"
28n1.vm.network "private_network", ip: "172.20.20.10"
29end 30
31 config.vm.define "n2" do |n2|
32n2.vm.hostname = "n2"
33n2.vm.network "private_network", ip: "172.20.20.11"
34end 35 endView Code

该文件内容是consul官方推荐的demo。这一块儿内容可以根据实际情况去修改。(我将节点的IP自己指定了一下,尽量不要与自己本机的IP一样,否则可能会影响一些功能),以下是我的配置。


1 # -*- mode: ruby -*-
2 # vi: set ft=ruby :
3 $script = < 9 wget https://releases.hashicorp.com/consul/0.6.1/consul_0.6.1_linux_amd64.zip -O consul.zip 10 echo Installing Consul... 11 unzip consul.zip 12 sudo chmod +x consul 13 sudo mv consul /usr/bin/consul 14 sudo mkdir /etc/consul.d 15 sudo chmod a+w /etc/consul.d 16 SCRIPT 17
18 # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
19 VAGRANTFILE_API_VERSION = "2"
20
21 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
22 config.vm.box = "debian/wheezy64"
23
24 config.vm.provision "shell", inline: $script 25
26 config.vm.define "n110" do |n1|
27n1.vm.hostname = "n110"
28n1.vm.network "private_network", ip: "192.168.21.110"
29end 30
31 config.vm.define "n111" do |n2|
32n2.vm.hostname = "n111"
33n2.vm.network "private_network", ip: "192.168.21.111"
34end 35 endView Code

只是修改了节点位置,其实上边的script根本没让他去执行,可以去掉。


1.3.3、启动



说明:当看到日志输出到



就可以"ctrl+c"退出了(可能有时候需要"ctrl+c"两次),否则会将本机~/下的内容同步到n110这个节点,可能n110这个节点的空间会不够,导致后期工作无法进行。


这时候一个节点启动起来了,但是第二个没起来,需要再执行上边的操作一次。


最后,第三次执行启动命令。



这样就好了。

之后针对n110和n111两个节点分别安装软件。


2、安装软件



进入/tmp/,下载consul软件。



之后解压(前提是"unzip"命令已安装,如果没安装,执行



解压之后出现一个二进制文件"consul",如下:



之后将这个二进制文件移动或拷贝到/usr/bin下



说明:以上步骤分别针对针对n110和n111两个节点执行一次。

3、n110以server模式启动服务



关于启动命令和启动参数查看附1 consul常用命令+常用选项

4、n111以client模式启动服务


5、join


分别启动以上两个服务后,发现其实n110和n111两个彼此谁都不知道谁(可以通过切换屏幕后,使用来验证),此时必须其中一个节点join到另一个节点,这时候才能彼此组成集群。



说明:以上命令将n110节点加入到n111所在的集群(反过来去join也是没问题的),之后通过来看n110和n111时,彼此都是一个集群的两个member了。


注意:假设一个集群有2个节点(n1,n2),这时候有一个节点n3想加入集群,不需要join两遍,只需要join n1或n2就好。这样的话,集群之间通过gossip协议彼此沟通,n3就加入集群了。

6、创建服务并访问


这个是我后来写的,所以节点名字变了。



分别在两个节点上边创建一个服务,创建过程参照:第三章 consul服务注册与服务查询


服务访问:


采用DNS访问:


在client-111和server-110下均可以操作,命令如下:



命令:dig @127.0.0.1 -p 8600 server-110.node.zjgdc1.consul


格式:dig @127.0.0.1 -p 8600 节点名称.node.数据中心名称.consul

7、节点离开集群


"ctrl+c"

补:以上的join是手工join的,还有一种节点加入集群后自动join到集群中去,查看:


https://www.consul.io/intro/getting-started/join.html

参考:


https://www.consul.io/intro/getting-started/join.html


http://www.jianshu.com/p/d483db36ec9a


https://liuzhichao.com/p/1940.html

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台