第四章 consul cluster


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 = <<SCRIPT
 4 echo Installing dependencies...
 5 sudo apt-get update
 6 sudo apt-get install -y unzip curl
 7 echo Fetching Consul...
 8 cd /tmp/
 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|
27       n1.vm.hostname = "n1"
28       n1.vm.network "private_network", ip: "172.20.20.10"
29   end
30 
31   config.vm.define "n2" do |n2|
32       n2.vm.hostname = "n2"
33       n2.vm.network "private_network", ip: "172.20.20.11"
34   end
35 end
View Code

該文件內容是consul官方推薦的demo。這一塊兒內容可以根據實際情況去修改。(我將節點的IP自己指定了一下,盡量不要與自己本機的IP一樣,否則可能會影響一些功能),以下是我的配置。

 1 # -*- mode: ruby -*-
 2 # vi: set ft=ruby :
 3 $script = <<SCRIPT
 4 echo Installing dependencies...
 5 sudo apt-get update
 6 sudo apt-get install -y unzip curl
 7 echo Fetching Consul...
 8 cd /tmp/
 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|
27       n1.vm.hostname = "n110"
28       n1.vm.network "private_network", ip: "192.168.21.110"
29   end
30 
31   config.vm.define "n111" do |n2|
32       n2.vm.hostname = "n111"
33       n2.vm.network "private_network", ip: "192.168.21.111"
34   end
35 end
View 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM