docker搭建consul集群

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/taotoxht/article/details/82823816

说明

  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控制台看到节点信息。

http://172.18.0.2:8500/ui/dc1/services/consul 截图如下:

在这里插入图片描述

启动三个 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的集群 就搭建完成。

#参考文章

  1. https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html
  2. http://www.runoob.com/docker/ubuntu-docker-install.html
  3. https://my.oschina.net/snownorthland/blog/834108
  4. https://hub.docker.com/_/consul/

猜你喜欢

转载自blog.csdn.net/taotoxht/article/details/82823816