搭建SprinfCloud-Consul報錯解決方案
搭建步驟
1、解壓
unzip -o -d /usr/springcloud/consul consul_1.6.0_linux_amd64.zip
2、在consul目錄下創建conf、data/consulData文件夾
3、把basic.json文件放到conf目錄。
此處貼上basic.json文件內容
{
"ports": {
"http": 8900,
"dns": 8601,
"grpc": 8401,
"serf_lan": 8311,
"serf_wan": 8312,
"server": 8310
}
}
4、開啓端口:及其它相關端口
firewall-cmd --zone=public --add-port=8900/tcp --permanent
報錯過程
在這步的時候遇到問題
FirewallD is not running
對於此問題的解決方法:
1)查看防火牆狀態
指令:systemctl status firewalld
執行結果:
?.firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
由此可見,防火牆當前是dead狀態,即防火牆未開啓
2)通過systemctl start firewalld開啓防火牆,沒有任何提示即開啓成功。
3)再次通過systemctl status firewalld查看firewalld狀態
執行結果:
?.firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2019-11-22 09:51:57 CST; 8s ago
Docs: man:firewalld(1)
Main PID: 3779 (firewalld)
CGroup: /system.slice/firewalld.service
?..3779 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Nov 22 09:51:56 VM_0_8_centos systemd[1]: Starting firewalld - dynamic firewall daemon…
Nov 22 09:51:57 VM_0_8_centos systemd[1]: Started firewalld - dynamic firewall daemon.
顯示防火牆已開啓
4)再次執行當前指令,顯示success表示執行成功。
5、重載防火牆:firewall-cmd --reload
6、啓動consul:
./consul agent -dev -ui -node=node1 -client 0.0.0.0 -bind=XXX.XX.XX.XXX -config-dir /usr/springcloud/consul/conf/ -data-dir /usr/springcloud/consul/data/consulData/
報錯過程
在執行第6步的時候出現如下問題:
Error starting agent: Failed to start Consul server: Failed to start RPC layer: listen tcp XX.XXX.XXX.XXX:XXXX: bind: cannot assign requested address
2019/11/21 11:43:16 [INFO] agent: Exit code: 1
爲解決此問題作出的嘗試
1、查看端口狀態
#ssh XX.XXX.XXX.XXX -p XXXX
返回如下:
ssh: connect to host XX.XXX.XXX.XXX port XXXX: No route to host
2、通過搜索No route to host問題,去/etc/hosts配置了一下hosts文件並重啓了網絡(然而沒卵用)
#vim /etc/hosts
#service network restart
Restarting net work (via systemctl): [ OK ]
3、通過搜索下一個回答,進行如下嘗試
答案告訴我,
出現No route to host 的時候,有如下幾種可能:
1、對方的域名確實不通(然而我發現直接ping域名能通)
2、本機自己開了防火牆
3、本機的etc/hosts 裏面沒有配置本機的機器名和ip (可能性最大)
於是關閉防火牆
我配置了本機的機器名和ip,同樣沒卵用
我想起來了,本機的網絡ip不是靜態的,
使用ifconfig查看ip地址確實不是我配的那個本機ip
那麼
我要不要配一個靜態ip呢?
嘗試配了一個靜態ip,然後雲服務器就。。連。不。上。了。。。
重裝了系統,接着搞
這次進行第6步的時候綁定了內網地址(就是ifcfg的時候看到的地址)
這一次運行成功了,輸出如上
但是呢,發生了一個問題:由於是直接跑的指令,所以我要執行下一條指令時Ctrl+c退出時,consul就停了。
如上問題的解決方法是:在運行consul的指令後面加上&符,將指令轉爲後臺執行
7、瀏覽器登陸:http://XXX.XX.XX.XXX:8900,即安裝成功
當我配置成內網的時候,我輸入內網ip和外網ip訪問發現並不能訪問
向上級彙報之後,上級登陸管理員賬號,將雲服務器的相應端口號的訪問權限打開了就好了
8、配置系統變量
指令:vim /etc/profile
編輯系統變量文件,配置如下內容
export CONSUL_HOME=consul目錄
export PATH=$PATH:CONSUL_HOME
配置完成之後使用環境變量配置生效指令
指令:source /etc/profile
待配置文件生效之後,可以查看安裝的consul版本號等信息
指令:consul --version
輸出:
Consul v1.6.0
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
9、配置開機自啓動
1)編輯start.sh
vim /consul目錄地址/start.sh
添加如下:
#!/bin/bash
/usr/springcloud/consul/consul agent -dev -ui -node=node1 -client 0.0.0.0 -bind=內網ip -config-dir /consul目錄地址/conf/ -data-dir /consul目錄地址/data/consulData/
2)給start.sh 授權
chmod -R 777 /consul目錄地址/start.sh
3)編輯文件/lib/systemd/system/consul.service
vim /lib/systemd/system/consul.service
添加如下:
[Unit]
Description=consul
After=network.target
[Service]
ExecStart=/consul目錄地址/start.sh
KillSignal=SIGTERM
[Install]
WantedBy=multi-user.target
10、執行命令重新加載/運行
重新加載
systemctl daemon-reload
開機運行
systemctl enable consul
運行
systemctl start consul