1、vagrant 為了模擬集群效果,使用vagrant。 1.1、首先下載vagrant https://www.vagrantup.com/downloads.html 說明:瀏覽器下載可能比較慢,可以通過迅雷下載。 1.2、下載之後,安裝vagrant mac中下一步到底就可以。 說明:雖然v ...
1、vagrant
為了模擬集群效果,使用vagrant。
1.1、首先下載vagrant
https://www.vagrantup.com/downloads.html
說明:瀏覽器下載可能比較慢,可以通過迅雷下載。
1.2、下載之後,安裝vagrant
mac中下一步到底就可以。
說明:雖然vagrant需要依賴於virtualbox,但是我們不需要事先安裝,因為在安裝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 endView 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 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模式啟動服務
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、節點離開集群
"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