1. 程式人生 > >docker搭建consul叢集

docker搭建consul叢集

說明

  1. docker版本:18.06.1-ce
  2. consul 版本:v1.2.3
  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的叢集 就搭建完成。

#參考文章