- 上傳文件consul_1.4.0_linux_amd64.zip到/opt下
- Unzip consul_1.4.0_linux_amd64.zip #後出現一個文件consul
- sudo chown root:root consul #如果沒有root權限,給與
- sudo mv consul /usr/local/bin/
- consul –version #檢查是否成功
- consul -autocomplete-install #設置子命令自動安裝
- complete -C /usr/local/bin/consul consul
- 創建非特權用戶操作consl
sudo useradd --system --home /etc/consul.d --shell /bin/false consul
sudo mkdir --parents /opt/consul
sudo chown --recursive consul:consul /opt/consul
- 配置
sudo touch /etc/systemd/system/consul.service
#在consul.service上創建consul服務
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
爲該[Unit]節設置以下參數:
- Description - 描述領事服務的自由格式字符串
- Documentation - 鏈接到領事文檔
- Requires - 配置對網絡服務的需求依賴性
- After - 在領事服務之前配置對正在啓動的網絡服務的排序依賴性
- ConditionFileNotEmpty - 在啓動consul之前檢查非零大小的配置文件
爲該[Service]節設置以下參數:
- User,Group - 作爲領事用戶運行領事
- ExecStart- 使用agent參數和配置文件的路徑 開始consul
- ExecReload - 向consul發送重載信號以觸發領事中的配置重新加載
- KillMode - 將領事視爲一個過程
- Restart - 重新啓動consul,除非它返回一個乾淨的退出代碼
- LimitNOFILE - 爲文件描述符設置增加的限制
爲該[Install]節設置以下參數:
- WantedBy - 創建由多用戶運行級別啓動的consul的弱依賴性
- 配置consul服務器
創建配置文件
sudo mkdir --parents /etc/consul.d
sudo touch /etc/consul.d/consul.hcl
sudo chown --recursive consul:consul /etc/consul.d
sudo chmod 640 /etc/consul.d/consul.hcl
vim / etc/consul.d/consul.hcl
#用於部署Consul集羣的數據中心的標識符
datacenter = "dc1"
data_dir = "/opt/consul"
#指定用於加密Consul網絡流量的密鑰
encrypt = "Luj2FZWwlt8475wD1WtwUQ=="
- 集羣自動加入
將retry_join參數添加到consul.hc
l
配置文件中:
Vim /etc/consul.d/consul.hcl
retry_join = ["172.16.0.11"]
- 性能參數配置
raft_multiplier - Consul服務器用於縮放關鍵Raft時序參數的整數乘數。將此值設置爲1將將Raft配置爲其最高性能模式,相當於0.7之前的Consul的默認時間,建議用於生產Consul服務器。
Vim /etc/consul.d/consul.hcl
performance {
raft_multiplier = 1
}
- 可配置監控遙測配置參數
- 配置consul server的數量
sudo touch /etc/consul.d/server.hcl
sudo chmod 640 /etc/consul.d/server.hcl
vim /etc/consul.d/server.hcl
#此標誌用於控制代理是處於服務器模式還是客戶端模式
server = true
#提供數據中心中預期的服務器數。不應提供此值,或者該值必須與羣集中的其他服務器一致。
bootstrap_expect = 3
- 制定機器可啓動consul UI/
vim /etc/consul.d/server.hcl
#在選擇某一臺server上啓動
ui=true
- 啓動consul
sudo systemctl enable consul
sudo systemctl start consul
sudo systemctl status consul
每臺機器都一樣的操作即可,再依次在每臺機器上選擇加入主機集羣
consul join 主機
首先在主機上172.20.10.1 (啓動的是consul和consul_ui)
consul agent -ui-dir /usr/local/consul_ui/ -server -bootstrap-expect 3 -data-dir /usr/local/consul/ -bind=172.20.10.1 -node=consul_01 -client 0.0.0.0 &(&是後臺啓動,這樣就不用再起shell)
然後在另外一臺172.20.10.2 (啓動的是consul)
consul agent -server -bootstrap-expect 3 -data-dir /usr/local/consul/ -bind=172.20.10.2 -node=consul_02 &
最後一臺一樣的操作172.20.10.3 (啓動的是consul)
consul agent -server -bootstrap-expect 3 -data-dir /usr/local/consul/ -bind=172.20.10.3 -node=consul_03 &
加入集羣完成
在 172.20.10.1 中 : consul join 172.20.10.2 172.20.10.3
問題:
啓動之後通過本機訪問失敗,主要原因是由於服務器的防火牆策略擋住了8500端口
firewall-cmd --zone=public --add-port=8500/tcp --permanent
systemctl stop firewalld.service
systemctl start firewalld.service
以上操作步驟來自官網
集羣搭建參考:https://blog.csdn.net/u010046908/article/details/61916389