docker搭建consul叢集
說明
- docker版本:18.06.1-ce
- consul 版本:v1.2.3
- 系統:ubuntu18
本文將介紹在一臺機器上搭建三個server節點 1個Client節點的consul叢集。
docker安裝
1.解除安裝老版本
sudo apt-get remove docker \
docker-engine \
docker.io
2 . 新增下載源:
sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
3.為了確認所下載軟體包的合法性,需要新增軟體源的 GPG 金鑰。
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4.ubuntu 可使用指令碼安裝
wget -qO- https://get.docker.com/ | sh
成功會提示如下:
If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker runoob Remember that you will have to log out and back in for this to take effect!
5.建立 docker 使用者組
預設情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 使用者和 docker 組的使用者才可以訪問 Docker 引擎的 Unix socket。出於安全考慮,一般 Linux 系統上不會直接使用 root 使用者。因此,更好地做法是將需要使用 docker 的使用者加入 docker 使用者組。
建立 docker 組 我本機安裝完後已經自動建立:
將當前使用者加入 docker 組:
$ sudo usermod -aG docker $USER
退出當前終端並重新登入,進行如下測試。
6.配置國內image 下載源 vi /etc/docker/daemon.json 新增如下內容:
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
注意,一定要保證該檔案符合 json 規範,否則 Docker 將不能啟動。
之後重新啟動服務。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
注意:如果您之前檢視舊教程,修改了 docker.service 檔案內容,請去掉您新增的內容(--registry-mirror=https://registry.docker-cn.com),這裡不再贅述。
docker consul 映象下載
執行下面命令下載映象 sudo docker pull consul
下載完成後可以通過下面命令檢視
sudo docker image ls
consul 叢集搭建
因為我們需要搭建3個server節點 和1個client節點,所以我們先需要配置下4個docker容器節點的網路。
配置docker 網路
因為docker 預設的 docker0 虛擬網絡卡是不支援直接設定靜態ip的。所以我們先建立一個自己的虛擬網路。
sudo docker network create --subnet=172.18.0.0/24 staticnet
執行完可以通過 下面了命令檢視
sudo docker network
PS:
私有網路ip選取小知識:
這三個地址段分別位於A、B、C三類地址內:
A類地址:10.0.0.0--10.255.255.255
B類地址:172.16.0.0--172.31.255.255
C類地址:192.168.0.0--192.168.255.255
啟動三個 server節點
我們將要建立的三個server節點命名 為 s1,s2, s3。
下面先建立好 配置檔案,我在 /opt/config/consul/consul_server_config 目錄新增三個配置檔案。 basic_config_1.json basic_config_2.json basic_config_3.json 其中basic_config_1.json 的內容如下:
{
"datacenter": "dc1",
"log_level": "INFO",
"node_name": "s_1",
"server": true,
"bootstrap_expect": 2,
"bind_addr": "0.0.0.0",
"client_addr": "0.0.0.0",
"ui": true,
"ports": {
"dns": 8600,
"http": 8500,
"https": -1,
"server": 8300,
"serf_lan": 8301,
"serf_wan": 8302
},
"rejoin_after_leave": true,
"retry_join": [
"172.18.0.2",
"172.18.0.3",
"172.18.0.4"
],
"retry_interval": "30s",
"reconnect_timeout": "72h"
}
另外兩個配置基本一樣只用更改 node_name 為 s_2 和 s_3 即可。
依次執行啟動命令如下,比如 s1節點 我執行:
sudo docker run -d --name consul_s1 --net staticnet --ip 172.18.0.2 -v /opt/config/consul/consul_server_config/basic_config_1.json:/consul/config/basic_config_1.json consul agent -config-dir /consul/config
s2 和s3 只用改為 上面 --ip 和-v 配置即可。
啟動完成後 可以,通過 ui控制檯看到節點資訊。
啟動三個 client節點
將客戶端節點命名為c1,配置如下:
{
"datacenter": "dc1",
"log_level": "INFO",
"node_name": "c1",
"server": false,
"bind_addr": "0.0.0.0",
"client_addr": "0.0.0.0",
"ui": false,
"ports": {
"dns": 8600,
"http": 8500,
"https": -1,
"server": 8300,
"serf_lan": 8301,
"serf_wan": 8302
},
"rejoin_after_leave": true,
"retry_join": [
"172.18.0.2",
"172.18.0.3",
"172.18.0.4"
],
"retry_interval": "30s",
"reconnect_timeout": "72h"
}
啟動命令:
sudo docker run -d --name consul_c1 --net staticnet --ip 172.18.0.5 -v /opt/config/consul/consul_client_config/basic_config_1.json:/consul/config/basic_config.json consul agent -config-dir /consul/config
到此,一個基於docker的叢集 就搭建完成。
#參考文章